diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index d05129234..1329fa83e 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -6,7 +6,7 @@ steps: env: NODE_VERSION: "{{ matrix.nodejs }}" TEST_SUITE: "{{ matrix.suite }}" - STACK_VERSION: 8.8.0-SNAPSHOT + STACK_VERSION: 8.10.3-SNAPSHOT matrix: setup: suite: diff --git a/.ci/Dockerfile b/.ci/Dockerfile new file mode 100644 index 000000000..1f871d9f2 --- /dev/null +++ b/.ci/Dockerfile @@ -0,0 +1,30 @@ +ARG NODE_JS_VERSION=${NODE_JS_VERSION:-18} +FROM node:${NODE_JS_VERSION} + +ARG BUILDER_UID=1000 +ARG BUILDER_GID=1000 +ENV BUILDER_USER elastic +ENV BUILDER_GROUP elastic + +# install zip util +RUN apt-get clean -y && \ + apt-get update -y && \ + apt-get install -y zip + +# Set user permissions and directory +RUN (id -g ${BUILDER_GID} || groupadd --system -g ${BUILDER_GID} ${BUILDER_GROUP}) \ + && (id -u ${BUILDER_UID} || useradd --system --shell /bin/bash -u ${BUILDER_UID} -g ${BUILDER_GID} -m elastic) \ + && mkdir -p /usr/src/elasticsearch-js \ + && chown -R ${BUILDER_UID}:${BUILDER_GID} /usr/src/ + +WORKDIR /usr/src/elasticsearch-js + +# run remainder of commands as non-root user +USER ${BUILDER_UID}:${BUILDER_GID} + +# install dependencies +COPY package.json . +RUN npm install --production=false + +# copy project files +COPY . . diff --git a/.ci/make.sh b/.ci/make.sh index 777d947eb..c3d9f5b4f 100755 --- a/.ci/make.sh +++ b/.ci/make.sh @@ -131,7 +131,7 @@ esac echo -e "\033[34;1mINFO: building $product container\033[0m" docker build \ - --file .buildkite/Dockerfile \ + --file .ci/Dockerfile \ --tag "$product" \ --build-arg NODE_JS_VERSION="$NODE_JS_VERSION" \ --build-arg "BUILDER_UID=$(id -u)" \ @@ -144,19 +144,35 @@ docker build \ echo -e "\033[34;1mINFO: running $product container\033[0m" -docker run \ - --volume "$repo:/usr/src/elasticsearch-js" \ - --volume /usr/src/elasticsearch-js/node_modules \ - -u "$(id -u):$(id -g)" \ - --env "WORKFLOW=$WORKFLOW" \ - --name make-elasticsearch-js \ - --rm \ - $product \ - /bin/bash -c "cd /usr/src && \ - git clone https://$CLIENTS_GITHUB_TOKEN@github.com/elastic/elastic-client-generator-js.git && \ - mkdir -p /usr/src/elastic-client-generator-js/output && \ - cd /usr/src/elasticsearch-js && \ - node .ci/make.mjs --task $TASK ${TASK_ARGS[*]}" +if [[ -z "${BUILDKITE+x}" ]] && [[ -z "${CI+x}" ]] && [[ -z "${GITHUB_ACTIONS+x}" ]]; then + echo -e "\033[34;1mINFO: Running in local mode" + docker run \ + -u "$(id -u):$(id -g)" \ + --volume "$repo:/usr/src/elasticsearch-js" \ + --volume /usr/src/elasticsearch-js/node_modules \ + --volume "$(realpath $repo/../elastic-client-generator-js):/usr/src/elastic-client-generator-js" \ + --env "WORKFLOW=$WORKFLOW" \ + --name make-elasticsearch-js \ + --rm \ + $product \ + /bin/bash -c "mkdir -p /usr/src/elastic-client-generator-js/output && \ + node .ci/make.mjs --task $TASK ${TASK_ARGS[*]}" +else + echo -e "\033[34;1mINFO: Running in CI mode" + docker run \ + --volume "$repo:/usr/src/elasticsearch-js" \ + --volume /usr/src/elasticsearch-js/node_modules \ + -u "$(id -u):$(id -g)" \ + --env "WORKFLOW=$WORKFLOW" \ + --name make-elasticsearch-js \ + --rm \ + $product \ + /bin/bash -c "cd /usr/src && \ + git clone https://$CLIENTS_GITHUB_TOKEN@github.com/elastic/elastic-client-generator-js.git && \ + mkdir -p /usr/src/elastic-client-generator-js/output && \ + cd /usr/src/elasticsearch-js && \ + node .ci/make.mjs --task $TASK ${TASK_ARGS[*]}" +fi # ------------------------------------------------------- # # Post Command tasks & checks