Skip to content

ci: improve deploy workflows #39

ci: improve deploy workflows

ci: improve deploy workflows #39

Workflow file for this run

---
name: Nightly
on:
schedule:
# Run this workflow every day at 6 AM Paris time (UTC+2).
- cron: 0 6 * * *
workflow_dispatch:
concurrency:
group: nightly-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
ENCLAVE_NAME: cdk
jobs:
compare-configs:
- uses: actions/checkout@v4

Check failure on line 19 in .github/workflows/nightly.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/nightly.yml

Invalid workflow file

You have an error in your yaml syntax on line 19
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
# Deploy components.
- name: Deploy Kurtosis CDK package
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"apply_workload": true,
"args": {
"l1_seconds_per_slot": 1
}
}'
# Compare configs.
- name: Dump configs
working-directory: ./scripts/zkevm-config-diff
run: |
mkdir -p default-configs kurtosis-cdk-configs
sh zkevm_config.sh dump default ./default-configs
echo
sh zkevm_config.sh dump kurtosis-cdk ./kurtosis-cdk-configs
- name: Compare configs
working-directory: ./scripts/zkevm-config-diff
run: sh zkevm_config.sh compare configs ./default-configs ./kurtosis-cdk-configs
- name: Diff configs
working-directory: ./scripts/zkevm-config-diff
run: diff -r ./default-configs ./kurtosis-cdk-configs || true
# Deploy the CDK environment without specifying any parameter file.
configless:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
# Deploy components.
- name: Deploy Kurtosis CDK package
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"apply_workload": true,
"args": {
"l1_seconds_per_slot": 1
}
}'
- name: Inspect enclave
run: kurtosis enclave inspect "${{ env.ENCLAVE_NAME }}"
- name: Monitor verified batches
run: |
rpc_url="$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)"
./.github/scripts/monitor-verified-batches.sh --rpc-url "$rpc_url"
# Deploy the CDK environment in one step.
monolithic:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: 1.21
cache-dependency-path: scripts/zkevm-config-diff/go.sum
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Deploy Kurtosis CDK package
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"apply_workload": true,
"args": {
"l1_seconds_per_slot": 1
}
}'
- name: Inspect enclave
run: kurtosis enclave inspect "${{ env.ENCLAVE_NAME }}"
- name: Monitor verified batches
run: |
rpc_url="$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)"
./.github/scripts/monitor-verified-batches.sh --rpc-url "$rpc_url"
# Deploy the CDK environment incrementally, stage by stage.
incremental:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Disable all deployment steps
run: yq -Y --in-place 'with_entries(if .value | type == "boolean" then .value = false else . end)' params.yml
- name: Deploy L1
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{
"deploy_l1": true,
"args": {"l1_seconds_per_slot": 1}
}'
- name: Deploy zkEVM contracts on L1
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_zkevm_contracts_on_l1": true}'
- name: Deploy zkEVM node and cdk peripheral databases
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_databases": true}'
- name: Deploy CDK central environment
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_cdk_central_environment": true}'
- name: Deploy CDK bridge infrastructure
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_cdk_bridge_infra": true}'
- name: Deploy zkEVM permissionless node
run: |
# Retrieve genesis file.
kurtosis files download "${{ env.ENCLAVE_NAME }}" genesis /tmp
cp /tmp/genesis.json templates/permissionless-node/genesis.json
# Deploy permisionless node.
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_zkevm_permissionless_node": true}'
- name: Deploy CDK erigon node
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_cdk_erigon_node": true}'
- name: Deploy observability stack
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_observability": true}'
- name: Deploy Blockscout stack
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_l2_blockscout": true}'
- name: Deploy ETH load balancer
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"deploy_blutgang": true}'
- name: Apply workload
run: |
kurtosis run --enclave="${{ env.ENCLAVE_NAME }}" --args-file=params.yml . \
'{"apply_workload": true}'
- name: Inspect enclave
run: kurtosis enclave inspect "${{ env.ENCLAVE_NAME }}"
- name: Monitor verified batches
run: |
rpc_url="$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)"
./.github/scripts/monitor-verified-batches.sh --rpc-url "$rpc_url"
# Deploy the CDK environment with the gas token feature enabled.
gas-token:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Deploy Kurtosis CDK package
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"apply_workload": true,
"args": {
"zkevm_use_gas_token_contract": true,
"l1_seconds_per_slot": 1
}
}'
- name: Inspect enclave
run: kurtosis enclave inspect "${{ env.ENCLAVE_NAME }}"
- name: Monitor verified batches
run: |
rpc_url="$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)"
./.github/scripts/monitor-verified-batches.sh --rpc-url "$rpc_url"
# Deploy the CDK environment against a local l1 chain with pre-deployed zkevm contracts.
pre-deployed-contracts:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Disable all deployment steps
run: yq -Y --in-place 'with_entries(if .value | type == "boolean" then .value = false else . end)' params.yml
- name: Deploy L1 and zkEVM contracts
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"deploy_l1": true,
"deploy_zkevm_contracts_on_l1": true,
"args": {
"l1_seconds_per_slot": 1
}
}'
- name: Deploy the rest of the components
run: |
zkevm_rollup_manager_address=$(kurtosis service exec ${{ env.ENCLAVE_NAME }} contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .polygonRollupManagerAddress)
zkevm_rollup_manager_block_number=$(kurtosis service exec ${{ env.ENCLAVE_NAME }} contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .deploymentRollupManagerBlockNumber)
zkevm_global_exit_root_l2_address=$(kurtosis service exec ${{ env.ENCLAVE_NAME }} contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .polygonZkEVMGlobalExitRootL2Address)
polygon_data_committee_address=$(kurtosis service exec ${{ env.ENCLAVE_NAME }} contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .polygonDataCommitteeAddress)
zkevm_admin_address=$(kurtosis service exec ${{ env.ENCLAVE_NAME }} contracts-001 "cat /opt/zkevm/combined.json" | tail -n +2 | jq .admin)
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"deploy_databases": true,
"deploy_cdk_central_environment": true,
"deploy_cdk_bridge_infra": true,
"apply_workload": true,
"args": {
"zkevm_rollup_manager_address": $zkevm_rollup_manager_address,
"zkevm_rollup_manager_block_number": $zkevm_rollup_manager_block_number,
"zkevm_global_exit_root_l2_address": $zkevm_global_exit_root_l2_address,
"polygon_data_committee_address": $polygon_data_committee_address,
"zkevm_admin_address": $zkevm_admin_address
}
}'
- name: Inspect enclave
run: kurtosis enclave inspect "${{ env.ENCLAVE_NAME }}"
- name: Monitor verified batches
run: |
rpc_url="$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)"
./.github/scripts/monitor-verified-batches.sh --rpc-url "$rpc_url"
# Deploy a standalone permisionless node against Sepolia.
permisionless-node:
if: github.repository == '0xPolygon/kurtosis-cdk' # Prevent this job to run on forks.
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Disable all deployment steps
run: yq -Y --in-place 'with_entries(if .value | type == "boolean" then .value = false else . end)' params.yml
- name: Deploy the permisionless node
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"deploy_zkevm_permissionless_node": true,
"args": {
"l1_rpc_url": "${{ secrets.ALCHEMY_SEPOLIA_RPC_URL }}",
"genesis_file": "templates/permissionless-node/test-genesis.json"
}
}'
# Deploy the CDK environment in rollup mode (data availability).
rollup-da-mode:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Deploy Kurtosis CDK package
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"apply_workload": true,
"args": {
"data_availability_mode": "rollup",
"l1_seconds_per_slot": 1
}
}'
- name: Inspect enclave
run: kurtosis enclave inspect "${{ env.ENCLAVE_NAME }}"
- name: Monitor verified batches
run: |
rpc_url="$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)"
./.github/scripts/monitor-verified-batches.sh --rpc-url "$rpc_url"
# Deploy the CDK environment in cdk-validium mode (data availability).
cdk-validium-da-mode:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- name: Install Kurtosis CDK tools
uses: ./.github/actions/setup-kurtosis-cdk
- name: Deploy Kurtosis CDK package
run: |
kurtosis run \
--enclave="${{ env.ENCLAVE_NAME }}" \
--show-enclave-inspect=false \
--args-file=params.yml \
. \
'{
"apply_workload": true,
"args": {
"data_availability_mode": "cdk-validium",
"l1_seconds_per_slot": 1
}
}'
- name: Inspect enclave
run: kurtosis enclave inspect "${{ env.ENCLAVE_NAME }}"
- name: Monitor verified batches
run: |
rpc_url="$(kurtosis port print ${{ env.ENCLAVE_NAME }} cdk-erigon-node-001 http-rpc)"
./.github/scripts/monitor-verified-batches.sh --rpc-url "$rpc_url"