From 471c6d196dece81f06382147ce566cefd9b5e47b Mon Sep 17 00:00:00 2001 From: Josh Mock Date: Thu, 17 Aug 2023 16:13:06 -0500 Subject: [PATCH] Backport #1944 to 8.8 (#1975) --- .ci/Dockerfile | 25 ++++++++++++++++++------- .ci/make.sh | 43 +++++++++++++++++++++++++++---------------- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index c54dd761a..1f10aed8c 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -1,15 +1,26 @@ ARG NODE_JS_VERSION=18 FROM node:${NODE_JS_VERSION} -# Create app directory -WORKDIR /usr/src/app +ARG BUILDER_UID=1000 +ARG BUILDER_GID=1000 +ENV BUILDER_USER elastic +ENV BUILDER_GROUP elastic -RUN apt-get clean -y -RUN apt-get update -y -RUN apt-get install -y zip +# install zip util +RUN apt-get clean -y && \ + apt-get update -y && \ + apt-get install -y zip + +# Set user permissions and directory +RUN groupadd --system -g ${BUILDER_GID} ${BUILDER_GROUP} \ + && useradd --system --shell /bin/bash -u ${BUILDER_UID} -g ${BUILDER_GROUP} -m elastic 1>/dev/null 2>/dev/null \ + && mkdir -p /usr/src/elasticsearch-js \ + && chown -R ${BUILDER_USER}:${BUILDER_GROUP} /usr/src/ +WORKDIR /usr/src/elasticsearch-js +USER ${BUILDER_USER}:${BUILDER_GROUP} # Install app dependencies -COPY package*.json ./ +COPY --chown=$BUILDER_USER:$BUILDER_GROUP package*.json ./ RUN npm install -COPY . . +COPY --chown=$BUILDER_USER:$BUILDER_GROUP . . diff --git a/.ci/make.sh b/.ci/make.sh index 70c6f71e9..adf79ef23 100755 --- a/.ci/make.sh +++ b/.ci/make.sh @@ -12,7 +12,7 @@ # assemble : build client artifacts with version # bump : bump client internals to version # bumpmatrix : bump stack version in test matrix to version -# codegen : generate endpoints +# codegen : generate endpoints # docsgen : generate documentation # examplegen : generate the doc examples # clean : clean workspace @@ -24,7 +24,6 @@ # ------------------------------------------------------- # script_path=$(dirname "$(realpath -s "$0")") repo=$(realpath "$script_path/../") -generator=$(realpath "$script_path/../../elastic-client-generator-js") # shellcheck disable=SC1090 CMD=$1 @@ -38,7 +37,6 @@ product="elastic/elasticsearch-js" output_folder=".ci/output" codegen_folder=".ci/output" OUTPUT_DIR="$repo/${output_folder}" -# REPO_BINDING="${OUTPUT_DIR}:/sln/${output_folder}" NODE_JS_VERSION=18 WORKFLOW=${WORKFLOW-staging} mkdir -p "$OUTPUT_DIR" @@ -59,18 +57,29 @@ case $CMD in echo -e "\033[31;1mTARGET: assemble -> missing version parameter\033[0m" exit 1 fi - echo -e "\033[36;1mTARGET: assemble artefact $VERSION\033[0m" + echo -e "\033[36;1mTARGET: assemble artifact $VERSION\033[0m" TASK=release TASK_ARGS=("$VERSION" "$output_folder") ;; codegen) - if [ -v $VERSION ]; then - echo -e "\033[31;1mTARGET: codegen -> missing version parameter\033[0m" - exit 1 + if [ -v "$VERSION" ] || [[ -z "$VERSION" ]]; then + # fall back to branch name or `main` if no VERSION is set + branch_name=$(git rev-parse --abbrev-ref HEAD) + if [[ "$branch_name" =~ ^\d+\.\d+ ]]; then + echo -e "\033[36;1mTARGET: codegen -> No VERSION found, using branch name: \`$VERSION\`\033[0m" + VERSION="$branch_name" + else + echo -e "\033[36;1mTARGET: codegen -> No VERSION found, using \`main\`\033[0m" + VERSION="main" + fi fi - echo -e "\033[36;1mTARGET: codegen API v$VERSION\033[0m" + if [ "$VERSION" = 'main' ]; then + echo -e "\033[36;1mTARGET: codegen API $VERSION\033[0m" + else + echo -e "\033[36;1mTARGET: codegen API v$VERSION\033[0m" + fi + TASK=codegen - # VERSION is BRANCH here for now TASK_ARGS=("$VERSION") ;; docsgen) @@ -80,13 +89,11 @@ case $CMD in fi echo -e "\033[36;1mTARGET: generate docs for $VERSION\033[0m" TASK=codegen - # VERSION is BRANCH here for now TASK_ARGS=("$VERSION" "$codegen_folder") ;; examplesgen) echo -e "\033[36;1mTARGET: generate examples\033[0m" TASK=codegen - # VERSION is BRANCH here for now TASK_ARGS=("$VERSION" "$codegen_folder") ;; bump) @@ -96,7 +103,6 @@ case $CMD in fi echo -e "\033[36;1mTARGET: bump to version $VERSION\033[0m" TASK=bump - # VERSION is BRANCH here for now TASK_ARGS=("$VERSION") ;; bumpmatrix) @@ -128,6 +134,8 @@ docker build \ --file .ci/Dockerfile \ --tag "$product" \ --build-arg NODE_JS_VERSION="$NODE_JS_VERSION" \ + --build-arg "BUILDER_UID=$(id -u)" \ + --build-arg "BUILDER_GID=$(id -g)" \ . # ------------------------------------------------------- # @@ -137,15 +145,18 @@ docker build \ echo -e "\033[34;1mINFO: running $product container\033[0m" docker run \ - --volume "$repo:/usr/src/app" \ - --volume "$generator:/usr/src/elastic-client-generator-js" \ - --volume /usr/src/app/node_modules \ + --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 \ - node .ci/make.mjs --task $TASK "${TASK_ARGS[@]}" + /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[*]}" # ------------------------------------------------------- # # Post Command tasks & checks