From c22c81cbc1eebff1521a3cdefceb4c287fa8dfe5 Mon Sep 17 00:00:00 2001 From: Jakub Beránek Date: Thu, 4 Apr 2024 14:27:38 +0200 Subject: Generate CI job matrix for PR jobs in Python --- src/ci/github-actions/ci.yml | 27 ++++++++++++------------- src/ci/github-actions/jobs.yml | 46 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 14 deletions(-) create mode 100644 src/ci/github-actions/jobs.yml (limited to 'src/ci/github-actions') diff --git a/src/ci/github-actions/ci.yml b/src/ci/github-actions/ci.yml index 80e23574404..8f8b10ab90e 100644 --- a/src/ci/github-actions/ci.yml +++ b/src/ci/github-actions/ci.yml @@ -340,9 +340,21 @@ concurrency: cancel-in-progress: true jobs: + calculate_matrix: + name: Calculate job matrix + runs-on: ubuntu-latest + outputs: + jobs: ${{ steps.jobs.outputs.jobs }} + steps: + - name: Checkout the source code + uses: actions/checkout@v4 + - name: Calculate the CI job matrix + run: python3 src/ci/scripts/calculate-job-matrix.py >> $GITHUB_OUTPUT + id: jobs pr: <<: *base-ci-job name: PR - ${{ matrix.name }} + needs: [ calculate_matrix ] env: <<: [*shared-ci-variables, *public-variables] PR_CI_JOB: 1 @@ -350,20 +362,7 @@ jobs: continue-on-error: ${{ matrix.name == 'mingw-check-tidy' }} strategy: matrix: - include: - - name: mingw-check - <<: *job-linux-4c - - - name: mingw-check-tidy - <<: *job-linux-4c - - - name: x86_64-gnu-llvm-17 - env: - ENABLE_GCC_CODEGEN: "1" - <<: *job-linux-16c - - - name: x86_64-gnu-tools - <<: *job-linux-16c + include: ${{ fromJSON(needs.calculate_matrix.outputs.jobs) }} auto: <<: *base-ci-job diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml new file mode 100644 index 00000000000..5b0140053d6 --- /dev/null +++ b/src/ci/github-actions/jobs.yml @@ -0,0 +1,46 @@ +x--expand-yaml-anchors--remove: + - &base-job + env: { } + + - &job-linux-4c + os: ubuntu-20.04-4core-16gb + <<: *base-job + + - &job-linux-8c + os: ubuntu-20.04-8core-32gb + <<: *base-job + + - &job-linux-16c + os: ubuntu-20.04-16core-64gb + <<: *base-job + + - &job-macos-xl + os: macos-13 # We use the standard runner for now + <<: *base-job + + - &job-macos-m1 + os: macos-14 + <<: *base-job + + - &job-windows-8c + os: windows-2019-8core-32gb + <<: *base-job + + - &job-windows-16c + os: windows-2019-16core-64gb + <<: *base-job + + - &job-aarch64-linux + os: [ self-hosted, ARM64, linux ] + +pr: + - name: mingw-check + <<: *job-linux-4c + - name: mingw-check-tidy + <<: *job-linux-4c + - name: x86_64-gnu-llvm-17 + env: + ENABLE_GCC_CODEGEN: "1" + <<: *job-linux-16c + - name: x86_64-gnu-tools + <<: *job-linux-16c -- cgit 1.4.1-3-g733a5 From 72104e245bf2cc4ce3e29cf28ebee95b78bcd786 Mon Sep 17 00:00:00 2001 From: Jakub Beránek Date: Mon, 15 Apr 2024 21:21:45 +0200 Subject: Add comments --- src/ci/github-actions/ci.yml | 2 ++ src/ci/github-actions/jobs.yml | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src/ci/github-actions') diff --git a/src/ci/github-actions/ci.yml b/src/ci/github-actions/ci.yml index 8f8b10ab90e..ec65b5f37bd 100644 --- a/src/ci/github-actions/ci.yml +++ b/src/ci/github-actions/ci.yml @@ -340,6 +340,7 @@ concurrency: cancel-in-progress: true jobs: + # The job matrix for `calculate_matrix` is defined in src/ci/github-actions/jobs.yml. calculate_matrix: name: Calculate job matrix runs-on: ubuntu-latest @@ -362,6 +363,7 @@ jobs: continue-on-error: ${{ matrix.name == 'mingw-check-tidy' }} strategy: matrix: + # Check the `calculate_matrix` job to see how is the matrix defined. include: ${{ fromJSON(needs.calculate_matrix.outputs.jobs) }} auto: diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml index 5b0140053d6..7e89eef2670 100644 --- a/src/ci/github-actions/jobs.yml +++ b/src/ci/github-actions/jobs.yml @@ -1,4 +1,8 @@ -x--expand-yaml-anchors--remove: +# This file contains definitions of CI job parameters that are loaded +# dynamically in CI from ci.yml. +# You *do not* need to re-run `src/tools/expand-yaml-anchors` when you +# modify this file. +shared_defs: - &base-job env: { } -- cgit 1.4.1-3-g733a5