diff --git a/.github/workflows/ci3.yml b/.github/workflows/ci3.yml index b69fff7b6d32..72207dfc324d 100755 --- a/.github/workflows/ci3.yml +++ b/.github/workflows/ci3.yml @@ -63,6 +63,10 @@ jobs: contains(github.event.pull_request.labels.*.name, 'ci-full') run: echo "CI_FULL=1" >> $GITHUB_ENV + - name: CI Nightly Check + if: contains(github.ref, '-nightly.') + run: echo "CI_NIGHTLY=1" >> $GITHUB_ENV + - name: Setup run: | # Ensure we can SSH into the spot instances we request. @@ -86,6 +90,11 @@ jobs: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} CI: 1 + # nightly test env vars + EXTERNAL_ETHEREUM_HOSTS: "https://json-rpc.${{ secrets.GCP_SEPOLIA_URL }}?key=${{ secrets.GCP_SEPOLIA_API_KEY }},${{ secrets.INFURA_SEPOLIA_URL }}" + EXTERNAL_ETHEREUM_CONSENSUS_HOST: "https://beacon.${{ secrets.GCP_SEPOLIA_URL }}" + EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY: ${{ secrets.GCP_SEPOLIA_API_KEY }} + EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER: "X-goog-api-key" run: | ./ci.sh ec2 diff --git a/.github/workflows/nightly-release-tag.yml b/.github/workflows/nightly-release-tag.yml index e83c5a3d5de5..5b495358afd8 100644 --- a/.github/workflows/nightly-release-tag.yml +++ b/.github/workflows/nightly-release-tag.yml @@ -4,6 +4,10 @@ on: # Run the workflow every night at 2:00 AM UTC. - cron: "0 2 * * *" +# Add permissions for the GitHub Actions bot to push tags +permissions: + contents: write + concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -15,11 +19,10 @@ jobs: - uses: actions/checkout@v4 # Extract the current release version from the manifest. - # Adjust the jq filter if your manifest structure differs. # Then, create a nightly tag using the current version and the current UTC date. - name: Create Nightly Tag run: | - current_version=$(jq -r '.version' .release-please-manifest.json) + current_version=$(jq -r '."."' .release-please-manifest.json) echo "Current version: $current_version" # Format the tag as: -nightly. nightly_tag="${current_version}-nightly.$(date -u +%Y%m%d)" diff --git a/ci3/bootstrap_ec2 b/ci3/bootstrap_ec2 index 8fa1a9661f0d..78f394965496 100755 --- a/ci3/bootstrap_ec2 +++ b/ci3/bootstrap_ec2 @@ -189,6 +189,12 @@ ssh ${ssh_args:-} -F $ci3/aws/build_instance_ssh_config ubuntu@$ip " -e LOCAL_GROUP_ID=\$(id -g) \ -e CI=$CI \ -e CI_FULL=$CI_FULL \ + -e CI_NIGHTLY=${CI_NIGHTLY:-0} \ + -e EXTERNAL_ETHEREUM_HOSTS=${EXTERNAL_ETHEREUM_HOSTS:-} \ + -e EXTERNAL_ETHEREUM_CONSENSUS_HOST=${EXTERNAL_ETHEREUM_CONSENSUS_HOST:-} \ + -e EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY=${EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY:-} \ + -e EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER=${EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER:-} \ + -e L1_DEPLOYMENT_PRIVATE_KEY=${L1_DEPLOYMENT_PRIVATE_KEY:-} \ -e DRY_RUN=${DRY_RUN:-0} \ -e DOCKERHUB_PASSWORD=${DOCKERHUB_PASSWORD:-} \ -e AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-} \ diff --git a/spartan/aztec-network/templates/boot-node.yaml b/spartan/aztec-network/templates/boot-node.yaml index f3d8c05af638..e53ed0ab85d5 100644 --- a/spartan/aztec-network/templates/boot-node.yaml +++ b/spartan/aztec-network/templates/boot-node.yaml @@ -76,7 +76,6 @@ spec: source /shared/config/validator-addresses {{- include "aztec-network.waitForEthereum" . | nindent 14 }} - /scripts/deploy-l1-contracts.sh "{{ .Values.aztec.l1Salt }}" "{{ .Values.ethereum.chainId }}" "$VALIDATOR_ADDRESSES" volumeMounts: - name: scripts-output diff --git a/spartan/aztec-network/values.yaml b/spartan/aztec-network/values.yaml index c86f6d6106f1..27b6cc2d555f 100644 --- a/spartan/aztec-network/values.yaml +++ b/spartan/aztec-network/values.yaml @@ -57,7 +57,7 @@ aztec: proofSubmissionWindow: 64 # in L2 slots, from the start of the epoch to be proven realProofs: false - l1Salt: "42" # leave empty for random salt + l1Salt: "" # leave empty for random salt testAccounts: true l1DeploymentMnemonic: "test test test test test test test test test test test junk" # the mnemonic used when deploying contracts manaTarget: "" # use default value diff --git a/spartan/aztec-network/values/ci-sepolia.yaml b/spartan/aztec-network/values/ci-sepolia.yaml index d6ebd1d24fa6..ed02e14560a5 100644 --- a/spartan/aztec-network/values/ci-sepolia.yaml +++ b/spartan/aztec-network/values/ci-sepolia.yaml @@ -4,6 +4,7 @@ aztec: realProofs: false l1DeploymentMnemonic: "" numberOfDefaultAccounts: 0 + l1Salt: "" network: setupL2Contracts: false @@ -25,8 +26,7 @@ telemetry: validator: l1FixedPriorityFeePerGas: 3 l1GasLimitBufferPercentage: 15 - replicas: 3 - validatorKeys: + replicas: 8 resources: requests: cpu: "200m" @@ -35,6 +35,12 @@ validator: sequencer: enforceTimeTable: false +fullNode: + replicas: 1 + resources: + requests: + memory: "2Gi" + cpu: "200m" bot: followChain: "PENDING" enabled: true diff --git a/spartan/bootstrap.sh b/spartan/bootstrap.sh index bf5b878805a4..b915c783ea90 100755 --- a/spartan/bootstrap.sh +++ b/spartan/bootstrap.sh @@ -63,6 +63,11 @@ function test_cmds { echo "$hash timeout -v 30m ./spartan/bootstrap.sh test-prod-deployment" echo "$hash timeout -v 30m ./spartan/bootstrap.sh test-cli-upgrade-with-lock" fi + + if [ "$CI_NIGHTLY" -eq 1 ]; then + echo "$hash timeout -v 50m ./spartan/bootstrap.sh test-kind-4epochs-sepolia" + echo "$hash timeout -v 30m ./spartan/bootstrap.sh test-kind-proving" + fi } function test { @@ -123,6 +128,16 @@ case "$cmd" in FRESH_INSTALL=${FRESH_INSTALL:-true} INSTALL_METRICS=false \ ./scripts/test_kind.sh src/spartan/4epochs.test.ts ci.yaml four-epochs${NAME_POSTFIX:-} ;; + "test-kind-4epochs-sepolia") + OVERRIDES="bot.enabled=false" \ + FRESH_INSTALL=${FRESH_INSTALL:-true} INSTALL_METRICS=false SEPOLIA_RUN=true \ + ./scripts/test_kind.sh src/spartan/4epochs.test.ts ci-sepolia.yaml four-epochs${NAME_POSTFIX:-} + ;; + "test-kind-proving") + OVERRIDES="bot.enabled=false" \ + FRESH_INSTALL=${FRESH_INSTALL:-true} INSTALL_METRICS=false \ + ./scripts/test_kind.sh src/spartan/proving.test.ts ci.yaml proving${NAME_POSTFIX:-} + ;; "test-kind-transfer") # TODO(#12163) reenable bot once not conflicting with transfer OVERRIDES="blobSink.enabled=true,bot.enabled=false" \ diff --git a/spartan/scripts/deploy_kind.sh b/spartan/scripts/deploy_kind.sh index a957ba252590..4e5ce07bbb1b 100755 --- a/spartan/scripts/deploy_kind.sh +++ b/spartan/scripts/deploy_kind.sh @@ -78,41 +78,31 @@ function generate_overrides { fi } +helm_set_args=( + --set images.aztec.image="aztecprotocol/aztec:$aztec_docker_tag" +) + # Some configuration values are set in the eth-devnet/config/config.yaml file # and are used to generate the genesis.json file. # We need to read these values and pass them into the eth devnet create.sh script # so that it can generate the genesis.json and config.yaml file with the correct values. if [ "$sepolia_deployment" = "true" ]; then echo "Generating sepolia accounts..." - set +x + # Split EXTERNAL_ETHEREUM_HOSTS by comma and take first host + # set +x + export ETHEREUM_HOST=$(echo "$EXTERNAL_ETHEREUM_HOSTS" | cut -d',' -f1) ./prepare_sepolia_accounts.sh "$values_file" 1 "$mnemonic_file" - L1_ACCOUNTS_MNEMONIC=$(cat "$mnemonic_file") - set -x -else - echo "Generating devnet config..." - ./generate_devnet_config.sh "$values_file" -fi + echo "mnemonic: $mnemonic_file" + L1_ACCOUNTS_MNEMONIC="$(cat "$mnemonic_file")" -# Install the Helm chart -echo "Cleaning up any existing Helm releases..." -helm uninstall "$helm_instance" -n "$namespace" 2>/dev/null || true -kubectl delete clusterrole "$helm_instance"-aztec-network-node 2>/dev/null || true -kubectl delete clusterrolebinding "$helm_instance"-aztec-network-node 2>/dev/null || true + # Escape the EXTERNAL_ETHEREUM_HOSTS value for Helm + ESCAPED_HOSTS=$(echo "$EXTERNAL_ETHEREUM_HOSTS" | sed 's/,/\\,/g' | sed 's/=/\\=/g') -helm_set_args=( - --set images.aztec.image="aztecprotocol/aztec:$aztec_docker_tag" -) - -# If this is a sepolia run, we need to write some values -if [ "$sepolia_deployment" = "true" ]; then - set +x - # Escape commas in the EXTERNAL_ETHEREUM_HOSTS value - ESCAPED_HOSTS=$(echo "$EXTERNAL_ETHEREUM_HOSTS" | sed 's/,/\\,/g') helm_set_args+=( - --set "ethereum.execution.externalHosts=$ESCAPED_HOSTS" - --set "ethereum.beacon.externalHost=$EXTERNAL_ETHEREUM_CONSENSUS_HOST" - --set "aztec.l1DeploymentMnemonic=$L1_ACCOUNTS_MNEMONIC" - --set "ethereum.deployL1ContractsPrivateKey=$L1_DEPLOYMENT_PRIVATE_KEY" + --set ethereum.execution.externalHosts="$ESCAPED_HOSTS" + --set ethereum.beacon.externalHost="$EXTERNAL_ETHEREUM_CONSENSUS_HOST" + --set aztec.l1DeploymentMnemonic="$L1_ACCOUNTS_MNEMONIC" + --set ethereum.deployL1ContractsPrivateKey="$L1_DEPLOYMENT_PRIVATE_KEY" ) if [ -n "${EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY:-}" ]; then @@ -122,9 +112,18 @@ if [ "$sepolia_deployment" = "true" ]; then if [ -n "${EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER:-}" ]; then helm_set_args+=(--set "ethereum.beacon.apiKeyHeader=$EXTERNAL_ETHEREUM_CONSENSUS_HOST_API_KEY_HEADER") fi - set -x + # set -x +else + echo "Generating devnet config..." + ./generate_devnet_config.sh "$values_file" fi +# Install the Helm chart +echo "Cleaning up any existing Helm releases..." +helm uninstall "$helm_instance" -n "$namespace" 2>/dev/null || true +kubectl delete clusterrole "$helm_instance"-aztec-network-node 2>/dev/null || true +kubectl delete clusterrolebinding "$helm_instance"-aztec-network-node 2>/dev/null || true + helm upgrade --install "$helm_instance" ../aztec-network \ --namespace "$namespace" \ --create-namespace \ diff --git a/yarn-project/ethereum/src/l1_tx_utils.ts b/yarn-project/ethereum/src/l1_tx_utils.ts index 283dd98f5aea..8ba706185e44 100644 --- a/yarn-project/ethereum/src/l1_tx_utils.ts +++ b/yarn-project/ethereum/src/l1_tx_utils.ts @@ -108,7 +108,7 @@ export const l1TxUtilsConfigMappings: ConfigMappingsType = { maxGwei: { description: 'Maximum gas price in gwei', env: 'L1_GAS_PRICE_MAX', - ...bigintConfigHelper(100n), + ...bigintConfigHelper(500n), }, maxBlobGwei: { description: 'Maximum blob fee per gas in gwei',