Skip to content

Commit c45580a

Browse files
authored
chore: devnet fixes (#20403)
More fixes needed for devnet
2 parents d09bd62 + 0eb7f86 commit c45580a

File tree

5 files changed

+67
-21
lines changed

5 files changed

+67
-21
lines changed

.github/workflows/devnet-deploys.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,13 @@ jobs:
8080
namespace: ${{ needs.tag.outputs.namespace }}
8181
ref: ${{ needs.tag.outputs.ref }}
8282
deploy_contracts: ${{ needs.tag.outputs.patch == '0' }}
83+
84+
fund:
85+
needs: [tag, deploy]
86+
uses: ./.github/workflows/ensure-funded-environment.yml
87+
secrets: inherit
88+
with:
89+
environment: devnet
90+
namespace: ${{ needs.tag.outputs.namespace }}
91+
low_watermark: '5.0'
92+
high_watermark: '10.0'

.github/workflows/ensure-funded-environment.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ on:
1919
required: false
2020
type: string
2121
default: '1.0'
22+
namespace:
23+
description: 'Kubernetes namespace override (e.g., v4-devnet-1). Sets NAMESPACE before sourcing env file.'
24+
required: false
25+
type: string
2226
workflow_dispatch:
2327
inputs:
2428
environment:
@@ -42,6 +46,10 @@ on:
4246
required: false
4347
type: string
4448
default: '1.0'
49+
namespace:
50+
description: 'Kubernetes namespace override (e.g., v4-devnet-1)'
51+
required: false
52+
type: string
4553

4654
concurrency:
4755
group: ensure-funded-environment-${{ inputs.environment }}
@@ -103,6 +111,7 @@ jobs:
103111
env:
104112
FUNDING_PRIVATE_KEY: ${{ env.FUNDING_PRIVATE_KEY }}
105113
GCP_PROJECT_ID: ${{ secrets.GCP_PROJECT_ID }}
114+
NAMESPACE: ${{ inputs.namespace }}
106115
run: |
107116
cd spartan/scripts
108117

.github/workflows/ensure-funded-environments.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,20 @@ jobs:
3030
max-parallel: 1
3131
fail-fast: false
3232
matrix:
33-
environment:
33+
environment:
3434
- staging-public
3535
- staging-ignition
3636
- next-net
3737
- tps-scenario
3838
- testnet
3939
- devnet
40-
- devnet-next
40+
include:
41+
- environment: devnet
42+
namespace: v4-devnet-1
4143
uses: ./.github/workflows/ensure-funded-environment.yml
4244
with:
4345
environment: ${{ matrix.environment }}
46+
namespace: ${{ matrix.namespace }}
4447
low_watermark: ${{ inputs.low_watermark || '5.0' }}
4548
high_watermark: ${{ inputs.high_watermark || '10.0' }}
4649
secrets: inherit

spartan/environments/devnet.env

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
GCP_REGION=us-west1-a
22
CLUSTER=aztec-gke-private
33

4-
NETWORK=${NETWORK:-$NAMESPACE}
4+
NETWORK="devnet"
55
NAMESPACE=${NAMESPACE:-devnet}
66

7+
# Compute mnemonic index offset from namespace to avoid nonce conflicts
8+
# between concurrent devnets sharing the same mnemonic on the same L1.
9+
# Namespace format: v<MAJOR>-devnet-<ITERATION> (e.g., v4-devnet-2)
10+
MNEMONIC_INDEX_OFFSET=0
11+
if [[ "${NAMESPACE}" =~ ^v([0-9]+)-devnet-([0-9]+)$ ]]; then
12+
MNEMONIC_INDEX_OFFSET=$(( ${BASH_REMATCH[1]} * 100000 + (${BASH_REMATCH[2]} - 1) * 10000 ))
13+
fi
14+
715
CREATE_ETH_DEVNET=false
816
ETHEREUM_CHAIN_ID=11155111
917
ETHEREUM_RPC_URLS=REPLACE_WITH_GCP_SECRET
@@ -13,17 +21,18 @@ ETHEREUM_CONSENSUS_HOST_API_KEY_HEADERS=REPLACE_WITH_GCP_SECRET
1321

1422
FUNDING_PRIVATE_KEY=REPLACE_WITH_GCP_SECRET
1523
LABS_INFRA_MNEMONIC=REPLACE_WITH_GCP_SECRET
24+
LABS_INFRA_MNEMONIC_SECRET_NAME=sepolia-labs-devnet-mnemonic
1625
ROLLUP_DEPLOYMENT_PRIVATE_KEY=REPLACE_WITH_GCP_SECRET
1726
OTEL_COLLECTOR_ENDPOINT=REPLACE_WITH_GCP_SECRET
1827

19-
SNAPSHOT_BUCKET_DIRECTORY=${SNAPSHOT_BUCKET_DIRECTORY:-"devnet/$NETWORK/snapshots"}
20-
BLOB_BUCKET_DIRECTORY=${BLOB_BUCKET_DIRECTORY:-"devnet/$NETWORK/blobs"}
28+
SNAPSHOT_BUCKET_DIRECTORY=${SNAPSHOT_BUCKET_DIRECTORY:-"devnet/$NAMESPACE/snapshots"}
29+
BLOB_BUCKET_DIRECTORY=${BLOB_BUCKET_DIRECTORY:-"devnet/$NAMESPACE/blobs"}
2130
R2_ACCESS_KEY_ID=REPLACE_WITH_GCP_SECRET
2231
R2_SECRET_ACCESS_KEY=REPLACE_WITH_GCP_SECRET
2332

2433
CREATE_ROLLUP_CONTRACTS=${CREATE_ROLLUP_CONTRACTS:-false}
2534
VERIFY_CONTRACTS=false
26-
REDEPLOY_ROLLUP_CONTRACTS=false
35+
REDEPLOY_ROLLUP_CONTRACTS=${REDEPLOY_ROLLUP_CONTRACTS:-false}
2736
USE_NETWORK_CONFIG=${USE_NETWORK_CONFIG:-true}
2837

2938
DEPLOY_INTERNAL_BOOTNODE=false
@@ -39,14 +48,17 @@ FLUSH_ENTRY_QUEUE=true
3948
VALIDATOR_REPLICAS=1
4049
VALIDATORS_PER_NODE=1
4150
TOTAL_VALIDATORS=$((VALIDATOR_REPLICAS * VALIDATORS_PER_NODE))
42-
VALIDATOR_INDICES=$(seq -s ',' 1 $TOTAL_VALIDATORS)
51+
AZTEC_TARGET_COMMITTEE_SIZE=1
52+
53+
VALIDATOR_MNEMONIC_START_INDEX=$((1 + MNEMONIC_INDEX_OFFSET))
54+
VALIDATOR_INDICES=$(seq -s ',' $VALIDATOR_MNEMONIC_START_INDEX $((VALIDATOR_MNEMONIC_START_INDEX + TOTAL_VALIDATORS - 1)))
55+
VALIDATOR_PUBLISHER_MNEMONIC_START_INDEX=$((5000 + MNEMONIC_INDEX_OFFSET))
4356
PUBLISHERS_PER_VALIDATOR_KEY=1
44-
VALIDATOR_PUBLISHER_MNEMONIC_START_INDEX=5000
4557
SEQ_MIN_TX_PER_BLOCK=0
4658
SEQ_MAX_TX_PER_BLOCK=32
4759

60+
PROVER_PUBLISHER_MNEMONIC_START_INDEX=$((8000 + MNEMONIC_INDEX_OFFSET))
4861
PUBLISHERS_PER_PROVER=1
49-
PROVER_PUBLISHER_MNEMONIC_START_INDEX=8000
5062
PROVER_REPLICAS=1
5163
PROVER_AGENTS_PER_PROVER=4
5264

@@ -58,8 +70,8 @@ PROVER_RESOURCE_PROFILE="dev"
5870
DEBUG_FORCE_TX_PROOF_VERIFICATION=true
5971

6072
RPC_INGRESS_ENABLED=true
61-
RPC_INGRESS_HOSTS="["$NETWORK.aztec-labs.com"]"
62-
RPC_INGRESS_STATIC_IP_NAME=$NETWORK-rpc-ip
63-
RPC_INGRESS_SSL_CERT_NAMES="["$NETWORK-rpc-cert"]"
73+
RPC_INGRESS_HOSTS="[\"$NAMESPACE.aztec-labs.com\"]"
74+
RPC_INGRESS_STATIC_IP_NAME=$NAMESPACE-rpc-ip
75+
RPC_INGRESS_SSL_CERT_NAMES="[\"$NAMESPACE-rpc-cert\"]"
6476

6577
WS_NUM_HISTORIC_BLOCKS=300

spartan/scripts/wait_for_ci3.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,35 @@ function sleep(ms: number): Promise<void> {
3838
}
3939

4040
async function main(): Promise<void> {
41-
// 1. Resolve tag SHA
42-
const tagSha = execSync(
43-
`gh api repos/${repo}/git/ref/tags/${tag} --jq '.object.sha'`,
44-
{
45-
encoding: "utf-8",
46-
},
47-
).trim();
41+
// 1. Resolve tag SHA (dereference annotated tags to the underlying commit)
42+
const ref = JSON.parse(
43+
execSync(
44+
`gh api repos/${repo}/git/ref/tags/${tag}`,
45+
{ encoding: "utf-8" },
46+
),
47+
);
48+
49+
let commitSha: string = ref.object.sha;
50+
if (ref.object.type === "tag") {
51+
// Annotated tag — resolve the tag object to its commit
52+
const tagObj = JSON.parse(
53+
execSync(
54+
`gh api repos/${repo}/git/tags/${ref.object.sha}`,
55+
{ encoding: "utf-8" },
56+
),
57+
);
58+
commitSha = tagObj.object.sha;
59+
}
4860

49-
console.log(`Waiting for CI3 run for tag ${tag} (sha: ${tagSha})`);
61+
console.log(`Waiting for CI3 run for tag ${tag} (commit: ${commitSha})`);
5062

5163
// 2. Poll for the CI3 run (up to 10 minutes, checking every 10s)
5264
const maxAttempts = 60;
5365
let runId = "";
5466

5567
for (let i = 1; i <= maxAttempts; i++) {
5668
const result = execSync(
57-
`gh run list --repo ${repo} --workflow ci3.yml --json headSha,databaseId --jq '.[] | select(.headSha == "${tagSha}") | .databaseId'`,
69+
`gh run list --repo ${repo} --workflow ci3.yml --json headSha,databaseId --jq '.[] | select(.headSha == "${commitSha}") | .databaseId'`,
5870
{ encoding: "utf-8" },
5971
).trim();
6072

0 commit comments

Comments
 (0)