diff --git a/.github/workflows/ci_gha.yaml b/.github/workflows/ci_gha.yaml index 3bf3fbcf6e..cd48dd97b0 100644 --- a/.github/workflows/ci_gha.yaml +++ b/.github/workflows/ci_gha.yaml @@ -1,11 +1,14 @@ name: Github Actions on: pull_request: - branches: - - main + branches: ["**"] paths: ".github/**.yaml" +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: lint: name: Lint diff --git a/.github/workflows/ci_levm.yaml b/.github/workflows/ci_levm.yaml index 21e2f0cda3..5b3311521c 100644 --- a/.github/workflows/ci_levm.yaml +++ b/.github/workflows/ci_levm.yaml @@ -9,7 +9,7 @@ on: - "crates/vm/levm/**" concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true env: diff --git a/.github/workflows/ci_skipped.yaml b/.github/workflows/ci_skipped.yaml index 9d3adf9afb..2980f85614 100644 --- a/.github/workflows/ci_skipped.yaml +++ b/.github/workflows/ci_skipped.yaml @@ -15,6 +15,11 @@ on: - '!**/*.rlp' - '!**Dockefile' - '!**Makefile' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: lint: # "Lint" is a required check, don't change the name diff --git a/.github/workflows/daily_reports.yaml b/.github/workflows/daily_reports.yaml new file mode 100644 index 0000000000..4331b23d77 --- /dev/null +++ b/.github/workflows/daily_reports.yaml @@ -0,0 +1,200 @@ +name: Daily Reports + +on: + schedule: + # Every day at UTC midnight + - cron: "0 0 * * 1,2,3,4,5" + workflow_dispatch: + +env: + RUST_VERSION: 1.81.0 + +jobs: + run-hive: + name: Run engine hive simulator to gather coverage information. + runs-on: ubuntu-latest + strategy: + matrix: + include: + - name: "Rpc Compat tests" + file_name: rpc-compat + simulation: ethereum/rpc-compat + - name: "Devp2p eth tests" + file_name: devp2p + simulation: devp2p + - name: "Cancun Engine tests" + file_name: engine + simulation: ethereum/engine + - name: "Sync tests" + file_name: sync + simulation: ethereum/sync + + steps: + - name: Pull image + run: | + docker pull ghcr.io/lambdaclass/ethrex:latest + docker tag ghcr.io/lambdaclass/ethrex:latest ethrex:latest + + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + + - name: Setup Hive + run: make setup-hive + + - name: Run Hive Simulation + run: cd hive && ./hive --client ethrex --sim ${{ matrix.simulation }} --sim.parallelism 4 + continue-on-error: true + + - name: Upload results + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.file_name }}_logs + path: hive/workspace/logs/*-*.json + + hive-report: + name: Generate report and upload to summary and slack + needs: run-hive + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Rustup toolchain install + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ env.RUST_VERSION }} + + - name: Download all results + uses: actions/download-artifact@v4 + with: + path: hive/workspace/logs + pattern: "*_logs" + merge-multiple: true + + - name: Caching + uses: Swatinem/rust-cache@v2 + + - name: Generate the hive report + run: cargo run -p hive_report > results.md + + - name: Post results in summary + run: | + echo "# Hive coverage report" >> $GITHUB_STEP_SUMMARY + cat results.md >> $GITHUB_STEP_SUMMARY + + - name: Post results to ethrex L1 slack channel + env: + url: ${{ secrets.ETHREX_L1_SLACK_WEBHOOK }} + run: sh .github/scripts/publish.sh + + - name: Post results to ethrex L2 slack channel + env: + url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }} + run: sh .github/scripts/publish.sh + + - name: Post results to levm slack channel + env: + url: ${{ secrets.LEVM_SLACK_WEBHOOK }} + run: sh .github/scripts/publish.sh + + loc: + name: Count ethrex loc and generate report + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Rustup toolchain install + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ env.RUST_VERSION }} + + - name: Add Rust Cache + uses: Swatinem/rust-cache@v2 + + - name: Restore cache + id: cache-loc-report + uses: actions/cache@v4 + with: + path: loc_report.json + key: loc-report-${{ github.ref_name }} + restore-keys: | + loc-report- + + - name: Rename cached loc_report.json to loc_report.json.old + if: steps.cache-loc-report.outputs.cache-hit == 'true' + run: mv loc_report.json loc_report.json.old + + - name: Generate the loc report + run: | + make loc + + - name: Save new loc_report.json to cache + if: success() + uses: actions/cache@v4 + with: + path: loc_report.json + key: loc-report-${{ github.ref_name }} + + - name: Post results in summary + run: | + echo "# `ethrex` lines of code report" >> $GITHUB_STEP_SUMMARY + cat loc_report_github.txt >> $GITHUB_STEP_SUMMARY + + - name: Post results to ethrex L1 slack channel + env: + url: ${{ secrets.ETHREX_L1_SLACK_WEBHOOK }} + run: sh .github/scripts/publish_loc.sh + + - name: Post results to ethrex L2 slack channel + env: + url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }} + run: sh .github/scripts/publish_loc.sh + + - name: Post results to levm slack channel + env: + url: ${{ secrets.LEVM_SLACK_WEBHOOK }} + run: sh .github/scripts/publish_loc.sh + + levm-test: + name: Generate Report for LEVM EF Tests + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v4 + + - name: Rustup toolchain install + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ env.RUST_VERSION }} + + - name: Caching + uses: Swatinem/rust-cache@v2 + + - name: Download EF Tests + run: | + cd crates/vm/levm + make download-evm-ef-tests + + - name: Run tests + run: | + cd crates/vm/levm + make generate-evm-ef-tests-report + + - name: Post results in summary + run: | + echo "# Daily LEVM EF Tests Run Report" >> $GITHUB_STEP_SUMMARY + cat cmd/ef_tests/levm/levm_ef_tests_summary_github.txt >> $GITHUB_STEP_SUMMARY + + - name: Post results to ethrex L2 slack channel + env: + url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }} + run: sh .github/scripts/publish_levm_ef_tests_summary.sh + + - name: Post results to levm slack channel + env: + url: ${{ secrets.LEVM_SLACK_WEBHOOK }} + run: sh .github/scripts/publish_levm_ef_tests_summary.sh diff --git a/.github/workflows/hive_coverage.yaml b/.github/workflows/hive_coverage.yaml deleted file mode 100644 index 7d82d40186..0000000000 --- a/.github/workflows/hive_coverage.yaml +++ /dev/null @@ -1,101 +0,0 @@ -name: Daily Hive Coverage - -on: - schedule: - # Every day at UTC midnight - - cron: "0 0 * * 1,2,3,4,5" - workflow_dispatch: - -env: - RUST_VERSION: 1.81.0 - -jobs: - run-hive: - name: Run engine hive simulator to gather coverage information. - runs-on: ubuntu-latest - strategy: - matrix: - include: - - name: "Rpc Compat tests" - file_name: rpc-compat - simulation: ethereum/rpc-compat - - name: "Devp2p eth tests" - file_name: devp2p - simulation: devp2p - - name: "Cancun Engine tests" - file_name: engine - simulation: ethereum/engine - - name: "Sync tests" - file_name: sync - simulation: ethereum/sync - - steps: - - name: Pull image - run: | - docker pull ghcr.io/lambdaclass/ethrex:latest - docker tag ghcr.io/lambdaclass/ethrex:latest ethrex:latest - - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Setup Go - uses: actions/setup-go@v5 - - - name: Setup Hive - run: make setup-hive - - - name: Run Hive Simulation - run: cd hive && ./hive --client ethrex --sim ${{ matrix.simulation }} --sim.parallelism 4 - continue-on-error: true - - - name: Upload results - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.file_name }}_logs - path: hive/workspace/logs/*-*.json - - hive-report: - name: Generate report and upload to summary and slack - needs: run-hive - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Rustup toolchain install - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - - - name: Download all results - uses: actions/download-artifact@v4 - with: - path: hive/workspace/logs - pattern: "*_logs" - merge-multiple: true - - - name: Caching - uses: Swatinem/rust-cache@v2 - - - name: Generate the hive report - run: cargo run -p hive_report > results.md - - - name: Post results in summary - run: | - echo "# Hive coverage report" >> $GITHUB_STEP_SUMMARY - cat results.md >> $GITHUB_STEP_SUMMARY - - - name: Post results to ethrex L1 slack channel - env: - url: ${{ secrets.ETHREX_L1_SLACK_WEBHOOK }} - run: sh .github/scripts/publish.sh - - - name: Post results to ethrex L2 slack channel - env: - url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }} - run: sh .github/scripts/publish.sh - - - name: Post results to levm slack channel - env: - url: ${{ secrets.LEVM_SLACK_WEBHOOK }} - run: sh .github/scripts/publish.sh diff --git a/.github/workflows/levm_reporter.yaml b/.github/workflows/levm_reporter.yaml deleted file mode 100644 index b4e7c00af6..0000000000 --- a/.github/workflows/levm_reporter.yaml +++ /dev/null @@ -1,56 +0,0 @@ -name: Daily LEVM Reporter - -on: - schedule: - # Every day at midnight - - cron: "0 0 * * 1,2,3,4,5" - workflow_dispatch: - -env: - RUST_VERSION: 1.81.0 - -jobs: - ef-test: - name: Generate Report for EF Tests - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Rustup toolchain install - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - - - name: Caching - uses: Swatinem/rust-cache@v2 - - - name: Download EF Tests - run: | - cd crates/vm/levm - make download-evm-ef-tests - - - name: Run tests - run: | - cd crates/vm/levm - make generate-evm-ef-tests-report - - - name: Post results in summary - run: | - echo "# Daily LEVM EF Tests Run Report" >> $GITHUB_STEP_SUMMARY - cat cmd/ef_tests/levm/levm_ef_tests_summary_github.txt >> $GITHUB_STEP_SUMMARY - - - name: Post results to ethrex L1 slack channel - env: - url: ${{ secrets.ETHREX_L1_SLACK_WEBHOOK }} - run: sh .github/scripts/publish_levm_ef_tests_summary.sh - - - name: Post results to ethrex L2 slack channel - env: - url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }} - run: sh .github/scripts/publish_levm_ef_tests_summary.sh - - - name: Post results to levm slack channel - env: - url: ${{ secrets.LEVM_SLACK_WEBHOOK }} - run: sh .github/scripts/publish_levm_ef_tests_summary.sh diff --git a/.github/workflows/lint_pr_title.yml b/.github/workflows/lint_pr_title.yml index 29e9668cff..f673edff58 100644 --- a/.github/workflows/lint_pr_title.yml +++ b/.github/workflows/lint_pr_title.yml @@ -6,6 +6,10 @@ on: - opened - edited +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + jobs: main: name: Validate PR title diff --git a/.github/workflows/loc.yaml b/.github/workflows/loc.yaml deleted file mode 100644 index 5173559c2c..0000000000 --- a/.github/workflows/loc.yaml +++ /dev/null @@ -1,70 +0,0 @@ -name: Daily Lines of Code Report - -on: - schedule: - # Every day at midnight - - cron: "0 0 * * 1,2,3,4,5" - workflow_dispatch: - -env: - RUST_VERSION: 1.81.0 - -jobs: - loc: - name: Count ethrex loc and generate report - runs-on: ubuntu-latest - steps: - - name: Checkout sources - uses: actions/checkout@v4 - - - name: Rustup toolchain install - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - - - name: Add Rust Cache - uses: Swatinem/rust-cache@v2 - - - name: Restore cache - id: cache-loc-report - uses: actions/cache@v4 - with: - path: loc_report.json - key: loc-report-${{ github.ref_name }} - restore-keys: | - loc-report- - - - name: Rename cached loc_report.json to loc_report.json.old - if: steps.cache-loc-report.outputs.cache-hit == 'true' - run: mv loc_report.json loc_report.json.old - - - name: Generate the loc report - run: | - make loc - - - name: Save new loc_report.json to cache - if: success() - uses: actions/cache@v4 - with: - path: loc_report.json - key: loc-report-${{ github.ref_name }} - - - name: Post results in summary - run: | - echo "# `ethrex` lines of code report" >> $GITHUB_STEP_SUMMARY - cat loc_report_github.txt >> $GITHUB_STEP_SUMMARY - - - name: Post results to ethrex L1 slack channel - env: - url: ${{ secrets.ETHREX_L1_SLACK_WEBHOOK }} - run: sh .github/scripts/publish_loc.sh - - - name: Post results to ethrex L2 slack channel - env: - url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }} - run: sh .github/scripts/publish_loc.sh - - - name: Post results to levm slack channel - env: - url: ${{ secrets.LEVM_SLACK_WEBHOOK }} - run: sh .github/scripts/publish_loc.sh