From 8e3ed28ecf70a485ec2e9bcfb97e434567ca7803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex?= Date: Mon, 1 Sep 2025 15:28:28 +0200 Subject: [PATCH] ci: Add version tagging to circuit workflow (#87) --- .github/workflows/build-circuits.yml | 88 +++++++++++++++------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index caa4806..1e3b50b 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -2,14 +2,12 @@ name: Build Circuits on: push: - branches: - - main tags: - - "v*.*.*" + - "circom_circuits-v*.*.*" workflow_dispatch: inputs: - version: - description: "Version to release. Must follow the format of 'vX.Y.Z'." + tag: + description: "Tag to release. Must follow the format of 'circom_circuits-vX.Y.Z'." required: true pull_request: # For testing purposes @@ -19,23 +17,28 @@ jobs: runs-on: ubuntu-latest outputs: version: ${{ steps.define-version.outputs.version }} + tag: ${{ steps.define-version.outputs.tag }} steps: - name: Define version id: define-version env: # Use the tag name if it is available, otherwise use the input version. # If neither is available, default to the commit hash. - VERSION: ${{ github.event.release.tag_name || inputs.version }} + TAG: ${{ github.events.release.tag_name || inputs.tag || 'circom_circuits-v0.0.0' }} run: | - if [ -z "$VERSION" ]; then - echo "No version tag found. Defaulting to commit hash." - VERSION=$GITHUB_SHA - elif [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "VERSION must follow the format of 'vX.Y.Z'. Value: '$VERSION'." + if [ -z "$TAG" ]; then + echo "Could not determine tag." exit 1 + elif [[ ! "$TAG" =~ ^circom_circuits-v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "TAG must follow the format of 'circom_circuits-vX.Y.Z'. Value: '$VERSION'." + exit 2 fi - # Export the version to be used in the following jobs. + # Parse Version: Take only the vX.Y.Z part. + VERSION=$(echo $TAG | cut -d'-' -f2) + + # Export the tag and version. + echo "tag=$TAG" >> $GITHUB_OUTPUT echo "version=$VERSION" >> $GITHUB_OUTPUT build-linux: @@ -99,7 +102,7 @@ jobs: working-directory: repo env: BINARY_NAME: prover - BUNDLE_NAME: prover-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package run: | BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" @@ -113,7 +116,7 @@ jobs: working-directory: repo env: BINARY_NAME: verifier - BUNDLE_NAME: verifier-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package run: | BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" @@ -126,7 +129,7 @@ jobs: - name: Bundle Pol Witness Generator working-directory: repo env: - BUNDLE_NAME: pol-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp run: | BUNDLE_DIR="${BUNDLE_NAME}/witness-generator" @@ -139,20 +142,20 @@ jobs: - name: Upload Rapidsnark Prover uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - name: Upload Rapidsnark Verifier uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - name: Upload Pol Witness Generator uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz build-windows: name: Build Windows Binaries (Native) @@ -267,7 +270,7 @@ jobs: working-directory: repo env: BINARY_NAME: prover - BUNDLE_NAME: prover-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package run: | BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" @@ -286,7 +289,7 @@ jobs: working-directory: repo env: BINARY_NAME: verifier - BUNDLE_NAME: verifier-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package run: | BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" @@ -304,7 +307,7 @@ jobs: shell: msys2 {0} working-directory: repo env: - BUNDLE_NAME: pol-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp run: | BUNDLE_DIR="${BUNDLE_NAME}/witness-generator" @@ -322,20 +325,20 @@ jobs: - name: Upload Rapidsnark Prover uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - name: Upload Rapidsnark Verifier uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - name: Upload Pol Witness Generator uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz build-macos: name: Build MacOS Binaries (Native) @@ -405,7 +408,7 @@ jobs: working-directory: repo env: BINARY_NAME: prover - BUNDLE_NAME: prover-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package_macos_arm64 run: | BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" @@ -419,7 +422,7 @@ jobs: working-directory: repo env: BINARY_NAME: verifier - BUNDLE_NAME: verifier-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} RAPIDSNARK_DIR: circom_circuits/rapidsnark/package_macos_arm64 run: | BUNDLE_DIR="${BUNDLE_NAME}/${BINARY_NAME}" @@ -432,7 +435,7 @@ jobs: - name: Bundle Pol Witness Generator working-directory: repo env: - BUNDLE_NAME: pol-${{ env.OS }}-${{ env.ARCH }} + BUNDLE_NAME: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} WITNESS_GENERATOR_DIR: circom_circuits/Mantle/pol_cpp run: | BUNDLE_DIR="${BUNDLE_NAME}/witness-generator" @@ -445,20 +448,20 @@ jobs: - name: Upload Rapidsnark Prover uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/prover-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/prover-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - name: Upload Rapidsnark Verifier uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/verifier-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/verifier-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz - name: Upload Pol Witness Generator uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: - name: pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz - path: repo/pol-${{ env.OS }}-${{ env.ARCH }}.tar.gz + name: pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: repo/pol-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz publish-release: name: Create Release @@ -469,6 +472,7 @@ jobs: - build-windows - build-macos env: + TAG: ${{ needs.setup.outputs.tag }} VERSION: ${{ needs.setup.outputs.version }} outputs: upload_url: ${{ steps.create_release.outputs.upload_url }} @@ -479,7 +483,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - tag_name: ${{ env.VERSION }} + tag_name: ${{ env.TAG }} release_name: Circom Circuits ${{ env.VERSION }} body: | This is a release of Circom Circuits ${{ env.VERSION }}. @@ -518,9 +522,8 @@ jobs: - verifier - pol env: - VERSION: ${{ needs.setup.outputs.version }} UPLOAD_URL: ${{ needs.publish-release.outputs.upload_url }} - ARTIFACT_NAME: ${{ matrix.artifact }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz + ARTIFACT_NAME: ${{ matrix.artifact }}-${{ needs.setup.outputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz steps: - name: Download Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -536,3 +539,4 @@ jobs: asset_path: ${{ env.ARTIFACT_NAME }} asset_name: ${{ env.ARTIFACT_NAME }} asset_content_type: application/octet-stream +