Skip to content

Commit 1841921

Browse files
committed
Merge branch 'master' into sync-noir
* master: (31 commits) feat: Slack message to ci channel tagging owners on flakes. (#12284) fix: slack notify was broken by quoted commit titles revert: "chore: Fix and reenable fees-settings test (#12302)" fix: run arm64 on master (#12307) yolo fix chore: Fix and reenable fees-settings test (#12302) feat!: rename compute_nullifier_without_context (#12308) chore: Lazy loading artifacts everywhere (#12285) chore: Reenable dapp subscription test (#12304) chore: Run prover test with fake proofs when requested (#12305) chore: Do not set CI_FULL outside CI (#12300) chore: new mnemonic deployments on sepolia (#12076) chore!: enable multiple L1 nodes to be used (#11945) chore: remove no longer supported extension from vscode/extension.json (#12303) fix(e2e): p2p_reqresp (#12297) feat: Sync from noir (#12298) chore: enabling `e2e_contract_updates` in CI + nuking irrelevant test (#12293) feat: prepend based merge (#12093) feat: fetch addresses from registry (#12000) feat: live logs (#12271) ...
2 parents b7e7293 + e83fe03 commit 1841921

File tree

519 files changed

+6463
-5138
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

519 files changed

+6463
-5138
lines changed

.github/scripts/wait_for_infra.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ API_KEY=$3
1111
# We retry every 20 seconds, and wait for a total of 5 minutes (15 times)
1212

1313
if [ "$INFRA" == "mainnet-fork" ]; then
14-
export ETHEREUM_HOST="https://$DEPLOY_TAG-mainnet-fork.aztec.network:8545/$API_KEY"
14+
export ETHEREUM_HOSTS="https://$DEPLOY_TAG-mainnet-fork.aztec.network:8545/$API_KEY"
1515
curl -H "Content-Type: application/json" -X POST --data '{"method":"eth_chainId","params":[],"id":49,"jsonrpc":"2.0"}' \
1616
--connect-timeout 30 \
1717
--retry 15 \
1818
--retry-delay 20 \
19-
$ETHEREUM_HOST
19+
$ETHEREUM_HOSTS
2020
elif [ "$INFRA" == "pxe" ]; then
2121
export PXE_URL="https://api.aztec.network/$DEPLOY_TAG/aztec-pxe/$API_KEY/status"
2222
curl \

.github/workflows/ci3.yml

+8-4
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ jobs:
2727
strategy:
2828
fail-fast: false
2929
matrix:
30-
# Only run arm64 build with arm64-ci label.
30+
# Only run arm64 build with arm64-ci label or on master.
3131
# The way to do conditions here is to parse full strings as JSON.
32-
settings: >-
33-
${{ fromJson(contains(github.event.pull_request.labels.*.name, 'arm64-ci') &&
32+
settings: >-
33+
${{ fromJson(
34+
(contains(github.event.pull_request.labels.*.name, 'arm64-ci') || github.ref_name == 'master') &&
3435
'[{"arch":"amd64"},{"arch":"arm64"}]' ||
3536
'[{"arch":"amd64"}]') }}
3637
steps:
@@ -75,6 +76,7 @@ jobs:
7576
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
7677
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
7778
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
79+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
7880
run: |
7981
./ci.sh ec2
8082
@@ -169,6 +171,7 @@ jobs:
169171
INSTANCE_POSTFIX: ${{ matrix.number }}
170172
DRY_RUN: 1
171173
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
174+
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
172175
run: |
173176
./ci.sh ec2-test
174177
@@ -197,7 +200,8 @@ jobs:
197200
run: |
198201
authors=$(git log -1 --pretty=format:'%an <%ae>')
199202
echo "authors=${authors}" >> $GITHUB_OUTPUT
200-
title=$(git log -1 --pretty=format:'%s')
203+
# Note, we have to make sure double quotes don't break our JSON.
204+
title=$(git log -1 --pretty=format:'%s' | sed s/\"/\'/g)
201205
echo "commit_title=${title}" >> $GITHUB_OUTPUT
202206
failed_jobs=""
203207
[ "${{ needs.ci-grind.result }}" = "failure" ] && failed_jobs+="ci-grind"

.github/workflows/devnet-deploy.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ jobs:
152152
153153
docker run --rm --network host $AZTEC_DOCKER_IMAGE bootstrap-network \
154154
--rpc-url http://127.0.0.1:$PXE_PORT \
155-
--l1-rpc-url http://127.0.0.1:$ETHEREUM_PORT \
155+
--l1-rpc-urls http://127.0.0.1:$ETHEREUM_PORT \
156156
--l1-chain-id "$L1_CHAIN_ID" \
157157
--mnemonic "$MNEMONIC" \
158158
--address-index "$ADDRESS_INDEX" \

.github/workflows/network-deploy.yml

+19-8
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ jobs:
116116
TF_STATE_BUCKET: aztec-terraform
117117
GKE_CLUSTER_CONTEXT: "gke_testnet-440309_us-west1-a_${{ inputs.cluster }}"
118118
GCP_API_KEY_HEADER: "X-goog-api-key"
119-
EXTERNAL_ETHEREUM_HOST: "https://json-rpc.${{ secrets.SEPOLIA_EXTERNAL_HOST }}?key=${{ secrets.SEPOLIA_API_KEY }}"
120-
EXTERNAL_ETHEREUM_CONSENSUS_HOST: "https://beacon.${{ secrets.SEPOLIA_EXTERNAL_HOST }}"
119+
EXTERNAL_ETHEREUM_HOSTS: "https://json-rpc.${{ secrets.GCP_SEPOLIA_URL }}?key=${{ secrets.GCP_SEPOLIA_API_KEY }},${{ secrets.INFURA_SEPOLIA_URL }}"
120+
EXTERNAL_ETHEREUM_CONSENSUS_HOST: "https://beacon.${{ secrets.GCP_SEPOLIA_URL }}"
121121

122122
steps:
123123
- name: Checkout code
@@ -168,6 +168,17 @@ jobs:
168168
169169
$REPO/spartan/scripts/generate_devnet_config.sh ${{ env.VALUES_FILE }}
170170
171+
- name: Generate sepolia accounts
172+
id: generate-sepolia-accounts
173+
if: ${{ inputs.sepolia_deployment == 'true' }}
174+
run: |
175+
REPO=$(git rev-parse --show-toplevel)
176+
export FUNDING_PRIVATE_KEY=${{ secrets.SEPOLIA_FUNDING_PRIVATE_KEY }}
177+
export ETHEREUM_HOST=${{ env.EXTERNAL_ETHEREUM_HOST }}
178+
mnemonic=$(bash $REPO/spartan/scripts/prepare_sepolia_accounts.sh ${{ env.VALUES_FILE }} 5)
179+
echo "::add-mask::$mnemonic"
180+
echo "mnemonic=$mnemonic" >> "$GITHUB_OUTPUT"
181+
171182
- name: Setup Terraform
172183
uses: hashicorp/setup-terraform@v2
173184
with:
@@ -187,17 +198,17 @@ jobs:
187198
continue-on-error: true
188199
run: |
189200
if ${{ inputs.sepolia_deployment == 'true' }}; then
190-
export L1_DEPLOYMENT_MNEMONIC="${{ secrets.SEPOLIA_ACCOUNTS_MNEMONIC }}"
201+
export L1_DEPLOYMENT_MNEMONIC="${{ steps.generate-sepolia-accounts.outputs.mnemonic }}"
191202
terraform destroy -auto-approve \
192203
-var="RELEASE_NAME=${{ env.NAMESPACE }}" \
193204
-var="VALUES_FILE=${{ env.VALUES_FILE }}" \
194205
-var="GKE_CLUSTER_CONTEXT=${{ env.GKE_CLUSTER_CONTEXT }}" \
195206
-var="AZTEC_DOCKER_IMAGE=${{ env.AZTEC_DOCKER_IMAGE }}" \
196207
-var="L1_DEPLOYMENT_PRIVATE_KEY=${{ secrets.SEPOLIA_L1_DEPLOYMENT_PRIVATE_KEY }}" \
197208
-var="L1_DEPLOYMENT_MNEMONIC=$L1_DEPLOYMENT_MNEMONIC" \
198-
-var="EXTERNAL_ETHEREUM_HOST=${{ env.EXTERNAL_ETHEREUM_HOST }}" \
209+
-var="EXTERNAL_ETHEREUM_HOSTS=${{ env.EXTERNAL_ETHEREUM_HOSTS }}" \
199210
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST=${{ env.EXTERNAL_ETHEREUM_CONSENSUS_HOST }}" \
200-
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${{ secrets.SEPOLIA_API_KEY }}" \
211+
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${{ secrets.GCP_SEPOLIA_API_KEY }}" \
201212
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER=${{ env.GCP_API_KEY_HEADER }}" \
202213
-lock=${{ inputs.respect_tf_lock }}
203214
else
@@ -214,7 +225,7 @@ jobs:
214225
working-directory: ./spartan/terraform/deploy-release
215226
run: |
216227
if ${{ inputs.sepolia_deployment == 'true' }}; then
217-
export L1_DEPLOYMENT_MNEMONIC="${{ secrets.SEPOLIA_ACCOUNTS_MNEMONIC }}"
228+
export L1_DEPLOYMENT_MNEMONIC="${{ steps.generate-sepolia-accounts.outputs.mnemonic }}"
218229
terraform plan \
219230
-var="RELEASE_NAME=${{ env.NAMESPACE }}" \
220231
-var="VALUES_FILE=${{ env.VALUES_FILE }}" \
@@ -223,9 +234,9 @@ jobs:
223234
-var="L1_DEPLOYMENT_PRIVATE_KEY=${{ secrets.SEPOLIA_L1_DEPLOYMENT_PRIVATE_KEY }}" \
224235
-var="L1_DEPLOYMENT_MNEMONIC=$L1_DEPLOYMENT_MNEMONIC" \
225236
-var="L1_DEPLOYMENT_SALT=${DEPLOYMENT_SALT:-$RANDOM}" \
226-
-var="EXTERNAL_ETHEREUM_HOST=${{ env.EXTERNAL_ETHEREUM_HOST }}" \
237+
-var="EXTERNAL_ETHEREUM_HOSTS=${{ env.EXTERNAL_ETHEREUM_HOSTS }}" \
227238
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST=${{ env.EXTERNAL_ETHEREUM_CONSENSUS_HOST }}" \
228-
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${{ secrets.SEPOLIA_API_KEY }}" \
239+
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${{ secrets.GCP_SEPOLIA_API_KEY }}" \
229240
-var="EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER=${{ env.GCP_API_KEY_HEADER }}" \
230241
${{ contains(env.VALUES_FILE, 'devnet') && '-var="EXPOSE_HTTPS_BOOTNODE=true"' || '' }} \
231242
-out=tfplan \

.github/workflows/nightly-kind-test.yml

+4-5
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ env:
1919
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
2020
BUILD_INSTANCE_SSH_KEY: ${{ secrets.BUILD_INSTANCE_SSH_KEY }}
2121
GIT_COMMIT: ${{ github.event.pull_request.head.sha || github.sha }}
22-
EXTERNAL_ETHEREUM_HOST: "https://json-rpc.${{ secrets.SEPOLIA_EXTERNAL_HOST }}?key=${{ secrets.SEPOLIA_API_KEY }}"
23-
EXTERNAL_ETHEREUM_CONSENSUS_HOST: "https://beacon.${{ secrets.SEPOLIA_EXTERNAL_HOST }}"
22+
EXTERNAL_ETHEREUM_HOSTS: "https://json-rpc.${{ secrets.GCP_SEPOLIA_URL }}?key=${{ secrets.GCP_SEPOLIA_API_KEY }}"
23+
EXTERNAL_ETHEREUM_CONSENSUS_HOST: "https://beacon.${{ secrets.GCP_SEPOLIA_URL }}"
2424
GCP_API_KEY_HEADER: "X-goog-api-key"
2525
jobs:
2626
setup:
@@ -121,12 +121,11 @@ jobs:
121121
docker pull aztecprotocol/end-to-end:${{ env.GIT_COMMIT }}
122122
123123
# Set the sepolia run variables
124-
export EXTERNAL_ETHEREUM_HOST=${{ env.EXTERNAL_ETHEREUM_HOST }}
124+
export EXTERNAL_ETHEREUM_HOSTS=${{ env.EXTERNAL_ETHEREUM_HOSTS }}
125125
export EXTERNAL_ETHEREUM_CONSENSUS_HOST=${{ env.EXTERNAL_ETHEREUM_CONSENSUS_HOST }}
126-
export EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${{ secrets.SEPOLIA_API_KEY }}
126+
export EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${{ secrets.GCP_SEPOLIA_API_KEY }}
127127
export EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER=${{ env.GCP_API_KEY_HEADER }}
128128
export L1_DEPLOYMENT_PRIVATE_KEY=${{ secrets.SEPOLIA_L1_DEPLOYMENT_PRIVATE_KEY }}
129-
export L1_ACCOUNTS_MNEMONIC="${{ secrets.SEPOLIA_ACCOUNTS_MNEMONIC }}"
130129
SEPOLIA_RUN=true INSTALL_METRICS=false ./spartan/scripts/test_kind.sh "./src/spartan/${{ matrix.config.test }}" "${{ matrix.config.values }}"
131130
ci3/cache_upload_flag "$artifact"
132131
fi

.test_patterns.yml

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
# Describes tests that we either:
2+
# - Outright skip.
3+
# - Run and alert owners on failure.
4+
# To outright skip a test add a "skip: true" property.
5+
# Only do this for tests that are currently expected to fail constantly and the noise is unbearable!
6+
# Otherwise, tests must have owner(s). Owners are identified by their Slack id, (profile, three dots, copy member id).
7+
# If there is no owner for failed test the build will fail, regardless of if it matches in this file.
8+
# When a failing test matches one or more of the "regex" properties below,
9+
# a message is sent to slack channel #aztec3-ci tagging the owners.
10+
11+
tests:
12+
# barretenberg
13+
#
14+
# Rare. But I saw it happen twice in 10 CI runs. Then twice in 10000 mainframe runs. Today I can't reproduce.
15+
# Grind with: seq 1 10000 | parallel --bar "barretenberg/cpp/scripts/run_test.sh join_split_example_tests join_split_tests.test_defi_deposit_second_bridge_output_in_use_and_same_virtual_bridge_output_asset_ids >/dev/null"
16+
# Logic failed: field_t::range_constraint
17+
# /home/aztec-dev/aztec-packages/barretenberg/cpp/src/barretenberg/examples/join_split/join_split.test.cpp:1735: Failure
18+
# Value of: result.valid
19+
# Actual: false
20+
# Expected: true
21+
- regex: "join_split_example_tests"
22+
owners:
23+
- "U03JYU7AQET" # luke
24+
25+
# noir
26+
# Something to do with how I run the tests now. Think these are fine in nextest.
27+
- regex: "noir_lsp-.* notifications::notification_tests::test_caches_open_files"
28+
skip: true
29+
owners:
30+
- "UKUMA5J7K" # charlie
31+
- regex: "noir_lsp-.* requests::"
32+
skip: true
33+
owners:
34+
- "UKUMA5J7K" # charlie
35+
# Sometimes see this on ARM. But not when run on it's own...
36+
# FAILED 6a60c4e796ac0aef: noir/scripts/run_test.sh debug-21ff1948430ded06 tests::debug_ram_blowup_regression (code: 101)
37+
# running 1 test
38+
# test tests::debug_ram_blowup_regression has been running for over 60 seconds test tests::debug_ram_blowup_regression ... FAILED
39+
# failures:
40+
# ---- tests::debug_ram_blowup_regression stdout ----
41+
# thread 'tests::debug_ram_blowup_regression' panicked at tooling/debugger/tests/debug.rs:27:14: Could not start debugger: Timeout { expected: "Regex: \".*\Starting debugger.*\"", got: "`^`[?2004l`\r``\r``\n`
42+
# Waiting for lock on Nargo.toml...`\r``\n` ", timeout: 30s }
43+
# note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
44+
# failures:
45+
# tests::debug_ram_blowup_regression
46+
# test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 232 filtered out; finished in 60.34s
47+
- regex: "tests::debug_ram_blowup_regression"
48+
skip: true
49+
owners:
50+
- "UKUMA5J7K" # charlie
51+
52+
# Seen this error on all the below.
53+
# e.g. to grind: seq 1 16 | parallel --bar --tag --halt now,fail=1 ci3/dump_fail "NAME_POSTFIX=_{} yarn-project/end-to-end/scripts/run_test.sh simple e2e_p2p/gossip_network >/dev/null"
54+
# FAIL e2e_p2p/reqresp.test.ts
55+
# ● e2e_p2p_reqresp_tx › should produce an attestation by requesting tx data over the p2p network
56+
57+
# TypeError: Cannot read properties of null (reading 'address')
58+
59+
# 19 |
60+
# 20 | get(): T | undefined {
61+
# > 21 | return this.#db.get(this.#slot);
62+
# | ^
63+
# 22 | }
64+
# 23 |
65+
# 24 | getAsync(): Promise<T | undefined> {
66+
67+
# at LMDBStore.getBinaryFast (../../node_modules/lmdb/read.js:90:9)
68+
# at LMDBStore.get (../../node_modules/lmdb/read.js:334:22)
69+
# at LmdbAztecSingleton.get (../../kv-store/src/lmdb/singleton.ts:21:21)
70+
# at initStoreForRollup (../../kv-store/src/utils.ts:26:82)
71+
# at createStore (../../kv-store/src/lmdb/index.ts:25:12)
72+
# at createArchiver (../../archiver/src/factory.ts:30:25)
73+
# at Function.createAndSync (../../aztec-node/src/aztec-node/server.ts:157:28)
74+
# at createAndSync (fixtures/setup_p2p_test.ts:72:33)
75+
# at async Promise.all (index 0)
76+
# at Object.<anonymous> (e2e_p2p/reqresp.test.ts:66:13)
77+
- regex: "simple e2e_p2p/"
78+
owners:
79+
- "U04DT239VQU" # sean
80+
81+
# FAIL ./flakey_e2e_inclusion_proofs_contract.test.ts
82+
# ● e2e_inclusion_proofs_contract › contract inclusion › proves public deployment of a contract
83+
#
84+
# Undefined argument value of type field
85+
#
86+
# 41 | private encodeArgument(abiType: AbiType, arg: any, name?: string) {
87+
# 42 | if (arg === undefined || arg == null) {
88+
# > 43 | throw new Error(`Undefined argument ${name ?? 'unnamed'} of type ${abiType.kind}`);
89+
# | ^
90+
# 44 | }
91+
# 45 | switch (abiType.kind) {
92+
# 46 | case 'field':
93+
#
94+
# at ArgumentEncoder.encodeArgument (../../stdlib/src/abi/encoder.ts:43:13)
95+
# at ArgumentEncoder.encode (../../stdlib/src/abi/encoder.ts:137:12)
96+
# at encodeArguments (../../stdlib/src/abi/encoder.ts:150:41)
97+
# at computeInitializationHash (../../stdlib/src/contract/contract_address.ts:75:20)
98+
# at getContractInstanceFromDeployParams (../../stdlib/src/contract/contract_instance.ts:124:9)
99+
# at Object.getContractInstanceFromDeployParams (flakey_e2e_inclusion_proofs_contract.test.ts:275:24)
100+
- regex: "simple flakey_e2e_inclusion_proofs_contract"
101+
owners:
102+
- "UKUMA5J7K" # charlie
103+
104+
# FAIL src/test/bb_prover_parity.test.ts (34.059 s)
105+
# prover/bb_prover/parity
106+
# ✕ proves the parity circuits (30003 ms)
107+
#
108+
# ● prover/bb_prover/parity › proves the parity circuits
109+
#
110+
# thrown: "Exceeded timeout of 30000 ms for a test.
111+
# Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."
112+
- regex: "prover-client/src/test/bb_prover_parity.test.ts"
113+
owners:
114+
- "U04TPBU26E8" # palla
115+
- regex: "prover-client/src/proving_broker/broker_prover_facade.test.ts"
116+
owners:
117+
- "U04TPBU26E8" # palla
118+
- regex: "prover-client/src/orchestrator/orchestrator_errors.test.ts"
119+
owners:
120+
- "U04TPBU26E8" # palla
121+
122+
# yarn-project tests
123+
- regex: "p2p/src/services/reqresp/reqresp.test.ts"
124+
owners:
125+
- "U04DT239VQU" # sean
126+
- regex: "sequencer-client/src/slasher/slasher_client.test.ts"
127+
owners:
128+
- "U03E5SYLY3Z" # lasse
129+
130+
# kind tests
131+
- regex: "spartan/bootstrap.sh"
132+
owners:
133+
- "UKUMA5J7K" # charlie
134+
- "U04BM8H25NJ" # adam
135+
136+
# Slack testing.
137+
- regex: "nonsense to match"
138+
owners:
139+
- "UKUMA5J7K" # charlie

0 commit comments

Comments
 (0)