diff --git a/.github/workflows/devnet-deploy.yml b/.github/workflows/devnet-deploy.yml index 04a22d5713f..127f49b3143 100644 --- a/.github/workflows/devnet-deploy.yml +++ b/.github/workflows/devnet-deploy.yml @@ -26,6 +26,11 @@ on: description: Whether to deploy to Sepolia required: false default: "false" + ref: + description: The branch name to deploy from + required: false + type: string + default: "master" concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -52,6 +57,8 @@ jobs: respect_tf_lock: ${{ github.event.inputs.respect_tf_lock }} run_terraform_destroy: "true" sepolia_deployment: ${{ github.event.inputs.sepolia_deployment }} + ref: ${{ github.event.inputs.ref }} + secrets: GCP_SA_KEY: ${{ secrets.GCP_SA_KEY }} diff --git a/.github/workflows/network-deploy.yml b/.github/workflows/network-deploy.yml index 77f92c07841..0ff2fc37dac 100644 --- a/.github/workflows/network-deploy.yml +++ b/.github/workflows/network-deploy.yml @@ -146,6 +146,18 @@ jobs: echo "::add-mask::$(gcloud secrets versions access latest --secret=${{ env.DEPLOYMENT_MNEMONIC_SECRET_NAME }})" echo "mnemonic=$(gcloud secrets versions access latest --secret=${{ env.DEPLOYMENT_MNEMONIC_SECRET_NAME }})" >> "$GITHUB_OUTPUT" + - name: Generate eth devnet config + id: generate-eth-devnet-config + run: | + REPO=$(git rev-parse --show-toplevel) + + export VALUES_PATH="$REPO/spartan/aztec-network/values/${{ env.VALUES_FILE }}" + export DEFAULT_VALUES_PATH="$REPO/spartan/aztec-network/values.yaml" + + export MNEMONIC=${{ steps.get-mnemonic.outputs.mnemonic }} + + $REPO/yarn-project/end-to-end/scripts/bash/generate_devnet_config.sh + - name: Setup Terraform uses: hashicorp/setup-terraform@v2 with: @@ -156,7 +168,7 @@ jobs: run: | terraform init \ -backend-config="bucket=${{ env.TF_STATE_BUCKET }}" \ - -backend-config="prefix=network-deploy/${{ env.REGION }}/${{ env.CLUSTER_NAME }}/${{ env.NAMESPACE }}/terraform.tfstate" \ + -backend-config="prefix=network-deploy/${{ env.REGION }}/${{ env.CLUSTER_NAME }}/${{ env.NAMESPACE }}/terraform.tfstate" - name: Terraform Destroy working-directory: ./spartan/terraform/deploy-release @@ -182,7 +194,7 @@ jobs: -var="VALUES_FILE=${{ env.VALUES_FILE }}" \ -var="GKE_CLUSTER_CONTEXT=${{ env.GKE_CLUSTER_CONTEXT }}" \ -var="AZTEC_DOCKER_IMAGE=${{ env.AZTEC_DOCKER_IMAGE }}" \ - -var="L1_DEPLOYMENT_MNEMONIC=${{ steps.get-mnemonic.outputs.mnemonic }}" + -var="L1_DEPLOYMENT_MNEMONIC=${{ steps.get-mnemonic.outputs.mnemonic }}" \ -lock=${{ inputs.respect_tf_lock }} fi diff --git a/spartan/aztec-network/eth-devnet/create.sh b/spartan/aztec-network/eth-devnet/create.sh index 286a0a5e113..954b1bcfbb4 100755 --- a/spartan/aztec-network/eth-devnet/create.sh +++ b/spartan/aztec-network/eth-devnet/create.sh @@ -10,13 +10,13 @@ MNEMONIC=${MNEMONIC:-"test test test test test test test test test test test jun BLOCK_TIME=${BLOCK_TIME:-"12"} GAS_LIMIT=${GAS_LIMIT:-"1000000000"} CHAIN_ID=${CHAIN_ID:-"1337"} +XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-"$HOME/.config"} # Install cast if it is not installed if ! command -v cast &> /dev/null; then curl -L https://foundry.paradigm.xyz | bash - ~/.foundry/bin/foundryup ## add cast to path - export PATH="$PATH:~/.foundry/bin" + $HOME/.foundry/bin/foundryup && export PATH="$PATH:$HOME/.foundry/bin" || $XDG_CONFIG_HOME/.foundry/bin/foundryup && export PATH="$PATH:$XDG_CONFIG_HOME/.foundry/bin" fi # Function to create execution genesis diff --git a/yarn-project/end-to-end/scripts/bash/generate_devnet_config.sh b/yarn-project/end-to-end/scripts/bash/generate_devnet_config.sh new file mode 100755 index 00000000000..38c0991587b --- /dev/null +++ b/yarn-project/end-to-end/scripts/bash/generate_devnet_config.sh @@ -0,0 +1,21 @@ +#!/bin/bash +REPO=$(git rev-parse --show-toplevel) + +source "$REPO/yarn-project/end-to-end/scripts/bash/read_values_file.sh" + +export NUMBER_OF_KEYS=$(read_values_file "validator.replicas") +export EXTRA_ACCOUNTS=$(read_values_file "ethereum.extraAccounts") +export MNEMONIC=${MNEMONIC:-$(read_values_file "aztec.l1DeploymentMnemonic")} +export BLOCK_TIME=$(read_values_file "ethereum.blockTime") +export GAS_LIMIT=$(read_values_file "ethereum.gasLimit") +export CHAIN_ID=$(read_values_file "ethereum.chainId") + +echo "Generating eth devnet config..." +NUMBER_OF_KEYS=$((NUMBER_OF_KEYS + EXTRA_ACCOUNTS)) +echo "NUMBER_OF_KEYS: $NUMBER_OF_KEYS" +echo "MNEMONIC: $MNEMONIC" +echo "BLOCK_TIME: $BLOCK_TIME" +echo "GAS_LIMIT: $GAS_LIMIT" +echo "CHAIN_ID: $CHAIN_ID" + +$REPO/spartan/aztec-network/eth-devnet/create.sh \ No newline at end of file diff --git a/yarn-project/end-to-end/scripts/bash/read_values_file.sh b/yarn-project/end-to-end/scripts/bash/read_values_file.sh new file mode 100755 index 00000000000..260a165cb2d --- /dev/null +++ b/yarn-project/end-to-end/scripts/bash/read_values_file.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +function read_values_file() { + local key="$1" + + value=$(yq -r ".$key" "$VALUES_PATH") + if [ -z "$value" ] || [ "$value" = "null" ]; then + value=$(yq -r ".$key" "$DEFAULT_VALUES_PATH") + fi + echo "$value" +} + diff --git a/yarn-project/end-to-end/scripts/network_test.sh b/yarn-project/end-to-end/scripts/network_test.sh index 38f872df458..a98a7887ec4 100755 --- a/yarn-project/end-to-end/scripts/network_test.sh +++ b/yarn-project/end-to-end/scripts/network_test.sh @@ -133,42 +133,17 @@ if [ -z "${CHAOS_VALUES:-}" ] && [ "$INSTALL_CHAOS_MESH" = "true" ]; then kubectl delete networkchaos --all --all-namespaces fi -VALUES_PATH="$REPO/spartan/aztec-network/values/$VALUES_FILE" -DEFAULT_VALUES_PATH="$REPO/spartan/aztec-network/values.yaml" +export VALUES_PATH="$REPO/spartan/aztec-network/values/$VALUES_FILE" +export DEFAULT_VALUES_PATH="$REPO/spartan/aztec-network/values.yaml" -function read_values_file() { - local key="$1" - - value=$(yq -r ".$key" "$VALUES_PATH") - if [ -z "$value" ] || [ "$value" = "null" ]; then - value=$(yq -r ".$key" "$DEFAULT_VALUES_PATH") - fi - echo "$value" -} +# Load the read_values_file.sh script +source "$REPO/yarn-project/end-to-end/scripts/bash/read_values_file.sh" ## 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. -function generate_eth_devnet_config() { - export NUMBER_OF_KEYS=$(read_values_file "validator.replicas") - export MNEMONIC=$(read_values_file "aztec.l1DeploymentMnemonic") - export BLOCK_TIME=$(read_values_file "ethereum.blockTime") - export GAS_LIMIT=$(read_values_file "ethereum.gasLimit") - export CHAIN_ID=$(read_values_file "ethereum.chainId") - export EXTRA_ACCOUNTS=$(read_values_file "ethereum.extraAccounts") - - echo "Generating eth devnet config..." - NUMBER_OF_KEYS=$((NUMBER_OF_KEYS + EXTRA_ACCOUNTS)) - echo "NUMBER_OF_KEYS: $NUMBER_OF_KEYS" - echo "MNEMONIC: $MNEMONIC" - echo "BLOCK_TIME: $BLOCK_TIME" - echo "GAS_LIMIT: $GAS_LIMIT" - echo "CHAIN_ID: $CHAIN_ID" - - $REPO/spartan/aztec-network/eth-devnet/create.sh -} -generate_eth_devnet_config +$REPO/yarn-project/end-to-end/scripts/bash/generate_devnet_config.sh # Install the Helm chart helm upgrade --install spartan "$REPO/spartan/aztec-network/" \