99 description : " Network to deploy (e.g., staging-public, testnet, next-net)"
1010 required : true
1111 type : string
12- semver :
13- description : " Semver version (e.g., 2.3.4)"
14- required : true
12+ aztec_docker_image :
13+ description : " Full Aztec docker image (e.g., aztecprotocol/aztec: 2.3.4). If not set, constructed from semver. "
14+ required : false
1515 type : string
16- docker_image_tag :
17- description : " Full docker image tag (optional, defaults to semver) "
16+ semver :
17+ description : " Semver version (e.g., 2.3.4). Used to construct docker image if aztec_docker_image is not set. "
1818 required : false
1919 type : string
2020 ref :
4949 - staging-public
5050 - testnet
5151 - mainnet
52- semver :
53- description : " Semver version (e.g., 2.3.4)"
54- required : true
52+ aztec_docker_image :
53+ description : " Full Aztec docker image (e.g., aztecprotocol/aztec: 2.3.4). If not set, constructed from semver. "
54+ required : false
5555 type : string
56- docker_image_tag :
57- description : " Full docker image tag (optional, defaults to semver) "
56+ semver :
57+ description : " Semver version (e.g., 2.3.4). Used to construct docker image if aztec_docker_image is not set. "
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,31 @@ 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+ # Derive prover agent image by replacing /aztec: with /aztec-prover-agent:
146+ PROVER_AGENT_DOCKER_IMAGE="${AZTEC_DOCKER_IMAGE/\/aztec:/\/aztec-prover-agent:}"
147+ echo "PROVER_AGENT_DOCKER_IMAGE=$PROVER_AGENT_DOCKER_IMAGE" >> $GITHUB_ENV
133148
134149 - name : Store the GCP key in a file
135150 env :
@@ -174,12 +189,12 @@ jobs:
174189 RUN_ID : ${{ github.run_id }}
175190 SLACK_BOT_TOKEN : ${{ secrets.SLACK_BOT_TOKEN }}
176191 GOOGLE_APPLICATION_CREDENTIALS : ${{ env.GOOGLE_APPLICATION_CREDENTIALS }}
177- REF_NAME : " v ${{ inputs.semver }} "
192+ REF_NAME : ${{ inputs.semver && format('v{0}', inputs.semver) || '' }}
178193 GCP_PROJECT_ID : ${{ secrets.GCP_PROJECT_ID }}
179194 NAMESPACE : ${{ inputs.namespace }}
180- AZTEC_DOCKER_IMAGE : " aztecprotocol/aztec: ${{ inputs.docker_image_tag || inputs.semver }} "
195+ AZTEC_DOCKER_IMAGE : ${{ env.AZTEC_DOCKER_IMAGE }}
181196 CREATE_ROLLUP_CONTRACTS : ${{ inputs.deploy_contracts == true && 'true' || '' }}
182- PROVER_AGENT_DOCKER_IMAGE : " aztecprotocol/aztec-prover-agent: ${{ inputs.docker_image_tag || inputs.semver }} "
197+ PROVER_AGENT_DOCKER_IMAGE : ${{ env.PROVER_AGENT_DOCKER_IMAGE }}
183198 VALIDATOR_HA_DOCKER_IMAGE : ${{ inputs.ha_docker_image || '' }}
184199 run : |
185200 echo "Deploying network: ${{ inputs.network }}"
@@ -209,7 +224,7 @@ jobs:
209224 echo "| Item | Value |"
210225 echo "|------|-------|"
211226 echo "| Network | \`${{ inputs.network }}\` |"
212- echo "| Semver | \`${{ inputs.semver }}\` |"
227+ echo "| Docker Image | \`${{ env.AZTEC_DOCKER_IMAGE }}\` |"
213228 echo "| Ref | \`${{ steps.checkout-ref.outputs.ref }}\` |"
214229 if [[ -n "${{ inputs.source_tag }}" ]]; then
215230 echo "| Source Tag | [\`${{ inputs.source_tag }}\`](https://github.com/${{ github.repository }}/releases/tag/${{ inputs.source_tag }}) |"
@@ -229,7 +244,7 @@ jobs:
229244
230245 CHANNEL="#alerts-${{ inputs.network }}"
231246 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> (🤖)"
247+ TEXT="Deploy Network workflow FAILED for *${{ inputs.network }}* (image ${{ env.AZTEC_DOCKER_IMAGE }}): <${RUN_URL}|View Run> (🤖)"
233248
234249 # Post to Slack and capture timestamp for permalink
235250 RESP=$(curl -sS -X POST https://slack.com/api/chat.postMessage \
@@ -247,11 +262,11 @@ jobs:
247262 fi
248263
249264 # Dispatch ClaudeBox to investigate the failure
250- PROMPT="Deployment of ${{ inputs.network }} (version ${{ inputs.semver }}) failed. \
265+ PROMPT="Deployment of ${{ inputs.network }} (image ${{ env.AZTEC_DOCKER_IMAGE }}) failed. \
251266 Follow .claude/claudebox/deploy-investigation.md to investigate. \
252267 GitHub Actions run: ${RUN_URL}. \
253- Network: ${{ inputs.network }}. Version: ${{ inputs.semver }}. \
254- Docker image: ${{ inputs.docker_image_tag || inputs.semver }}. \
268+ Network: ${{ inputs.network }}. \
269+ Docker image: ${{ env.AZTEC_DOCKER_IMAGE }}. \
255270 Git ref: ${{ steps.checkout-ref.outputs.ref }}. \
256271 Namespace: ${{ inputs.namespace || inputs.network }}. \
257272 Deploy contracts: ${{ inputs.deploy_contracts }}."
0 commit comments