From dbcafbde17113738dc4f3497d9cec6ad0cfdef5b Mon Sep 17 00:00:00 2001 From: Laith Bahodi Date: Fri, 6 Dec 2024 11:28:29 -0500 Subject: [PATCH 1/8] ci: add ability to upload wasm artefacts based on release hash --- .github/workflows/release-hash.yaml | 55 ++++++++++++++++++++ .github/workflows/reusable-build-upload.yaml | 7 +++ 2 files changed, 62 insertions(+) create mode 100644 .github/workflows/release-hash.yaml diff --git a/.github/workflows/release-hash.yaml b/.github/workflows/release-hash.yaml new file mode 100644 index 00000000..b555cb49 --- /dev/null +++ b/.github/workflows/release-hash.yaml @@ -0,0 +1,55 @@ +# takes the latest commit hash on main and uploads the artefacts to CF storage +name: Release +on: + workflow_dispatch: + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + define-matrix: + runs-on: blacksmith-2vcpu-ubuntu-2204 + + outputs: + releases: ${{ steps.prepare-matrix.outputs.releases }} + + steps: + - name: Prepare JSON output to be a matrix GHA format + id: prepare-matrix + run: | + # -J for json, -d for directories, -L 1 for depth of 1 + export NAMES=$(tree -J -d -L 1 contracts | jq -c '.[0].contents | map(.name)') + echo "releases=$NAMES" >> $GITHUB_OUTPUT + + # Publishes a release in case the release isn't published + build-and-upload: + name: Publish releases + + runs-on: blacksmith-2vcpu-ubuntu-2204 + needs: define-matrix + + strategy: + matrix: + releases: ${{ fromJson(needs.define-matrix.outputs.releases) }} + + uses: ./.github/workflows/reusable-build-upload.yaml + permissions: + id-token: write + contents: read + with: + package-name: "${{ matrix.releases.package_name }}" + package-version: "${{ github.sha }}" + + # CF Bucket related variables + cf-bucket-name: "${{ vars.CF_BUCKET_NAME }}" + + # The root key to be used for accessing the configs. (ex: `test-root-key` puts releases in `test-root-key/*`) + cf-config-bucket-root-key: "${{ vars.CF_BUCKET_ROOT_KEY }}" + + # we just want to upload to CF, do not run a github release + github-release: "false" + + secrets: + github-token: "${{ secrets.PAT_TOKEN }}" + cf-endpoint-url: "${{ secrets.CF_ENDPOINT_URL }}" + cf-bucket-access-key-id: ${{ secrets.CF_BUCKET_ACCESS_KEY_ID }} + cf-bucket-secret-access-key: ${{ secrets.CF_BUCKET_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/reusable-build-upload.yaml b/.github/workflows/reusable-build-upload.yaml index bbc6654d..eb9d5606 100644 --- a/.github/workflows/reusable-build-upload.yaml +++ b/.github/workflows/reusable-build-upload.yaml @@ -33,6 +33,12 @@ on: required: true type: string + github-release: + description: "Whether to upload the build as a github release" + required: false + default: "true" + type: boolean + secrets: github-token: description: "The github token to use to do the tag updates" @@ -176,6 +182,7 @@ jobs: # https://github.com/orgs/community/discussions/26263#discussioncomment-3251069 - name: Update the GitHub Release uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8 + if: ${{ inputs.github-release == 'true' }} with: tag_name: ${{ inputs.package-git-tag }} # This uses the tag from the push files: | From 49c07dd2b6b7a32a20a9bc755340e3b7a64bc3ab Mon Sep 17 00:00:00 2001 From: ahramy Date: Thu, 30 Jan 2025 16:01:37 -0800 Subject: [PATCH 2/8] updated --- .../{release-hash.yaml => pre-release.yaml} | 37 ++++++++++++++----- .github/workflows/reusable-build-upload.yaml | 10 ++--- 2 files changed, 32 insertions(+), 15 deletions(-) rename .github/workflows/{release-hash.yaml => pre-release.yaml} (51%) diff --git a/.github/workflows/release-hash.yaml b/.github/workflows/pre-release.yaml similarity index 51% rename from .github/workflows/release-hash.yaml rename to .github/workflows/pre-release.yaml index b555cb49..a011bd15 100644 --- a/.github/workflows/release-hash.yaml +++ b/.github/workflows/pre-release.yaml @@ -1,5 +1,5 @@ # takes the latest commit hash on main and uploads the artefacts to CF storage -name: Release +name: Pre-release on: workflow_dispatch: @@ -13,31 +13,48 @@ jobs: releases: ${{ steps.prepare-matrix.outputs.releases }} steps: - - name: Prepare JSON output to be a matrix GHA format + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install -y jq + + - name: Get latest commit hash + id: get-commit-hash + run: echo "commit_hash=$(git rev-parse HEAD)" >> "$GITHUB_ENV" + + - name: Prepare JSON output for matrix id: prepare-matrix run: | - # -J for json, -d for directories, -L 1 for depth of 1 - export NAMES=$(tree -J -d -L 1 contracts | jq -c '.[0].contents | map(.name)') - echo "releases=$NAMES" >> $GITHUB_OUTPUT + # Extract package names from the 'contracts' directory and format properly + RELEASES_JSON=$(find contracts -maxdepth 1 -mindepth 1 -type d | sed 's|contracts/||' | jq -R . | jq -s --arg commit "${{ env.commit_hash }}" 'map({package_name: ., version: $commit, tag: .})') + + # Debugging output + echo "Generated releases JSON: $RELEASES_JSON" + + # Properly set output with correct JSON format + echo "releases=$(echo "$RELEASES_JSON" | jq -c)" >> "$GITHUB_OUTPUT" # Publishes a release in case the release isn't published build-and-upload: - name: Publish releases - - runs-on: blacksmith-2vcpu-ubuntu-2204 + name: Build artifacts for ${{ matrix.releases.package_name }}-${{ matrix.releases.version }} needs: define-matrix + # Once a release is done for a package, we iterate on each of these packages and build its corresponding artifacts and upload them strategy: matrix: releases: ${{ fromJson(needs.define-matrix.outputs.releases) }} uses: ./.github/workflows/reusable-build-upload.yaml + permissions: id-token: write contents: read + with: package-name: "${{ matrix.releases.package_name }}" - package-version: "${{ github.sha }}" + package-version: "${{ matrix.releases.version }}" + package-git-tag: "${{ matrix.releases.tag }}" # CF Bucket related variables cf-bucket-name: "${{ vars.CF_BUCKET_NAME }}" @@ -46,7 +63,7 @@ jobs: cf-config-bucket-root-key: "${{ vars.CF_BUCKET_ROOT_KEY }}" # we just want to upload to CF, do not run a github release - github-release: "false" + github-release: false secrets: github-token: "${{ secrets.PAT_TOKEN }}" diff --git a/.github/workflows/reusable-build-upload.yaml b/.github/workflows/reusable-build-upload.yaml index 55bce251..191ba939 100644 --- a/.github/workflows/reusable-build-upload.yaml +++ b/.github/workflows/reusable-build-upload.yaml @@ -36,7 +36,7 @@ on: github-release: description: "Whether to upload the build as a github release" required: false - default: "true" + default: true type: boolean secrets: @@ -69,9 +69,9 @@ jobs: toolchain: 1.81.0 targets: wasm32-unknown-unknown - - name: Build artifacts for ${{ inputs.package-name }}-v${{ inputs.package-version }} + - name: Build artifacts for ${{ inputs.package-name }} run: | - echo "Building wasm for '${{ inputs.package-name }}-v${{ inputs.package-version }}'"; + echo "Building wasm for '${{ inputs.package-name }}'"; cargo install --locked stellar-cli --version 22.2.0 --features opt cargo wasm -p ${{ inputs.package-name }} stellar contract build @@ -81,7 +81,7 @@ jobs: - name: Prepare cross-steps variables run: | export PACKAGE_NAME='${{ inputs.package-name }}' - export PACKAGE_VERSION='v${{ inputs.package-version }}' + export PACKAGE_VERSION=${{ inputs.github-release && format('v{0}', inputs.package-version) || inputs.package-version }} export BASE_ARTIFACTS_DIR="./target/wasm32-unknown-unknown/release" export ARTIFACT_NAME="axelar-cgp-stellar-wasm-${PACKAGE_NAME}-${PACKAGE_VERSION}" @@ -182,7 +182,7 @@ jobs: # https://github.com/orgs/community/discussions/26263#discussioncomment-3251069 - name: Update the GitHub Release uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8 - if: ${{ inputs.github-release == 'true' }} + if: inputs.github-release with: tag_name: ${{ inputs.package-git-tag }} # This uses the tag from the push files: | From 62b2b58b452cd2347af15dea7b70084a68af0a2c Mon Sep 17 00:00:00 2001 From: ahramy Date: Thu, 30 Jan 2025 16:03:48 -0800 Subject: [PATCH 3/8] Update pre-release.yaml --- .github/workflows/pre-release.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/pre-release.yaml b/.github/workflows/pre-release.yaml index a011bd15..7df3f65f 100644 --- a/.github/workflows/pre-release.yaml +++ b/.github/workflows/pre-release.yaml @@ -26,13 +26,8 @@ jobs: - name: Prepare JSON output for matrix id: prepare-matrix run: | - # Extract package names from the 'contracts' directory and format properly RELEASES_JSON=$(find contracts -maxdepth 1 -mindepth 1 -type d | sed 's|contracts/||' | jq -R . | jq -s --arg commit "${{ env.commit_hash }}" 'map({package_name: ., version: $commit, tag: .})') - - # Debugging output echo "Generated releases JSON: $RELEASES_JSON" - - # Properly set output with correct JSON format echo "releases=$(echo "$RELEASES_JSON" | jq -c)" >> "$GITHUB_OUTPUT" # Publishes a release in case the release isn't published From 50db71825ff5782893c73b8dcdd344204d85b11a Mon Sep 17 00:00:00 2001 From: ahramy Date: Thu, 30 Jan 2025 16:04:49 -0800 Subject: [PATCH 4/8] Update pre-release.yaml --- .github/workflows/pre-release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre-release.yaml b/.github/workflows/pre-release.yaml index 7df3f65f..98620c45 100644 --- a/.github/workflows/pre-release.yaml +++ b/.github/workflows/pre-release.yaml @@ -57,7 +57,7 @@ jobs: # The root key to be used for accessing the configs. (ex: `test-root-key` puts releases in `test-root-key/*`) cf-config-bucket-root-key: "${{ vars.CF_BUCKET_ROOT_KEY }}" - # we just want to upload to CF, do not run a github release + # We only want to upload to CF, do not run a github release github-release: false secrets: From 26d65db1758b0bfecfa1911cc3e0b2ed3f85a2b4 Mon Sep 17 00:00:00 2001 From: ahramy Date: Mon, 3 Feb 2025 00:18:09 -0800 Subject: [PATCH 5/8] updated to separate build and upload --- .github/workflows/pre-release.yaml | 54 +++++++-------- .github/workflows/release.yaml | 45 ++++++------ .github/workflows/reusable-build.yaml | 68 +++++++++++++++++++ ...build-upload.yaml => reusable-upload.yaml} | 60 ++++++---------- 4 files changed, 138 insertions(+), 89 deletions(-) create mode 100644 .github/workflows/reusable-build.yaml rename .github/workflows/{reusable-build-upload.yaml => reusable-upload.yaml} (79%) diff --git a/.github/workflows/pre-release.yaml b/.github/workflows/pre-release.yaml index 98620c45..1119dd65 100644 --- a/.github/workflows/pre-release.yaml +++ b/.github/workflows/pre-release.yaml @@ -1,5 +1,5 @@ -# takes the latest commit hash on main and uploads the artefacts to CF storage -name: Pre-release +# Workflow to fetch the latest commit hash on the main branch and upload artifacts to CF storage. +name: Build and upload from main on: workflow_dispatch: @@ -7,61 +7,59 @@ concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: define-matrix: + name: Define Matrix runs-on: blacksmith-2vcpu-ubuntu-2204 - outputs: releases: ${{ steps.prepare-matrix.outputs.releases }} + commit_hash: ${{ steps.get-commit-hash.outputs.hash }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install dependencies - run: sudo apt-get update && sudo apt-get install -y jq + run: sudo apt-get install -y jq - name: Get latest commit hash id: get-commit-hash - run: echo "commit_hash=$(git rev-parse HEAD)" >> "$GITHUB_ENV" + run: echo "hash=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT" - name: Prepare JSON output for matrix id: prepare-matrix run: | - RELEASES_JSON=$(find contracts -maxdepth 1 -mindepth 1 -type d | sed 's|contracts/||' | jq -R . | jq -s --arg commit "${{ env.commit_hash }}" 'map({package_name: ., version: $commit, tag: .})') - echo "Generated releases JSON: $RELEASES_JSON" + RELEASES_JSON=$(find contracts -maxdepth 1 -mindepth 1 -type d | sed 's|contracts/||' | jq -R . | jq -s --arg commit "${{ steps.get-commit-hash.outputs.hash }}" 'map({ + package_name: ., + version: $commit, + package_git_tag: "\(.)_\($commit)" + })') echo "releases=$(echo "$RELEASES_JSON" | jq -c)" >> "$GITHUB_OUTPUT" - # Publishes a release in case the release isn't published - build-and-upload: - name: Build artifacts for ${{ matrix.releases.package_name }}-${{ matrix.releases.version }} + build: needs: define-matrix + uses: ./.github/workflows/reusable-build.yaml + with: + commit-hash: ${{ needs.define-matrix.outputs.commit_hash }} - # Once a release is done for a package, we iterate on each of these packages and build its corresponding artifacts and upload them + upload: + needs: [define-matrix, build] strategy: matrix: releases: ${{ fromJson(needs.define-matrix.outputs.releases) }} - uses: ./.github/workflows/reusable-build-upload.yaml - + uses: ./.github/workflows/reusable-upload.yaml permissions: id-token: write contents: read - with: - package-name: "${{ matrix.releases.package_name }}" - package-version: "${{ matrix.releases.version }}" - package-git-tag: "${{ matrix.releases.tag }}" - - # CF Bucket related variables - cf-bucket-name: "${{ vars.CF_BUCKET_NAME }}" - - # The root key to be used for accessing the configs. (ex: `test-root-key` puts releases in `test-root-key/*`) - cf-config-bucket-root-key: "${{ vars.CF_BUCKET_ROOT_KEY }}" - - # We only want to upload to CF, do not run a github release + package-name: ${{ matrix.releases.package_name }} + package-version: ${{ matrix.releases.version }} + package-git-tag: ${{ matrix.releases.package_git_tag }} + artifact-name: ${{ needs.build.outputs.artifact-name }} + cf-bucket-name: ${{ vars.CF_BUCKET_NAME }} + cf-config-bucket-root-key: ${{ vars.CF_BUCKET_ROOT_KEY }} github-release: false - secrets: - github-token: "${{ secrets.PAT_TOKEN }}" - cf-endpoint-url: "${{ secrets.CF_ENDPOINT_URL }}" + github-token: ${{ secrets.PAT_TOKEN }} + cf-endpoint-url: ${{ secrets.CF_ENDPOINT_URL }} cf-bucket-access-key-id: ${{ secrets.CF_BUCKET_ACCESS_KEY_ID }} cf-bucket-secret-access-key: ${{ secrets.CF_BUCKET_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c1778982..def28a21 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -6,7 +6,7 @@ on: pull_request: branches: - main - - 'releases/**' + - "releases/**" types: [closed] workflow_dispatch: @@ -14,7 +14,6 @@ on: concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: - # Publishes a release in case the release isn't published publish-release: name: Publish releases @@ -24,10 +23,11 @@ jobs: ((github.event.pull_request.merged == true) && contains(github.event.pull_request.labels.*.name, 'release')) - runs-on: blacksmith-8vcpu-ubuntu-2204 + runs-on: blacksmith-2vcpu-ubuntu-2204 outputs: releases: ${{ steps.prepare-matrix.outputs.releases }} + commit_hash: ${{ steps.get-commit-hash.outputs.hash }} steps: - name: Checkout repository @@ -39,6 +39,10 @@ jobs: - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable + - name: Get commit hash + id: get-commit-hash + run: echo "hash=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT" + # Creates git tags and publishes the crates of the new releases - name: Publish release id: publish-release @@ -56,35 +60,32 @@ jobs: run: | echo "releases=$(echo '${{ steps.publish-release.outputs.releases }}' | jq -c '.')" >> $GITHUB_OUTPUT - # Creates other artifacts needed (`wasm` files) - build-and-upload: - name: Build artifacts for ${{ matrix.releases.package_name }}-v${{ matrix.releases.version }} + build: needs: publish-release + uses: ./.github/workflows/reusable-build.yaml + with: + commit-hash: ${{ needs.publish-release.outputs.commit_hash }} - # Once a release is done for a package, we iterate on each of these packages and build its corresponding artifacts and upload them + upload: + needs: [publish-release, build] strategy: matrix: releases: ${{ fromJson(needs.publish-release.outputs.releases) }} - uses: ./.github/workflows/reusable-build-upload.yaml - + uses: ./.github/workflows/reusable-upload.yaml permissions: id-token: write contents: read - with: - package-name: "${{ matrix.releases.package_name }}" - package-version: "${{ matrix.releases.version }}" - package-git-tag: "${{ matrix.releases.tag }}" - - # CF Bucket related variables - cf-bucket-name: "${{ vars.CF_BUCKET_NAME }}" - - # The root key to be used for accessing the configs. (ex: `test-root-key` puts releases in `test-root-key/*`) - cf-config-bucket-root-key: "${{ vars.CF_BUCKET_ROOT_KEY }}" - + package-name: ${{ matrix.releases.package_name }} + package-version: ${{ matrix.releases.version }} + package-git-tag: ${{ matrix.releases.tag }} + artifact-name: ${{ needs.build.outputs.artifact-name }} + cf-bucket-name: ${{ vars.CF_BUCKET_NAME }} + cf-config-bucket-root-key: ${{ vars.CF_BUCKET_ROOT_KEY }} + github-release: true secrets: - github-token: "${{ secrets.PAT_TOKEN }}" - cf-endpoint-url: "${{ secrets.CF_ENDPOINT_URL }}" + github-token: ${{ secrets.PAT_TOKEN }} + cf-endpoint-url: ${{ secrets.CF_ENDPOINT_URL }} cf-bucket-access-key-id: ${{ secrets.CF_BUCKET_ACCESS_KEY_ID }} cf-bucket-secret-access-key: ${{ secrets.CF_BUCKET_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/reusable-build.yaml b/.github/workflows/reusable-build.yaml new file mode 100644 index 00000000..b011ecc6 --- /dev/null +++ b/.github/workflows/reusable-build.yaml @@ -0,0 +1,68 @@ +name: "Build Contracts" + +on: + workflow_call: + inputs: + commit-hash: + description: "The commit hash to build from" + type: string + required: true + outputs: + artifact-name: + description: "Name of the uploaded artifact containing all builds" + value: ${{ jobs.build.outputs.artifact-name }} + +jobs: + build: + runs-on: blacksmith-8vcpu-ubuntu-2204 + outputs: + artifact-name: ${{ steps.set-artifact-name.outputs.name }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Checkout specific commit + run: git checkout ${{ inputs.commit-hash }} + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: 1.76.0 + targets: wasm32-unknown-unknown + + - name: Set artifact name + id: set-artifact-name + run: | + echo "name=wasm-builds-${{ inputs.commit-hash }}" >> $GITHUB_OUTPUT + + - name: Build all contracts + run: | + cargo install --locked soroban-cli --version 21.1.1 --features opt + + # Build all contracts + cargo wasm + ./optimize.sh + + # Create directory for storing optimized WASM files + mkdir -p wasm-builds + + # Process in the release directory + cd target/wasm32-unknown-unknown/release + + # Remove unoptimized files and rename optimized ones + # This ensures we only keep the optimized versions + find . -type f -name "*.wasm" ! -name "*.optimized.wasm" -maxdepth 1 -delete + find . -name "*.optimized.wasm" -maxdepth 1 -exec sh -c 'mv "$0" "${0%.optimized.wasm}.wasm"' {} \; + + # Move all optimized WASM files to the builds directory + mv *.wasm ../../../wasm-builds/ + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.set-artifact-name.outputs.name }} + path: wasm-builds + retention-days: 1 diff --git a/.github/workflows/reusable-build-upload.yaml b/.github/workflows/reusable-upload.yaml similarity index 79% rename from .github/workflows/reusable-build-upload.yaml rename to .github/workflows/reusable-upload.yaml index 191ba939..4ca0f1b1 100644 --- a/.github/workflows/reusable-build-upload.yaml +++ b/.github/workflows/reusable-upload.yaml @@ -1,9 +1,8 @@ -name: "Publish specific rust package" +name: "Upload Contract to Cloudflare" on: workflow_call: inputs: - # Package related variables package-name: description: "The package name to use (ex: gz-srv)" type: string @@ -22,7 +21,11 @@ on: required: true default: "" - # CF Bucket related variables + artifact-name: + description: "Name of the artifact containing the builds" + type: string + required: true + cf-bucket-name: description: "The CF bucket name to use" required: true @@ -34,10 +37,9 @@ on: type: string github-release: - description: "Whether to upload the build as a github release" - required: false - default: true + description: "Whether to upload as a github release" type: boolean + default: true secrets: github-token: @@ -54,37 +56,23 @@ on: required: true jobs: - build-and-upload: - runs-on: blacksmith-8vcpu-ubuntu-2204 + upload: + name: upload ${{ inputs.package-git-tag }} + runs-on: blacksmith-2vcpu-ubuntu-2204 steps: - - name: Checkout repository - uses: actions/checkout@v4 + - name: Download artifact + uses: actions/download-artifact@v4 with: - fetch-depth: 0 - token: ${{ secrets.github-token }} + name: ${{ inputs.artifact-name }} + path: wasm-builds - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - toolchain: 1.81.0 - targets: wasm32-unknown-unknown - - - name: Build artifacts for ${{ inputs.package-name }} - run: | - echo "Building wasm for '${{ inputs.package-name }}'"; - cargo install --locked stellar-cli --version 22.2.0 --features opt - cargo wasm -p ${{ inputs.package-name }} - stellar contract build - ./optimize.sh - - # Prepare the variables that will be used across the different next steps - name: Prepare cross-steps variables run: | export PACKAGE_NAME='${{ inputs.package-name }}' export PACKAGE_VERSION=${{ inputs.github-release && format('v{0}', inputs.package-version) || inputs.package-version }} - export BASE_ARTIFACTS_DIR="./target/wasm32-unknown-unknown/release" - export ARTIFACT_NAME="axelar-cgp-stellar-wasm-${PACKAGE_NAME}-${PACKAGE_VERSION}" + export BASE_ARTIFACTS_DIR="./wasm-builds" + export ARTIFACT_NAME="axelar-cgp-soroban-wasm-${PACKAGE_NAME}-${PACKAGE_VERSION}" export BASE_ARTIFACTS_VERSIONED_DIR="$(dirname ${BASE_ARTIFACTS_DIR})/${ARTIFACT_NAME}" # Regardless of the dir type, relative or absolute export ARCHIVES_OUTPUT_DIR="${{ github.workspace }}/build/archives" @@ -94,19 +82,19 @@ jobs: # Ensures that this dir is created mkdir -p ${ARCHIVES_OUTPUT_DIR} - # ex: stellar-axelar-gas-service + # ex: axelar-gas-service echo "PACKAGE_NAME=${PACKAGE_NAME}" >> $GITHUB_ENV # ex: v0.1.0 echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV - # ex: ./target/wasm32-unknown-unknown/release + # ex: ./wasm-builds echo "BASE_ARTIFACTS_DIR=${BASE_ARTIFACTS_DIR}" >> $GITHUB_ENV - # ex: axelar-cgp-stellar-wasm-stellar-axelar-gas-service-v0.1.0 + # ex: axelar-cgp-soroban-wasm-axelar-gas-service-v0.1.0 echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV - # ex: ./axelar-cgp-stellar-wasm-stellar-axelar-gas-service-v0.1.0 + # ex: ./axelar-cgp-soroban-wasm-axelar-gas-service-v0.1.0 echo "BASE_ARTIFACTS_VERSIONED_DIR=${BASE_ARTIFACTS_VERSIONED_DIR}" >> $GITHUB_ENV echo "ZIP_ARCHIVE_FILE=${ZIP_ARCHIVE_FILE}" >> $GITHUB_ENV @@ -121,12 +109,6 @@ jobs: # This cd to keep the dir structure of the artifacts archive cd ${{ env.BASE_ARTIFACTS_VERSIONED_DIR }} - # Remove "unoptimized" built wasm files - find "." -type f -name "*.wasm" ! -name "*.optimized.wasm" -maxdepth 1 -delete - - # Rename the optimized ones and remove the ".optimized" suffix - find . -name "*.optimized.wasm" -maxdepth 1 -exec sh -c 'mv "$0" "${0%.optimized.wasm}.wasm"' {} \; - # Archive the wasm find "." -type f -name "*.wasm" -maxdepth 1 -print | zip "${{ env.ZIP_ARCHIVE_FILE }}" -@ find "." -type f -name "*.wasm" -maxdepth 1 -print | tar -czvf "${{ env.TAR_ARCHIVE_FILE }}" -T - From a46fa3dc9f85d2272fc138e8cf0e27ae7a56f81e Mon Sep 17 00:00:00 2001 From: ahramy Date: Mon, 3 Feb 2025 07:56:40 -0800 Subject: [PATCH 6/8] Update reusable-build.yaml --- .github/workflows/reusable-build.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable-build.yaml b/.github/workflows/reusable-build.yaml index b011ecc6..62890070 100644 --- a/.github/workflows/reusable-build.yaml +++ b/.github/workflows/reusable-build.yaml @@ -40,6 +40,7 @@ jobs: - name: Build all contracts run: | + # 21.1.1 is the latest rust 1.76.0 compatible version, the version after is 21.2.0 which is compatible with 1.79.0 (different than the workspace's version) cargo install --locked soroban-cli --version 21.1.1 --features opt # Build all contracts From 930158273f56df01bf200136fc222c2771f7c21a Mon Sep 17 00:00:00 2001 From: ahramy Date: Mon, 3 Feb 2025 09:08:09 -0800 Subject: [PATCH 7/8] Update reusable-upload.yaml --- .github/workflows/reusable-upload.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reusable-upload.yaml b/.github/workflows/reusable-upload.yaml index 4ca0f1b1..a3bf0e52 100644 --- a/.github/workflows/reusable-upload.yaml +++ b/.github/workflows/reusable-upload.yaml @@ -72,7 +72,7 @@ jobs: export PACKAGE_VERSION=${{ inputs.github-release && format('v{0}', inputs.package-version) || inputs.package-version }} export BASE_ARTIFACTS_DIR="./wasm-builds" - export ARTIFACT_NAME="axelar-cgp-soroban-wasm-${PACKAGE_NAME}-${PACKAGE_VERSION}" + export ARTIFACT_NAME="axelar-cgp-stellar-wasm-${PACKAGE_NAME}-${PACKAGE_VERSION}" export BASE_ARTIFACTS_VERSIONED_DIR="$(dirname ${BASE_ARTIFACTS_DIR})/${ARTIFACT_NAME}" # Regardless of the dir type, relative or absolute export ARCHIVES_OUTPUT_DIR="${{ github.workspace }}/build/archives" @@ -91,10 +91,10 @@ jobs: # ex: ./wasm-builds echo "BASE_ARTIFACTS_DIR=${BASE_ARTIFACTS_DIR}" >> $GITHUB_ENV - # ex: axelar-cgp-soroban-wasm-axelar-gas-service-v0.1.0 + # ex: axelar-cgp-stellar-wasm-stellar-axelar-gas-service-v0.1.0 echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV - # ex: ./axelar-cgp-soroban-wasm-axelar-gas-service-v0.1.0 + # ex: ./axelar-cgp-stellar-wasm-stellar-axelar-gas-service-v0.1.0 echo "BASE_ARTIFACTS_VERSIONED_DIR=${BASE_ARTIFACTS_VERSIONED_DIR}" >> $GITHUB_ENV echo "ZIP_ARCHIVE_FILE=${ZIP_ARCHIVE_FILE}" >> $GITHUB_ENV From 3d6844bf1d6ca69182d2f02286b8e5e5252b7c17 Mon Sep 17 00:00:00 2001 From: ahramy Date: Mon, 3 Feb 2025 09:18:15 -0800 Subject: [PATCH 8/8] Update reusable-build.yaml --- .github/workflows/reusable-build.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-build.yaml b/.github/workflows/reusable-build.yaml index 62890070..67157adb 100644 --- a/.github/workflows/reusable-build.yaml +++ b/.github/workflows/reusable-build.yaml @@ -30,7 +30,7 @@ jobs: - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: - toolchain: 1.76.0 + toolchain: 1.81.0 targets: wasm32-unknown-unknown - name: Set artifact name @@ -41,7 +41,7 @@ jobs: - name: Build all contracts run: | # 21.1.1 is the latest rust 1.76.0 compatible version, the version after is 21.2.0 which is compatible with 1.79.0 (different than the workspace's version) - cargo install --locked soroban-cli --version 21.1.1 --features opt + cargo install --locked stellar-cli --version 22.2.0 --features opt # Build all contracts cargo wasm