diff --git a/.github/workflows/qa-sync-with-externalcl.yml b/.github/workflows/qa-sync-with-externalcl.yml index 8ec32aa6c4f..0fe6ce97ee3 100644 --- a/.github/workflows/qa-sync-with-externalcl.yml +++ b/.github/workflows/qa-sync-with-externalcl.yml @@ -4,24 +4,34 @@ on: push: branches: - 'release/2.*' - pull_request: - branches: - - 'release/2.*' - types: - - ready_for_review workflow_dispatch: # Run manually jobs: - tip-tracking-test-prysm: - runs-on: [self-hosted, Erigon2] + sync-with-externalcl: + strategy: + matrix: + include: + - chain: mainnet + client: lighthouse + runner: Erigon2 + reference_data_dir: /opt/erigon-versions/reference-version/datadir + - chain: mainnet + client: prysm + runner: Erigon2 + reference_data_dir: /opt/erigon-versions/reference-version/datadir + - chain: gnosis + client: prysm + runner: Gnosis + reference_data_dir: /opt/erigon-versions/reference-version-2/datadir + runs-on: [ self-hosted, "${{ matrix.runner }}" ] timeout-minutes: 600 env: - ERIGON_REFERENCE_DATA_DIR: /opt/erigon-versions/reference-version/datadir + ERIGON_REFERENCE_DATA_DIR: ${{ matrix.reference_data_dir }} + CL_DATA_DIR: ${{ github.workspace }}/consensus ERIGON_TESTBED_DATA_DIR: /opt/erigon-testbed/datadir ERIGON_QA_PATH: /home/qarunner/erigon-qa - TRACKING_TIME_SECONDS: 14400 # 4 hours - TOTAL_TIME_SECONDS: 28800 # 8 hours - CHAIN: mainnet + TRACKING_TIME_SECONDS: 3600 # 1 hour + TOTAL_TIME_SECONDS: 25200 # 7 hours steps: - name: Check out repository @@ -36,6 +46,19 @@ jobs: make erigon working-directory: ${{ github.workspace }} + - name: Install ${{ matrix.client }} and generate JWT secret + run: | + mkdir -p $CL_DATA_DIR + if [ "${{ matrix.client }}" == "lighthouse" ]; then + curl -LO https://github.com/sigp/lighthouse/releases/download/v7.0.0-beta.0/lighthouse-v7.0.0-beta.0-x86_64-unknown-linux-gnu.tar.gz + tar -xvf lighthouse-v7.0.0-beta.0-x86_64-unknown-linux-gnu.tar.gz -C $CL_DATA_DIR + rm lighthouse-v7.0.0-beta.0-x86_64-unknown-linux-gnu.tar.gz + elif [ "${{ matrix.client }}" == "prysm" ]; then + curl -L https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh -o $CL_DATA_DIR/prysm.sh + chmod +x $CL_DATA_DIR/prysm.sh + fi + openssl rand -hex 32 > $CL_DATA_DIR/jwt.hex + - name: Pause the Erigon instance dedicated to db maintenance run: | python3 $ERIGON_QA_PATH/test_system/db-producer/pause_production.py || true @@ -52,7 +75,8 @@ jobs: # 1. Launch the testbed Erigon instance # 2. Allow time for the Erigon to achieve synchronization # 3. Begin timing the duration that Erigon maintains synchronization - python3 $ERIGON_QA_PATH/test_system/qa-tests/tip-tracking/run_and_check_tip_tracking.py ${{ github.workspace }}/build/bin $ERIGON_REFERENCE_DATA_DIR $TRACKING_TIME_SECONDS $TOTAL_TIME_SECONDS Erigon2 $CHAIN standard_node no_statistics prysm + python3 $ERIGON_QA_PATH/test_system/qa-tests/tip-tracking/run_and_check_tip_tracking.py \ + ${{ github.workspace }}/build/bin $ERIGON_REFERENCE_DATA_DIR $TRACKING_TIME_SECONDS $TOTAL_TIME_SECONDS Erigon2 ${{ matrix.chain }} standard_node no_statistics ${{ matrix.client }} $CL_DATA_DIR # Capture monitoring script exit status test_exit_status=$? @@ -88,14 +112,22 @@ jobs: db_version="no-version" fi - python3 $ERIGON_QA_PATH/test_system/qa-tests/uploads/upload_test_results.py --repo erigon --commit $(git rev-parse HEAD) --branch ${{ github.ref_name }} --test_name tip-tracking --chain $CHAIN --runner ${{ runner.name }} --db_version $db_version --outcome $TEST_RESULT --result_file ${{ github.workspace }}/result-$CHAIN.json + python3 $ERIGON_QA_PATH/test_system/qa-tests/uploads/upload_test_results.py --repo erigon --commit $(git rev-parse HEAD) --branch ${{ github.ref_name }} --test_name tip-tracking --chain ${{ matrix.chain }} --runner ${{ runner.name }} --db_version $db_version --outcome $TEST_RESULT --result_file ${{ github.workspace }}/result-${{ matrix.chain }}.json - name: Upload test results if: steps.test_step.outputs.test_executed == 'true' uses: actions/upload-artifact@v4 with: - name: test-results - path: ${{ github.workspace }}/result-${{ env.CHAIN }}.json + name: test-results-${{ matrix.client }}-${{ matrix.chain }} + path: | + ${{ github.workspace }}/result-${{ matrix.chain }}.json + ${{ matrix.client == 'lighthouse' && '$CL_DATA_DIR/data/beacon/logs/beacon.log' || '' }} + ${{ matrix.client == 'prysm' && '$CL_DATA_DIR/data/beacon.log' || '' }} + + - name: Cleanup consensus runner directory + if: always() + run: | + rm -rf $CL_DATA_DIR - name: Action for Success if: steps.test_step.outputs.TEST_RESULT == 'success'