Split compile matrix into two batches - #3000
Draft
Viswanath Kraleti (vkraleti) wants to merge 1 commit into
Draft
Conversation
The compile job's reusable-workflow strategy now produces more configurations than the 256-configuration limit for a single matrix. Split it into compile_batch1 and compile_batch2 by machine, since every exclude/include entry pins to one machine, so partitioning preserves exact build coverage across both batches. Signed-off-by: Viswanath Kraleti <[email protected]>
Comment on lines
227
to
+368
| @@ -237,14 +241,6 @@ jobs: | |||
| - iq-x7181-evk | |||
| - kaanapali-mtp | |||
| - qcm6490-idp | |||
| - qcom-armv8a | |||
| - qcs615-ride | |||
| - qcs8300-ride-sx | |||
| - qcs9100-ride-sx | |||
| - rb1-core-kit | |||
| - rb3gen2-core-kit | |||
| - shikra-evk | |||
| - sm8750-mtp | |||
| distro: | |||
| - name: nodistro | |||
| yamlfile: "" | |||
| @@ -278,44 +274,8 @@ jobs: | |||
| name: qcom-distro | |||
| kernel: | |||
| type: default | |||
| - machine: qcom-armv8a | |||
| distro: | |||
| name: nodistro | |||
| kernel: | |||
| type: default | |||
| - machine: qcom-armv8a | |||
| distro: | |||
| name: qcom-distro | |||
| kernel: | |||
| type: default | |||
| - machine: rb3gen2-core-kit | |||
| distro: | |||
| name: nodistro | |||
| kernel: | |||
| type: default | |||
| - machine: rb3gen2-core-kit | |||
| distro: | |||
| name: qcom-distro | |||
| kernel: | |||
| type: default | |||
| include: | |||
| # Additional builds for specific machines | |||
| - machine: qcom-armv8a | |||
| distro: | |||
| name: nodistro-nogl | |||
| yamlfile: ':ci/test-oe-nogl.yml' | |||
| kernel: | |||
| type: default | |||
| dirname: "" | |||
| yamlfile: "" | |||
| - machine: qcom-armv8a | |||
| distro: | |||
| name: qcom-distro | |||
| yamlfile: ':ci/qcom-distro.yml' | |||
| kernel: | |||
| type: additional | |||
| dirname: "_linux-yocto-dev" | |||
| yamlfile: ":ci/linux-yocto-dev.yml" | |||
| - machine: iq-9075-evk | |||
| distro: | |||
| name: qcom-distro | |||
| @@ -332,14 +292,6 @@ jobs: | |||
| type: default | |||
| dirname: "" | |||
| yamlfile: "" | |||
| - machine: rb3gen2-core-kit | |||
| distro: | |||
| name: qcom-distro-kvm | |||
| yamlfile: ':ci/qcom-distro-kvm.yml' | |||
| kernel: | |||
| type: default | |||
| dirname: "" | |||
| yamlfile: "" | |||
| - machine: qcom-armv7a | |||
| distro: | |||
| name: nodistro | |||
| @@ -356,47 +308,168 @@ jobs: | |||
| type: default | |||
| dirname: "" | |||
| yamlfile: "" | |||
| - machine: qcs615-ride | |||
| - machine: iq-9075-evk | |||
| distro: | |||
| name: qcom-distro | |||
| yamlfile: ':ci/qcom-distro.yml' | |||
| kernel: | |||
| type: u-boot-qcom-6.18 | |||
| dirname: "_linux-qcom-6.18_u-boot-qcom" | |||
| yamlfile: ":ci/linux-qcom-6.18.yml:ci/u-boot-qcom.yml" | |||
| - machine: rb3gen2-core-kit | |||
| - machine: iq-615-evk | |||
| distro: | |||
| name: qcom-distro | |||
| yamlfile: ':ci/qcom-distro.yml' | |||
| kernel: | |||
| type: u-boot-qcom-6.18 | |||
| dirname: "_linux-qcom-6.18_u-boot-qcom" | |||
| yamlfile: ":ci/linux-qcom-6.18.yml:ci/u-boot-qcom.yml" | |||
| - machine: iq-9075-evk | |||
| - machine: iq-8275-evk | |||
| distro: | |||
| name: qcom-distro | |||
| yamlfile: ':ci/qcom-distro.yml' | |||
| kernel: | |||
| type: u-boot-qcom-6.18 | |||
| dirname: "_linux-qcom-6.18_u-boot-qcom" | |||
| yamlfile: ":ci/linux-qcom-6.18.yml:ci/u-boot-qcom.yml" | |||
| - machine: iq-615-evk | |||
| - machine: iq-9075-evk-open-fw | |||
| distro: | |||
| name: qcom-distro-kvm | |||
| yamlfile: ':ci/qcom-distro-kvm.yml' | |||
| kernel: | |||
| type: default | |||
| dirname: "" | |||
| yamlfile: "" | |||
| - machine: sdx75-idp | |||
| distro: | |||
| name: nodistro | |||
| yamlfile: "" | |||
| kernel: | |||
| type: default | |||
| dirname: "" | |||
| yamlfile: "" | |||
| uses: ./.github/workflows/compile.yml | |||
| with: | |||
| name: ${{ matrix.machine }}/${{ matrix.distro.name }}${{ matrix.kernel.dirname }} | |||
| enabled: ${{inputs.profile != 'pr' || (matrix.distro.name != 'debug' && matrix.distro.name != 'performance')}} | |||
| # One world build per machine and distro family is enough for compile | |||
| # coverage: nodistro (including the nogl variant) covers the plain OE | |||
| # configuration and qcom-distro-catchall enables a superset of the | |||
| # qcom-distro DISTRO_FEATURES, so the remaining distro and kernel | |||
| # combinations only repeat already-covered world builds. qcom-armv7a has | |||
| # no qcom-distro-catchall variant, so its qcom-distro build is the | |||
| # distro-family world build for that machine. | |||
| world: ${{ (startsWith(matrix.distro.name, 'nodistro') || matrix.distro.name == 'qcom-distro-catchall' || (matrix.machine == 'qcom-armv7a' && matrix.distro.name == 'qcom-distro')) && matrix.kernel.type == 'default' }} | |||
| machine: ${{matrix.machine}} | |||
| distro_yaml: ${{matrix.distro.yamlfile}} | |||
| distro_name: ${{matrix.distro.name}} | |||
| kernel_yaml: ${{matrix.kernel.yamlfile}} | |||
| kernel_dirname: ${{matrix.kernel.dirname}} | |||
| cache_dir: ${{ needs.compile-env.outputs.CACHE_DIR }} | |||
|
|
|||
| compile_batch2: | |||
| needs: [github-cache-check, compile_warm_up, compile-env] | |||
| if: | | |||
| github.repository_owner == 'qualcomm-linux' && | |||
| (inputs.skip_if_github_cached != true || needs.github-cache-check.outputs.cache_hit != 'true') | |||
| strategy: | |||
| fail-fast: false | |||
| matrix: | |||
| machine: | |||
| - qcom-armv8a | |||
| - qcs615-ride | |||
| - qcs8300-ride-sx | |||
| - qcs9100-ride-sx | |||
| - rb1-core-kit | |||
| - rb3gen2-core-kit | |||
| - shikra-evk | |||
| - sm8750-mtp | |||
| distro: | |||
| - name: nodistro | |||
| yamlfile: "" | |||
| - name: qcom-distro | |||
| yamlfile: ':ci/qcom-distro.yml' | |||
| - name: qcom-distro-catchall | |||
| yamlfile: ':ci/qcom-distro-catchall.yml' | |||
| - name: debug | |||
| yamlfile: ':ci/qcom-distro-catchall.yml:ci/debug.yml' | |||
| - name: performance | |||
| yamlfile: ':ci/qcom-distro-catchall.yml:ci/performance.yml' | |||
| kernel: | |||
| - type: default | |||
| dirname: "" | |||
| yamlfile: "" | |||
| - type: 6.18 | |||
| dirname: "_linux-qcom-6.18" | |||
| yamlfile: ":ci/linux-qcom-6.18.yml" | |||
| - type: rt-6.18-distro-kvm | |||
| dirname: "_linux-qcom-rt-6.18_qcom-distro-kvm" | |||
| yamlfile: ":ci/linux-qcom-rt-6.18.yml:ci/qcom-distro-kvm.yml" | |||
| exclude: | |||
| # Exclude jobs from compile_warm_up | |||
| - machine: qcom-armv8a | |||
| distro: | |||
| name: nodistro | |||
| kernel: | |||
| type: default | |||
| - machine: qcom-armv8a | |||
| distro: | |||
| name: qcom-distro | |||
| kernel: | |||
| type: default | |||
| - machine: rb3gen2-core-kit | |||
| distro: | |||
Test Results 117 files 698 suites 9h 29m 24s ⏱️ For more details on these failures, see this check. Results for commit 608b7b6. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The compile job's reusable-workflow strategy now produces more configurations than the 256-configuration limit for a single matrix. Split it into compile_batch1 and compile_batch2 by machine, since every exclude/include entry pins to one machine, so partitioning preserves exact build coverage across both batches.