From b596b00c76c9f95215be852d5ddddfe079e6896d Mon Sep 17 00:00:00 2001 From: Federico Gustavo Galland <99492720+f-galland@users.noreply.github.com> Date: Wed, 10 Jan 2024 12:23:13 -0300 Subject: [PATCH] Build scripts and GH workflows artifacts naming fix (#112) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Build scripts and GH workflows artifacts naming fix * Add git to dev docker image * Fixing jobs' inputs and outputs * remove name input from r_assemble.yml * Setting qualifier to 1 when not specified * Add revision flag to scripts and workflow * Fix copying of packages at assemble.sh * Use suffix variable instead of architecture * Fix suffix name in assemble.sh * Mix solutions to comply with the package naming convention * Remove unused code * Use correct name for assembled package Remove code no longer needed * Remove outdated comments --------- Co-authored-by: Álex Ruiz --- .github/workflows/build.yml | 5 +---- .github/workflows/r_assemble.yml | 6 +----- .github/workflows/r_build.yml | 10 +++++++--- docker/images/wi-dev.Dockerfile | 4 +++- scripts/assemble.sh | 20 +++++++++++++------- scripts/build.sh | 23 ++++++++++++++++++++--- 6 files changed, 45 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4b286884541c7..07531eb598a94 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,10 +36,8 @@ jobs: with: architecture: ${{ matrix.architecture }} distribution: ${{ matrix.distribution }} + revision: ${{ inputs.revision }} name: wazuh-indexer-min_${{ needs.version.outputs.version }}-${{ inputs.revision }}-${{ matrix.architecture }}_${{ github.sha }}.${{ matrix.distribution }} - # wazuh-indexer-min_4.8.0-rc1_x64_ff98475f.deb - # TODO arm64 != amd64 (deb), x64 != x86_64 (rpm) - # TODO use short SHA https://stackoverflow.com/a/59819441/13918537 assemble: needs: [version, build] @@ -57,4 +55,3 @@ jobs: architecture: ${{ matrix.architecture }} distribution: ${{ matrix.distribution }} min: wazuh-indexer-min_${{ needs.version.outputs.version }}-${{ inputs.revision }}-${{ matrix.architecture }}_${{ github.sha }}.${{ matrix.distribution }} - name: wazuh-indexer_${{ needs.version.outputs.version }}-${{ inputs.revision }}-${{ matrix.architecture }}_${{ github.sha }}.${{ matrix.distribution }} diff --git a/.github/workflows/r_assemble.yml b/.github/workflows/r_assemble.yml index 6414729a1a635..82bfe9d0fe5a8 100644 --- a/.github/workflows/r_assemble.yml +++ b/.github/workflows/r_assemble.yml @@ -19,10 +19,6 @@ on: description: The name of the package to download. required: true type: string - name: - description: The name of the package to upload. - required: true - type: string jobs: r_assemble: @@ -57,6 +53,6 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: ${{ inputs.name }} + name: ${{ steps.get_name.outputs.name }} path: artifacts/dist/${{ steps.get_name.outputs.name }} if-no-files-found: error diff --git a/.github/workflows/r_build.yml b/.github/workflows/r_build.yml index 50ddb9a75ae76..104c0a7da22c1 100644 --- a/.github/workflows/r_build.yml +++ b/.github/workflows/r_build.yml @@ -15,7 +15,11 @@ on: default: "x64" required: false type: string + revision: + type: string name: + description: The name of the package to upload. + required: true type: string jobs: @@ -37,13 +41,13 @@ jobs: - name: Run `build.sh` run: | - bash scripts/build.sh -v ${{ vars.OPENSEARCH_VERSION }} -s false -p linux -a ${{ inputs.architecture }} -d ${{ inputs.distribution }} + bash scripts/build.sh -v ${{ vars.OPENSEARCH_VERSION }} -s false -p linux -a ${{ inputs.architecture }} -d ${{ inputs.distribution }} -r ${{ inputs.revision }} - # The package's name is stored in artifacts/artifact_name.txt. + # The package's name is stored in artifacts/artifact_min_name.txt. - name: Set package name id: get_name run: | - echo "name=$(cat artifacts/artifact_name.txt)" >> $GITHUB_OUTPUT + echo "name=$(cat artifacts/artifact_min_name.txt)" >> $GITHUB_OUTPUT - name: Upload artifact uses: actions/upload-artifact@v4 diff --git a/docker/images/wi-dev.Dockerfile b/docker/images/wi-dev.Dockerfile index 7e7f16fbba42c..215b956d14a82 100644 --- a/docker/images/wi-dev.Dockerfile +++ b/docker/images/wi-dev.Dockerfile @@ -6,11 +6,13 @@ RUN gradle clean FROM eclipse-temurin:17-jdk-alpine -RUN addgroup -g 1000 wazuh-indexer && \ +RUN apk add git && \ + addgroup -g 1000 wazuh-indexer && \ adduser -u 1000 -G wazuh-indexer -D -h /home/wazuh-indexer wazuh-indexer && \ chmod 0775 /home/wazuh-indexer && \ chown -R 1000:0 /home/wazuh-indexer USER wazuh-indexer COPY --from=builder --chown=1000:0 /home/wazuh-indexer/app /home/wazuh-indexer/app WORKDIR /home/wazuh-indexer/app +RUN git config --global --add safe.directory /home/wazuh-indexer/app EXPOSE 9200 9300 diff --git a/scripts/assemble.sh b/scripts/assemble.sh index fa9205b00f931..67c8842f85226 100755 --- a/scripts/assemble.sh +++ b/scripts/assemble.sh @@ -202,7 +202,7 @@ function clean() { rm -r "${OUTPUT}/tmp" echo "After execution, shell path is $(pwd)" # Store package's name to file. Used by GH Action. - echo "${package_name}" >"${OUTPUT}/artifact_name.txt" + echo "${ARTIFACT_PACKAGE_NAME}" >"${OUTPUT}/artifact_name.txt" } # ==== @@ -228,7 +228,7 @@ function assemble_tar() { cd .. tar -cvf "${archive_name}-${SUFFIX}.${EXT}" "${archive_name}" cd ../../.. - cp "${TMP_DIR}/${archive_name}-${SUFFIX}.${EXT}" "${OUTPUT}/dist/" + cp "${TMP_DIR}/${archive_name}-${SUFFIX}.${EXT}" "${OUTPUT}/dist/$ARTIFACT_PACKAGE_NAME" clean } @@ -272,8 +272,10 @@ function assemble_rpm() { # Move to the root folder, copy the package and clean. cd ../../.. + package_name="wazuh-indexer-${version}-1.${SUFFIX}.${EXT}" - cp "${TMP_DIR}/RPMS/${SUFFIX}/${package_name}" "${OUTPUT}/dist/" + + cp "${TMP_DIR}/RPMS/${SUFFIX}/${package_name}" "${OUTPUT}/dist/$ARTIFACT_PACKAGE_NAME" clean } @@ -319,9 +321,9 @@ function assemble_deb() { # Move to the root folder, copy the package and clean. cd ../../.. - package_name="wazuh-indexer_${version}_${SUFFIX}.${EXT}" + package_name="wazuh-indexer_${version}_${SUFFIX}.${EXT}" # debmake creates the package one level above - cp "${TMP_DIR}/../${package_name}" "${OUTPUT}/dist/" + cp "${TMP_DIR}/../${package_name}" "${OUTPUT}/dist/$ARTIFACT_PACKAGE_NAME" clean } @@ -333,8 +335,12 @@ function main() { parse_args "${@}" echo "Assembling wazuh-indexer for $PLATFORM-$DISTRIBUTION-$ARCHITECTURE" - # wazuh-indexer-min_4.9.0-1-x64_78fcc3db6a5b470294319e48b58c3d715bee39d1.rpm - ARTIFACT_BUILD_NAME=$(ls "${OUTPUT}/dist/" | grep "wazuh-indexer-min.*.$EXT") + + ARTIFACT_BUILD_NAME=$(ls "${OUTPUT}/dist/" | grep "wazuh-indexer-min_.*$SUFFIX.*\.$EXT") + + ARTIFACT_PACKAGE_NAME=${ARTIFACT_BUILD_NAME/min_/} + + # Create temporal directory and copy the min package there for extraction TMP_DIR="${OUTPUT}/tmp/${TARGET}" diff --git a/scripts/build.sh b/scripts/build.sh index 55d9f96c1e838..92e1995e57e04 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -19,11 +19,12 @@ function usage() { echo -e "-p PLATFORM\t[Optional] Platform, default is 'uname -s'." echo -e "-a ARCHITECTURE\t[Optional] Build architecture, default is 'uname -m'." echo -e "-d DISTRIBUTION\t[Optional] Distribution, default is 'tar'." + echo -e "-d REVISION\t[Optional] Package revision, default is '1'." echo -e "-o OUTPUT\t[Optional] Output path, default is 'artifacts'." echo -e "-h help" } -while getopts ":h:v:q:s:o:p:a:d:" arg; do +while getopts ":h:v:q:s:o:p:a:d:r:" arg; do case $arg in h) usage @@ -50,6 +51,9 @@ while getopts ":h:v:q:s:o:p:a:d:" arg; do d) DISTRIBUTION=$OPTARG ;; + r) + REVISION=$OPTARG + ;; :) echo "Error: -${OPTARG} requires an argument" usage @@ -91,6 +95,7 @@ cp -r ./build/local-test-repo/org/opensearch "${OUTPUT}"/maven/org [ -z "$PLATFORM" ] && PLATFORM=$(uname -s | awk '{print tolower($0)}') [ -z "$ARCHITECTURE" ] && ARCHITECTURE=$(uname -m) [ -z "$DISTRIBUTION" ] && DISTRIBUTION="tar" +[ -z "$REVISION" ] && REVISION="1" case $PLATFORM-$DISTRIBUTION-$ARCHITECTURE in linux-tar-x64|darwin-tar-x64) @@ -162,8 +167,20 @@ echo "Building OpenSearch for $PLATFORM-$DISTRIBUTION-$ARCHITECTURE" # Copy artifact to dist folder in bundle build output echo "Copying artifact to ${OUTPUT}/dist" # [[ "$SNAPSHOT" == "true" ]] && IDENTIFIER="-SNAPSHOT" + + ARTIFACT_BUILD_NAME=$(ls "distribution/$TYPE/$TARGET/build/distributions/" | grep "wazuh-indexer-min.*$SUFFIX.$EXT") + +GIT_COMMIT=$(git rev-parse --short HEAD) + +WI_VERSION=$( "$OUTPUT/artifact_name.txt" + +echo "$ARTIFACT_PACKAGE_NAME" > "$OUTPUT/artifact_min_name.txt" + mkdir -p "${OUTPUT}/dist" -cp "distribution/$TYPE/$TARGET/build/distributions/$ARTIFACT_BUILD_NAME" "${OUTPUT}/dist/$ARTIFACT_BUILD_NAME" +cp "distribution/$TYPE/$TARGET/build/distributions/$ARTIFACT_BUILD_NAME" "${OUTPUT}/dist/$ARTIFACT_PACKAGE_NAME"