From 4b9d4a78437a91145f1334c0f0eeff3bc6297d05 Mon Sep 17 00:00:00 2001 From: Noam Parzenchevski Date: Tue, 5 May 2026 15:04:22 +0300 Subject: [PATCH 1/2] refactor github action upload flow --- .github/actions/build-arch-binary/action.yml | 36 +++++++ .../workflows/upload_artifacts_workflow.yml | 98 +++++-------------- 2 files changed, 61 insertions(+), 73 deletions(-) create mode 100644 .github/actions/build-arch-binary/action.yml diff --git a/.github/actions/build-arch-binary/action.yml b/.github/actions/build-arch-binary/action.yml new file mode 100644 index 00000000..47e32786 --- /dev/null +++ b/.github/actions/build-arch-binary/action.yml @@ -0,0 +1,36 @@ +name: Build and upload arch-specific binary +description: Builds a Rust binary for a specific CPU architecture and uploads it to GCS. + +inputs: + arch: + description: CPU architecture target (e.g. znver5, sapphirerapids) + required: true + binary_name: + description: Binary crate name with hyphens (e.g. stwo-run-and-prove) + required: true + +runs: + using: composite + steps: + - name: Build ${{ inputs.binary_name }} for ${{ inputs.arch }} + shell: bash + run: | + CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=${{ inputs.arch }}" \ + cargo build --release --target x86_64-unknown-linux-gnu --bin ${{ inputs.binary_name }} + + - name: Rename ${{ inputs.binary_name }} (${{ inputs.arch }}) + shell: bash + env: + BINARY_NAME_ORIGINAL: ${{ inputs.binary_name }} + run: | + BINARY_NAME="$BINARY_NAME_ORIGINAL" + BINARY_NAME="${BINARY_NAME//-/_}" + mv "target/x86_64-unknown-linux-gnu/release/$BINARY_NAME_ORIGINAL" \ + "target/x86_64-unknown-linux-gnu/release/$BINARY_NAME" + echo "BINARY_NAME=${BINARY_NAME}" >> "$GITHUB_ENV" + + - name: Upload ${{ inputs.binary_name }} (${{ inputs.arch }}) to GCP + uses: google-github-actions/upload-cloud-storage@v2 + with: + path: "target/x86_64-unknown-linux-gnu/release/${{ env.BINARY_NAME }}" + destination: "${{ env.BINARY_NAME }}_${{ inputs.arch }}_artifacts/${{ env.SHORT_HASH }}/release" diff --git a/.github/workflows/upload_artifacts_workflow.yml b/.github/workflows/upload_artifacts_workflow.yml index 7b9a8931..02a820f0 100644 --- a/.github/workflows/upload_artifacts_workflow.yml +++ b/.github/workflows/upload_artifacts_workflow.yml @@ -3,7 +3,7 @@ name: Upload-Artifacts on: push: branches: - - main + - noamp/refactor_upload_flow jobs: artifacts-push: @@ -53,86 +53,38 @@ jobs: path: "target/release/stwo_run_and_prove" destination: "stwo_run_and_prove_artifacts/${{ env.SHORT_HASH }}/release" - - name: Build stwo_run_and_prove for znver5 architecture - run: | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=znver5" cargo build --release --target x86_64-unknown-linux-gnu --bin stwo-run-and-prove - - - name: Rename stwo-run-and-prove binary (znver5) - run: mv target/x86_64-unknown-linux-gnu/release/stwo-run-and-prove target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove - - - name: Upload stwo_run_and_prove_znver5 binary to GCP - id: upload_stwo_run_and_prove_znver5 - uses: "google-github-actions/upload-cloud-storage@v2" + - name: Build and upload stwo_run_and_prove for znver5 + uses: ./.github/actions/build-arch-binary with: - path: "target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove" - destination: "stwo_run_and_prove_znver5_artifacts/${{ env.SHORT_HASH }}/release" - - - name: Build stwo_run_and_prove for znver4 architecture - run: | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=znver4" cargo build --release --target x86_64-unknown-linux-gnu --bin stwo-run-and-prove + arch: znver5 + binary_name: stwo-run-and-prove - - name: Rename stwo-run-and-prove binary (znver4) - run: mv target/x86_64-unknown-linux-gnu/release/stwo-run-and-prove target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove - - - name: Upload stwo_run_and_prove_znver4 binary to GCP - id: upload_stwo_run_and_prove_znver4 - uses: "google-github-actions/upload-cloud-storage@v2" + - name: Build and upload stwo_run_and_prove for znver4 + uses: ./.github/actions/build-arch-binary with: - path: "target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove" - destination: "stwo_run_and_prove_znver4_artifacts/${{ env.SHORT_HASH }}/release" - - - name: Build stwo_run_and_prove for znver3 architecture - run: | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=znver3" cargo build --release --target x86_64-unknown-linux-gnu --bin stwo-run-and-prove - - - name: Rename stwo-run-and-prove binary (znver3) - run: mv target/x86_64-unknown-linux-gnu/release/stwo-run-and-prove target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove + arch: znver4 + binary_name: stwo-run-and-prove - - name: Upload stwo_run_and_prove_znver3 binary to GCP - id: upload_stwo_run_and_prove_znver3 - uses: "google-github-actions/upload-cloud-storage@v2" + - name: Build and upload stwo_run_and_prove for znver3 + uses: ./.github/actions/build-arch-binary with: - path: "target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove" - destination: "stwo_run_and_prove_znver3_artifacts/${{ env.SHORT_HASH }}/release" + arch: znver3 + binary_name: stwo-run-and-prove - - name: Build stwo_run_and_prove for emeraldrapids architecture - run: | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=emeraldrapids" cargo build --release --target x86_64-unknown-linux-gnu --bin stwo-run-and-prove - - - name: Rename stwo-run-and-prove binary (emeraldrapids) - run: mv target/x86_64-unknown-linux-gnu/release/stwo-run-and-prove target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove - - - name: Upload stwo_run_and_prove_emeraldrapids binary to GCP - id: upload_stwo_run_and_prove_emeraldrapids - uses: "google-github-actions/upload-cloud-storage@v2" + - name: Build and upload stwo_run_and_prove for emeraldrapids + uses: ./.github/actions/build-arch-binary with: - path: "target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove" - destination: "stwo_run_and_prove_emeraldrapids_artifacts/${{ env.SHORT_HASH }}/release" - - - name: Build stwo_run_and_prove for sapphirerapids architecture - run: | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=sapphirerapids" cargo build --release --target x86_64-unknown-linux-gnu --bin stwo-run-and-prove + arch: emeraldrapids + binary_name: stwo-run-and-prove - - name: Rename stwo-run-and-prove binary (sapphirerapids) - run: mv target/x86_64-unknown-linux-gnu/release/stwo-run-and-prove target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove - - - name: Upload stwo_run_and_prove_sapphirerapids binary to GCP - id: upload_stwo_run_and_prove_sapphirerapids - uses: "google-github-actions/upload-cloud-storage@v2" + - name: Build and upload stwo_run_and_prove for sapphirerapids + uses: ./.github/actions/build-arch-binary with: - path: "target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove" - destination: "stwo_run_and_prove_sapphirerapids_artifacts/${{ env.SHORT_HASH }}/release" - - - name: Build stwo_run_and_prove for graniterapids architecture - run: | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=graniterapids" cargo build --release --target x86_64-unknown-linux-gnu --bin stwo-run-and-prove - - - name: Rename stwo-run-and-prove binary (graniterapids) - run: mv target/x86_64-unknown-linux-gnu/release/stwo-run-and-prove target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove + arch: sapphirerapids + binary_name: stwo-run-and-prove - - name: Upload stwo_run_and_prove_graniterapids binary to GCP - id: upload_stwo_run_and_prove_graniterapids - uses: "google-github-actions/upload-cloud-storage@v2" + - name: Build and upload stwo_run_and_prove for graniterapids + uses: ./.github/actions/build-arch-binary with: - path: "target/x86_64-unknown-linux-gnu/release/stwo_run_and_prove" - destination: "stwo_run_and_prove_graniterapids_artifacts/${{ env.SHORT_HASH }}/release" + arch: graniterapids + binary_name: stwo-run-and-prove From b20163c068631772c868ea8c169dfcb3a044fbf5 Mon Sep 17 00:00:00 2001 From: Noam Parzenchevski Date: Thu, 7 May 2026 11:42:08 +0300 Subject: [PATCH 2/2] safer env vars setup --- .github/actions/build-arch-binary/action.yml | 33 +++++++++++-------- .../workflows/upload_artifacts_workflow.yml | 2 +- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/.github/actions/build-arch-binary/action.yml b/.github/actions/build-arch-binary/action.yml index 47e32786..f51f89f3 100644 --- a/.github/actions/build-arch-binary/action.yml +++ b/.github/actions/build-arch-binary/action.yml @@ -12,25 +12,30 @@ inputs: runs: using: composite steps: - - name: Build ${{ inputs.binary_name }} for ${{ inputs.arch }} + - name: Setup environment variables shell: bash + env: + BINARY_NAME_ORIGINAL: ${{ inputs.binary_name }} + ARCH_NAME: ${{ inputs.arch }} run: | - CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=${{ inputs.arch }}" \ - cargo build --release --target x86_64-unknown-linux-gnu --bin ${{ inputs.binary_name }} + echo "BINARY_NAME_ORIGINAL=${BINARY_NAME_ORIGINAL}" >> $GITHUB_ENV + echo "BINARY_NAME_DEST=${BINARY_NAME_ORIGINAL//-/_}" >> $GITHUB_ENV + echo "ARCH_NAME=${ARCH_NAME}" >> $GITHUB_ENV - - name: Rename ${{ inputs.binary_name }} (${{ inputs.arch }}) + - name: Build ${{ env.BINARY_NAME_ORIGINAL }} for ${{ env.ARCH_NAME }} + shell: bash + run: | + CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS="-C target-cpu=${{ env.ARCH_NAME }}" \ + cargo build --release --target x86_64-unknown-linux-gnu --bin ${{ env.BINARY_NAME_ORIGINAL }} + + - name: Rename ${{ env.BINARY_NAME_ORIGINAL }} to ${{ env.BINARY_NAME_DEST }} (${{ env.ARCH_NAME }}) shell: bash - env: - BINARY_NAME_ORIGINAL: ${{ inputs.binary_name }} run: | - BINARY_NAME="$BINARY_NAME_ORIGINAL" - BINARY_NAME="${BINARY_NAME//-/_}" - mv "target/x86_64-unknown-linux-gnu/release/$BINARY_NAME_ORIGINAL" \ - "target/x86_64-unknown-linux-gnu/release/$BINARY_NAME" - echo "BINARY_NAME=${BINARY_NAME}" >> "$GITHUB_ENV" + mv "target/x86_64-unknown-linux-gnu/release/${{ env.BINARY_NAME_ORIGINAL }}" \ + "target/x86_64-unknown-linux-gnu/release/${{ env.BINARY_NAME_DEST }}" - - name: Upload ${{ inputs.binary_name }} (${{ inputs.arch }}) to GCP + - name: Upload ${{ env.BINARY_NAME_DEST }} (${{ env.ARCH_NAME }}) to GCP uses: google-github-actions/upload-cloud-storage@v2 with: - path: "target/x86_64-unknown-linux-gnu/release/${{ env.BINARY_NAME }}" - destination: "${{ env.BINARY_NAME }}_${{ inputs.arch }}_artifacts/${{ env.SHORT_HASH }}/release" + path: "target/x86_64-unknown-linux-gnu/release/${{ env.BINARY_NAME_DEST }}" + destination: "${{ env.BINARY_NAME_DEST }}_${{ env.ARCH_NAME }}_artifacts/${{ env.SHORT_HASH }}/release" diff --git a/.github/workflows/upload_artifacts_workflow.yml b/.github/workflows/upload_artifacts_workflow.yml index 02a820f0..10c7cf21 100644 --- a/.github/workflows/upload_artifacts_workflow.yml +++ b/.github/workflows/upload_artifacts_workflow.yml @@ -3,7 +3,7 @@ name: Upload-Artifacts on: push: branches: - - noamp/refactor_upload_flow + - main jobs: artifacts-push: