1010 required : true
1111 type : string
1212 semver :
13- description : " Semver version (e.g., 2.3.4)"
14- required : true
13+ description : " Semver version (e.g., 2.3.4). Used to construct docker image if aztec_docker_image is not set. "
14+ required : false
1515 type : string
16- docker_image_tag :
17- description : " Full docker image tag (optional, defaults to semver) "
16+ aztec_docker_image :
17+ description : " Full Aztec docker image (e.g., aztecprotocol/aztec:2.3.4). If not set, constructed from semver. "
1818 required : false
1919 type : string
2020 ref :
5050 - testnet
5151 - mainnet
5252 semver :
53- description : " Semver version (e.g., 2.3.4)"
54- required : true
53+ description : " Semver version (e.g., 2.3.4). Used to construct docker image if aztec_docker_image is not set. "
54+ required : false
5555 type : string
56- docker_image_tag :
57- description : " Full docker image tag (optional, defaults to semver) "
56+ aztec_docker_image :
57+ description : " Full Aztec docker image (e.g., aztecprotocol/aztec:2.3.4). If not set, constructed from semver. "
5858 required : false
5959 type : string
6060 namespace :
7676 type : string
7777
7878concurrency :
79- group : deploy-network-${{ inputs.network }}-${{ inputs.namespace || inputs.network }}-${{ inputs.semver }}-${{ github.ref || github.ref_name }}
79+ group : deploy-network-${{ inputs.network }}-${{ inputs.namespace || inputs.network }}-${{ inputs.aztec_docker_image || inputs. semver }}-${{ github.ref || github.ref_name }}
8080 cancel-in-progress : true
8181
8282jobs :
@@ -120,16 +120,33 @@ jobs:
120120 exit 1
121121 fi
122122
123- # Validate semver format
124- if ! echo "${{ inputs.semver }}" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+(-.*)?$' ; then
125- echo "Error: Invalid semver format '${{ inputs. semver }}'. Expected format: X.Y.Z or X.Y.Z-suffix "
123+ # Require at least one of aztec_docker_image or semver
124+ if [[ -z "${{ inputs.aztec_docker_image }}" && -z "${{ inputs.semver }}" ]] ; then
125+ echo "Error: Either 'aztec_docker_image' or ' semver' must be provided "
126126 exit 1
127127 fi
128128
129- # Extract major version for v2 check
130- major_version="${{ inputs.semver }}"
131- major_version="${major_version%%.*}"
132- echo "MAJOR_VERSION=$major_version" >> $GITHUB_ENV
129+ # Validate semver format if provided
130+ if [[ -n "${{ inputs.semver }}" ]]; then
131+ if ! echo "${{ inputs.semver }}" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+(-.*)?$'; then
132+ echo "Error: Invalid semver format '${{ inputs.semver }}'. Expected format: X.Y.Z or X.Y.Z-suffix"
133+ exit 1
134+ fi
135+ fi
136+
137+ # Resolve the docker image
138+ if [[ -n "${{ inputs.aztec_docker_image }}" ]]; then
139+ AZTEC_DOCKER_IMAGE="${{ inputs.aztec_docker_image }}"
140+ else
141+ AZTEC_DOCKER_IMAGE="aztecprotocol/aztec:${{ inputs.semver }}"
142+ fi
143+ echo "AZTEC_DOCKER_IMAGE=$AZTEC_DOCKER_IMAGE" >> $GITHUB_ENV
144+
145+ # Only use the separate prover-agent image for official semver builds;
146+ # for custom images, let the deploy script fall back to AZTEC_DOCKER_IMAGE
147+ if [[ -n "${{ inputs.semver }}" ]]; then
148+ echo "PROVER_AGENT_DOCKER_IMAGE=aztecprotocol/aztec-prover-agent:${{ inputs.semver }}" >> $GITHUB_ENV
149+ fi
133150
134151 - name : Store the GCP key in a file
135152 env :
@@ -174,12 +191,12 @@ jobs:
174191 RUN_ID : ${{ github.run_id }}
175192 SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
176193 GOOGLE_APPLICATION_CREDENTIALS : ${{ env.GOOGLE_APPLICATION_CREDENTIALS }}
177- REF_NAME : " v ${{ inputs.semver }} "
194+ REF_NAME : ${{ inputs.semver && format('v{0}', inputs.semver) || '' }}
178195 GCP_PROJECT_ID : ${{ secrets.GCP_PROJECT_ID }}
179196 NAMESPACE : ${{ inputs.namespace }}
180- AZTEC_DOCKER_IMAGE : " aztecprotocol/aztec: ${{ inputs.docker_image_tag || inputs.semver }} "
197+ AZTEC_DOCKER_IMAGE : ${{ env.AZTEC_DOCKER_IMAGE }}
181198 CREATE_ROLLUP_CONTRACTS : ${{ inputs.deploy_contracts == true && 'true' || '' }}
182- PROVER_AGENT_DOCKER_IMAGE : " aztecprotocol/aztec-prover-agent: ${{ inputs.docker_image_tag || inputs.semver }}"
199+ PROVER_AGENT_DOCKER_IMAGE : ${{ env.PROVER_AGENT_DOCKER_IMAGE || env.AZTEC_DOCKER_IMAGE }}
183200 VALIDATOR_HA_DOCKER_IMAGE : ${{ inputs.ha_docker_image || '' }}
184201 run : |
185202 echo "Deploying network: ${{ inputs.network }}"
@@ -209,7 +226,7 @@ jobs:
209226 echo "| Item | Value |"
210227 echo "|------|-------|"
211228 echo "| Network | \`${{ inputs.network }}\` |"
212- echo "| Semver | \`${{ inputs.semver }}\` |"
229+ echo "| Docker Image | \`${{ env.AZTEC_DOCKER_IMAGE }}\` |"
213230 echo "| Ref | \`${{ steps.checkout-ref.outputs.ref }}\` |"
214231 if [[ -n "${{ inputs.source_tag }}" ]]; then
215232 echo "| Source Tag | [\`${{ inputs.source_tag }}\`](https://github.com/${{ github.repository }}/releases/tag/${{ inputs.source_tag }}) |"
@@ -229,7 +246,7 @@ jobs:
229246
230247 CHANNEL="#alerts-${{ inputs.network }}"
231248 RUN_URL="https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
232- TEXT="Deploy Network workflow FAILED for *${{ inputs.network }}* (version ${{ inputs.semver }}): <${RUN_URL}|View Run> (🤖)"
249+ TEXT="Deploy Network workflow FAILED for *${{ inputs.network }}* (image ${{ env.AZTEC_DOCKER_IMAGE }}): <${RUN_URL}|View Run> (🤖)"
233250
234251 # Post to Slack and capture timestamp for permalink
235252 RESP=$(curl -sS -X POST https://slack.com/api/chat.postMessage \
@@ -247,11 +264,11 @@ jobs:
247264 fi
248265
249266 # Dispatch ClaudeBox to investigate the failure
250- PROMPT="Deployment of ${{ inputs.network }} (version ${{ inputs.semver }}) failed. \
267+ PROMPT="Deployment of ${{ inputs.network }} (image ${{ env.AZTEC_DOCKER_IMAGE }}) failed. \
251268 Follow .claude/claudebox/deploy-investigation.md to investigate. \
252269 GitHub Actions run: ${RUN_URL}. \
253- Network: ${{ inputs.network }}. Version: ${{ inputs.semver }}. \
254- Docker image: ${{ inputs.docker_image_tag || inputs.semver }}. \
270+ Network: ${{ inputs.network }}. \
271+ Docker image: ${{ env.AZTEC_DOCKER_IMAGE }}. \
255272 Git ref: ${{ steps.checkout-ref.outputs.ref }}. \
256273 Namespace: ${{ inputs.namespace || inputs.network }}. \
257274 Deploy contracts: ${{ inputs.deploy_contracts }}."
0 commit comments