merge queue: embarking unstable (79b3321) and #8112 together #16223
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Test that local testnet starts successfully. | |
name: local testnet | |
on: | |
push: | |
branches: | |
- unstable | |
pull_request: | |
merge_group: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
dockerfile-ubuntu: | |
runs-on: ${{ github.repository == 'sigp/lighthouse' && fromJson('["self-hosted", "linux", "CI", "large"]') || 'ubuntu-latest' }} | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Build Docker image | |
run: | | |
docker build --build-arg FEATURES=portable,spec-minimal -t lighthouse:local . | |
docker save lighthouse:local -o lighthouse-docker.tar | |
- name: Upload Docker image artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: lighthouse-docker | |
path: lighthouse-docker.tar | |
retention-days: 3 | |
run-local-testnet: | |
runs-on: ubuntu-22.04 | |
needs: dockerfile-ubuntu | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Kurtosis | |
run: | | |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list | |
sudo apt update | |
sudo apt install -y kurtosis-cli | |
kurtosis analytics disable | |
- name: Download Docker image artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: lighthouse-docker | |
path: . | |
- name: Load Docker image | |
run: docker load -i lighthouse-docker.tar | |
- name: Start local testnet with Assertoor | |
run: ./start_local_testnet.sh -e local-assertoor -c -a -b false && sleep 60 | |
working-directory: scripts/local_testnet | |
- name: Await Assertoor test result | |
id: assertoor_test_result | |
uses: ethpandaops/assertoor-github-action@v1 | |
with: | |
kurtosis_enclave_name: local-assertoor | |
- name: Stop local testnet and dump logs | |
run: ./stop_local_testnet.sh local-assertoor | |
working-directory: scripts/local_testnet | |
- name: Upload logs artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-local-testnet | |
path: | | |
scripts/local_testnet/logs | |
retention-days: 3 | |
- name: Return Assertoor test result | |
shell: bash | |
run: | | |
test_result="${{ steps.assertoor_test_result.outputs.result }}" | |
test_status=$( | |
cat <<"EOF" | |
${{ steps.assertoor_test_result.outputs.test_overview }} | |
EOF | |
) | |
failed_test_status=$( | |
cat <<"EOF" | |
${{ steps.assertoor_test_result.outputs.failed_test_details }} | |
EOF | |
) | |
echo "Test Result: $test_result" | |
echo "$test_status" | |
if ! [ "$test_result" == "success" ]; then | |
echo "Failed Test Task Status:" | |
echo "$failed_test_status" | |
exit 1 | |
fi | |
doppelganger-protection-success-test: | |
needs: dockerfile-ubuntu | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Kurtosis | |
run: | | |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list | |
sudo apt update | |
sudo apt install -y kurtosis-cli | |
kurtosis analytics disable | |
- name: Download Docker image artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: lighthouse-docker | |
path: . | |
- name: Load Docker image | |
run: docker load -i lighthouse-docker.tar | |
- name: Run the doppelganger protection success test script | |
run: | | |
./doppelganger_protection.sh success | |
working-directory: scripts/tests | |
- name: Upload logs artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-doppelganger-protection-success | |
path: | | |
scripts/local_testnet/logs | |
retention-days: 3 | |
doppelganger-protection-failure-test: | |
needs: dockerfile-ubuntu | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Kurtosis | |
run: | | |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list | |
sudo apt update | |
sudo apt install -y kurtosis-cli | |
kurtosis analytics disable | |
- name: Download Docker image artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: lighthouse-docker | |
path: . | |
- name: Load Docker image | |
run: docker load -i lighthouse-docker.tar | |
- name: Run the doppelganger protection failure test script | |
run: | | |
./doppelganger_protection.sh failure | |
working-directory: scripts/tests | |
- name: Upload logs artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-doppelganger-protection-failure | |
path: | | |
scripts/local_testnet/logs | |
retention-days: 3 | |
# Tests checkpoint syncing to a live network (current fork) and a running devnet (usually next scheduled fork) | |
checkpoint-sync-test: | |
name: checkpoint-sync-test-${{ matrix.network }} | |
runs-on: ubuntu-latest | |
needs: dockerfile-ubuntu | |
if: contains(github.event.pull_request.labels.*.name, 'syncing') | |
continue-on-error: true | |
strategy: | |
matrix: | |
network: [sepolia, devnet] | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Kurtosis | |
run: | | |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list | |
sudo apt update | |
sudo apt install -y kurtosis-cli | |
kurtosis analytics disable | |
- name: Download Docker image artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: lighthouse-docker | |
path: . | |
- name: Load Docker image | |
run: docker load -i lighthouse-docker.tar | |
- name: Run the checkpoint sync test script | |
run: | | |
./checkpoint-sync.sh "sync-${{ matrix.network }}" "checkpoint-sync-config-${{ matrix.network }}.yaml" | |
working-directory: scripts/tests | |
- name: Upload logs artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-checkpoint-sync-${{ matrix.network }} | |
path: | | |
scripts/local_testnet/logs | |
retention-days: 3 | |
# Test syncing from genesis on a local testnet. Aims to cover forward syncing both short and long distances. | |
genesis-sync-test: | |
name: genesis-sync-test-${{ matrix.fork }}-${{ matrix.offline_secs }}s | |
runs-on: ubuntu-latest | |
needs: dockerfile-ubuntu | |
strategy: | |
matrix: | |
fork: [electra, fulu] | |
offline_secs: [120, 300] | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Kurtosis | |
run: | | |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list | |
sudo apt update | |
sudo apt install -y kurtosis-cli | |
kurtosis analytics disable | |
- name: Download Docker image artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: lighthouse-docker | |
path: . | |
- name: Load Docker image | |
run: docker load -i lighthouse-docker.tar | |
- name: Run the genesis sync test script | |
run: | | |
./genesis-sync.sh "sync-${{ matrix.fork }}-${{ matrix.offline_secs }}s" "genesis-sync-config-${{ matrix.fork }}.yaml" "${{ matrix.fork }}" "${{ matrix.offline_secs }}" | |
working-directory: scripts/tests | |
- name: Upload logs artifact | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: logs-genesis-sync-${{ matrix.fork }}-${{ matrix.offline_secs }}s | |
path: | | |
scripts/local_testnet/logs | |
retention-days: 3 | |
# This job succeeds ONLY IF all others succeed. It is used by the merge queue to determine whether | |
# a PR is safe to merge. New jobs should be added here. | |
local-testnet-success: | |
name: local-testnet-success | |
runs-on: ubuntu-latest | |
needs: [ | |
'dockerfile-ubuntu', | |
'run-local-testnet', | |
'doppelganger-protection-success-test', | |
'doppelganger-protection-failure-test', | |
'genesis-sync-test' | |
] | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Check that success job is dependent on all others | |
run: | | |
exclude_jobs='checkpoint-sync-test' | |
./scripts/ci/check-success-job.sh ./.github/workflows/local-testnet.yml local-testnet-success "$exclude_jobs" |