diff --git a/.github/workflows/ccache-regen.yml b/.github/workflows/ccache-regen.yml index 4dd428c..c8ff746 100644 --- a/.github/workflows/ccache-regen.yml +++ b/.github/workflows/ccache-regen.yml @@ -1,30 +1,65 @@ -name: Regenerate ccache +name: Cache regen on: workflow_dispatch: schedule: - - cron: '0 0 1 * *' # every month + - cron: '0 20 * * *' # each day at 8 PM GMT +# Cancel the workflow if any new changes pushed to a feature branch or the trunk concurrency: - group: ${{ github.repository_id }}-${{ github.workflow }}-${{ github.sha }} + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: - ccache-regen: - runs-on: matterlabs-ci-runner-high-performance + cleanup-ccache: + runs-on: ubuntu-latest + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: Clean up cache + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh cache list + gh cache delete --all || true + + regen-ccache: + needs: cleanup-ccache + strategy: + fail-fast: false # finalize testing of all targets even if one failed + matrix: + include: + - name: "Linux x86 gnu" + runner: [ci-runner-compiler, Linux] + image: ghcr.io/matter-labs/zksync-llvm-runner:latest + target: "x86_64-unknown-linux-gnu" + runs-on: ${{ matrix.runner }} container: - image: ghcr.io/matter-labs/zksync-llvm-runner:latest - options: -m 110g + image: ${{ matrix.image || '' }} # Special workaround to allow matrix builds with optional container + name: ${{ matrix.name }} steps: - name: Checkout uses: actions/checkout@v4 - - name: Build LLVM + - name: Build LLVM for tests + uses: matter-labs/era-compiler-ci/.github/actions/build-llvm@v1 + with: + target-env: ${{ contains(matrix.target, 'musl') && 'musl' || 'gnu' }} + build-type: RelWithDebInfo + save-ccache: 'false' + enable-assertions: 'true' + clone-llvm: 'true' + ccache-key: ${{ format('llvm-{0}-{1}-{2}', runner.os, runner.arch, 'gnu') }} + + - name: Build LLVM for benchmarks uses: matter-labs/era-compiler-ci/.github/actions/build-llvm@v1 with: - enable-tests: true - enable-assertions: true - ccache-key-type: static - save-ccache: true + target-env: ${{ contains(matrix.target, 'musl') && 'musl' || 'gnu' }} + enable-assertions: 'false' + build-type: Release + save-ccache: 'true' + clone-llvm: 'false' + ccache-key: ${{ format('llvm-{0}-{1}-{2}', runner.os, runner.arch, 'gnu') }} diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 310bd15..e70bfa5 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -97,7 +97,7 @@ jobs: target: ${{ needs.target-machine.outputs.* }} with: compiler-tester-repo: ${{ github.event.pull_request.head.repo.full_name }} # required to properly test forks - ccache-key-type: static + ccache-key: 'llvm-Linux-X64-gnu' target-machine: ${{ matrix.target }} # Benchmarks workflow call from the era-compiler-ci repository @@ -110,7 +110,8 @@ jobs: strategy: fail-fast: false matrix: - target: ${{ needs.target-machine.outputs.* }} + target: '${{ needs.target-machine.outputs.* }}' + toolchain: ['ir-llvm'] with: compiler_tester_reference_branch: ${{ github.event.inputs.compiler_tester_reference_branch || 'main' }} compiler_tester_candidate_branch: ${{ github.event.inputs.compiler_tester_candidate_branch || '' }} @@ -119,8 +120,10 @@ jobs: compiler_llvm_benchmark_mode: ${{ github.event.inputs.compiler_llvm_benchmark_mode || '^M^B3' }} compiler_llvm_benchmark_path: ${{ github.event.inputs.compiler_llvm_benchmark_path || '' }} compiler-tester-repo: ${{ github.event.pull_request.head.repo.full_name }} - ccache-key-type: static + ccache-key: 'llvm-Linux-X64-gnu' target-machine: ${{ matrix.target }} + toolchain: ${{ matrix.toolchain }} + environment: ${{ matrix.target == 'eravm' && 'zk_evm' || 'EVMInterpreter' }} # Special job that allows some of the jobs to be skipped or failed # requiring others to be successful