From f1a1da9b22a5f32562e3c8c67f3cc9e6e4caeaf2 Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 1/8] workflows: import from meta-qcom c5ef0066e To get CI going on meta-qcom-distro, copy over the meta-qcom .github/workflows folder revision c5ef0066e [1]. [1] c5ef0066e Enable TPM Stack (#1504) Signed-off-by: Jose Quaresma --- .github/workflows/build-yocto.yml | 297 ++++++++++++++++++++++++++ .github/workflows/monthly.yml | 15 ++ .github/workflows/nightly-build.yml | 34 +++ .github/workflows/pr.yml | 28 +++ .github/workflows/publish-results.yml | 73 +++++++ .github/workflows/push.yml | 31 +++ .github/workflows/repolinter.yml | 31 +++ .github/workflows/stales.yml | 25 +++ .github/workflows/test-pr.yml | 74 +++++++ .github/workflows/test.yml | 270 +++++++++++++++++++++++ 10 files changed, 878 insertions(+) create mode 100644 .github/workflows/build-yocto.yml create mode 100644 .github/workflows/monthly.yml create mode 100644 .github/workflows/nightly-build.yml create mode 100644 .github/workflows/pr.yml create mode 100644 .github/workflows/publish-results.yml create mode 100644 .github/workflows/push.yml create mode 100644 .github/workflows/repolinter.yml create mode 100644 .github/workflows/stales.yml create mode 100644 .github/workflows/test-pr.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml new file mode 100644 index 00000000..b377a4f9 --- /dev/null +++ b/.github/workflows/build-yocto.yml @@ -0,0 +1,297 @@ +name: Build Yocto + +on: + workflow_call: + inputs: + sdk: + required: false + type: string + default: "0" + outputs: + artifacts_url: + description: "URL to retrieve build artifacts" + value: ${{ jobs.create-output.outputs.url }} + +# Concurrency is used to prevent multiple workflows from running for the same PR +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.pull_request.number) || format('push-{0}', github.sha) }} + cancel-in-progress: true + +env: + CACHE_DIR: /efs/qli/meta-qcom + KAS_CLONE_DEPTH: 1 + +jobs: + kas-setup: + if: github.repository_owner == 'qualcomm-linux' + runs-on: [self-hosted, qcom-u2404, amd64] + steps: + - name: Setting up kas-container + run: | + KAS_CONTAINER=$RUNNER_TEMP/kas-container + echo "KAS_CONTAINER=$KAS_CONTAINER" >> $GITHUB_ENV + LATEST=$(git ls-remote --tags --refs --sort="v:refname" https://github.com/siemens/kas | tail -n1 | sed 's/.*\///') + wget -qO ${KAS_CONTAINER} https://raw.githubusercontent.com/siemens/kas/refs/tags/$LATEST/kas-container + chmod +x ${KAS_CONTAINER} + + - uses: actions/checkout@v4 + + - name: Run kas lock + run: | + ${KAS_CONTAINER} lock --update ci/base.yml:ci/qcom-distro.yml + + - name: Upload kas lockfile + uses: actions/upload-artifact@v6 + with: + name: kas-lockfile + path: ci/*.lock.yml + + - name: Upload kas-container + uses: actions/upload-artifact@v4 + with: + name: kas-container + path: ${{ env.KAS_CONTAINER }} + + yocto-run-checks: + needs: kas-setup + if: github.repository_owner == 'qualcomm-linux' + runs-on: [self-hosted, qcom-u2404, amd64] + steps: + - uses: actions/checkout@v4 + + - name: Download kas lockfile + uses: actions/download-artifact@v6 + with: + name: kas-lockfile + path: ci + + - name: Download kas-container + uses: actions/download-artifact@v6 + with: + name: kas-container + path: ${{ runner.temp }} + + - name: Setting up kas-container + run: | + KAS_CONTAINER=$RUNNER_TEMP/kas-container + echo "KAS_CONTAINER=$KAS_CONTAINER" >> $GITHUB_ENV + chmod +x $KAS_CONTAINER + + - name: Run yocto-check-layer + run: | + ci/kas-container-shell-helper.sh ci/yocto-check-layer.sh + + - name: Run Yocto patchreview + run: | + ci/kas-container-shell-helper.sh ci/yocto-patchreview.sh + + compile_warm_up: + needs: [kas-setup, yocto-run-checks] + if: github.repository_owner == 'qualcomm-linux' + runs-on: [self-hosted, qcom-u2404, amd64] + strategy: + fail-fast: true + matrix: + machine: + - rb3gen2-core-kit + - qcom-armv8a + distro: + - name: poky-altcfg + yamlfile: "" + - name: qcom-distro + yamlfile: ':ci/qcom-distro-prop-image.yml' + - name: qcom-distro-catchall + yamlfile: ':ci/qcom-distro-catchall.yml' + - name: performance + yamlfile: ':ci/qcom-distro-prop-image.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 + dirname: "+linux-qcom-rt-6.18" + yamlfile: ":ci/linux-qcom-rt-6.18.yml" + name: ${{ matrix.machine }}/${{ matrix.distro.name }}${{ matrix.kernel.dirname }} + steps: + - uses: actions/checkout@v4 + + - name: Run kas build + uses: ./.github/actions/compile + with: + 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: ${CACHE_DIR} + sdk: ${{inputs.sdk}} + + compile: + needs: compile_warm_up + if: github.repository_owner == 'qualcomm-linux' + runs-on: [self-hosted, qcom-u2404, amd64] + outputs: + url: ${{ steps.compile_kas.outputs.url }} + strategy: + fail-fast: true + matrix: + machine: + - iq-615-evk + - iq-8275-evk + - iq-9075-evk + - iq-x7181-evk + - kaanapali-mtp + - qcm6490-idp + - qcs615-ride + - qcs8300-ride-sx + - qcs9100-ride-sx + - rb1-core-kit + - sm8750-mtp + distro: + - name: poky-altcfg + yamlfile: "" + - name: qcom-distro + yamlfile: ':ci/qcom-distro-prop-image.yml' + - name: qcom-distro-catchall + yamlfile: ':ci/qcom-distro-catchall.yml' + - name: performance + yamlfile: ':ci/qcom-distro-prop-image.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 + dirname: "+linux-qcom-rt-6.18" + yamlfile: ":ci/linux-qcom-rt-6.18.yml" + include: + # Additional builds for specific machines + - machine: qcom-armv8a + distro: + name: qcom-distro + yamlfile: ':ci/qcom-distro-prop-image.yml' + kernel: + type: additional + dirname: "+linux-yocto-dev" + yamlfile: ":ci/linux-yocto-dev.yml" + - machine: iq-9075-evk + distro: + name: qcom-distro + yamlfile: ':ci/qcom-distro-prop-image.yml' + kernel: + type: qcom-next-rt + dirname: "+linux-qcom-next-rt" + yamlfile: ":ci/linux-qcom-next-rt.yml" + - machine: iq-9075-evk + distro: + name: qcom-distro-kvm + yamlfile: ':ci/qcom-distro-kvm.yml' + kernel: + type: default + dirname: "" + yamlfile: "" + - machine: iq-8275-evk + distro: + name: qcom-distro-kvm + yamlfile: ':ci/qcom-distro-kvm.yml' + kernel: + type: default + dirname: "" + yamlfile: "" + - machine: qcom-armv7a + distro: + name: poky-altcfg + yamlfile: '' + kernel: + type: default + dirname: "" + yamlfile: "" + - machine: qcom-armv7a + distro: + name: qcom-distro + yamlfile: ':ci/qcom-distro.yml' + kernel: + type: default + dirname: "" + yamlfile: "" + name: ${{ matrix.machine }}/${{ matrix.distro.name }}${{ matrix.kernel.dirname }} + steps: + - uses: actions/checkout@v4 + + - name: Run kas build + uses: ./.github/actions/compile + id: compile_kas + with: + 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: ${CACHE_DIR} + sdk: ${{inputs.sdk}} + + publish_summary: + needs: compile + runs-on: [self-hosted, qcom-u2404, amd64] + steps: + - name: 'Download build URLs' + uses: actions/download-artifact@v6 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + pattern: build-url* + path: urlfiles + merge-multiple: true + + - name: "Print output" + shell: python + id: print-output + run: | + import os + ftable = {} + oslist = set() + machinelist = set() + for fname in os.listdir("./urlfiles"): + if fname.startswith("build-url"): + b, m, o = fname.split("_", 2) + oslist.add(o) + machinelist.add(m) + url = "" + with open(f"./urlfiles/{fname}", "r") as urlfile: + url = urlfile.read() + if not o in ftable: + ftable.update({o:{m: url}}) + else: + ftable[o].update({m: url}) + + table_str = "| |" + + for m in sorted(machinelist): + table_str += f" {m} |" + + table_str += "\n|" + for i in range(len(machinelist) + 1): + table_str += " ---- |" + + table_str += "\n" + + for o in sorted(ftable.keys()): + table_str += f"| {o} |" + for m in sorted(machinelist): + url = ftable[o].get(m) + if url: + url = url.strip() + table_str += f" [Files]({url}/{o}/{m}/) |" + else: + table_str += " |" + table_str += "\n" + summary_file_name = os.environ.get("GITHUB_STEP_SUMMARY") + if summary_file_name: + with open(summary_file_name, "a") as summaryfile: + summaryfile.write("## Download URLs\n") + summaryfile.write(table_str) + print(table_str) diff --git a/.github/workflows/monthly.yml b/.github/workflows/monthly.yml new file mode 100644 index 00000000..3738f6f8 --- /dev/null +++ b/.github/workflows/monthly.yml @@ -0,0 +1,15 @@ +name: Monthly job + +on: + schedule: + - cron: "22 10 2 * *" # montly job - at "random" time - top of hour can be busy in github + +jobs: + sstate-cache-cleanup: + if: github.repository_owner == 'qualcomm-linux' + runs-on: [self-hosted, qcom-u2404, amd64-ssd] + steps: + - name: Clean up the persistant sstate-cache dir + run: | + # keep current and last month to allow smooth end of month transition + rm -rf /efs/qli/meta-qcom/sstate-cache-$(date -d '2 months ago' '+%Y-%m') diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml new file mode 100644 index 00000000..be189f2e --- /dev/null +++ b/.github/workflows/nightly-build.yml @@ -0,0 +1,34 @@ +name: Nightly Build + +on: + schedule: + # NOTE - changes to the cron spec should be pushed by https://github.com/quic-yocto-ci + # so that build notification emails will be sent out properly. + - cron: "23 23 * * *" # daily job - pick a random "minute" - top of hour can be busy in github + +permissions: + checks: write + pull-requests: write + contents: read + packages: read + +jobs: + build-nightly: + uses: ./.github/workflows/build-yocto.yml + with: + sdk: "1" + test-nightly: + uses: ./.github/workflows/test.yml + needs: build-nightly + secrets: inherit + with: + build_id: ${{ github.run_id }} + publish-test-results: + uses: ./.github/workflows/publish-results.yml + needs: test-nightly + secrets: inherit + with: + workflow_id: ${{ github.run_id }} + event_name: ${{ github.event_name }} + event_file: ${{ github.event_path }} + commit: ${{ github.sha }} diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 00000000..fe893ef1 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,28 @@ +name: Build on PR + +on: + pull_request: + paths-ignore: + - 'README.md' + - 'README' + - 'SECURITY.md' + +permissions: + checks: write + pull-requests: write + contents: read + packages: read + +jobs: + event-file: + name: "Upload event file" + runs-on: ubuntu-latest + steps: + - name: Upload + uses: actions/upload-artifact@v6 + with: + name: Event File + path: ${{ github.event_path }} + build-pr: + uses: ./.github/workflows/build-yocto.yml + diff --git a/.github/workflows/publish-results.yml b/.github/workflows/publish-results.yml new file mode 100644 index 00000000..1567eb85 --- /dev/null +++ b/.github/workflows/publish-results.yml @@ -0,0 +1,73 @@ +name: Publish test results + +on: + workflow_call: + inputs: + workflow_id: + required: true + type: string + event_name: + required: true + type: string + event_file: + required: true + type: string + commit: + required: true + type: string + +permissions: + checks: write + pull-requests: write + contents: read + packages: read + +jobs: + publish-test-results: + name: "Publish Tests Results" + runs-on: ubuntu-latest + steps: + - name: Download result files + uses: actions/download-artifact@v6 + with: + run-id: ${{ inputs.workflow_id }} + path: artifacts + github-token: ${{ github.token }} + + - name: Download result files PR + if: ${{ github.run_id != inputs.workflow_id }} + uses: actions/download-artifact@v6 + with: + path: artifacts + github-token: ${{ github.token }} + + - name: "List files" + id: listfiles + run: | + echo $GITHUB_WORKSPACE + ls -R $GITHUB_WORKSPACE + if ! find "${{ github.workspace }}/artifacts/" -name '*.xml' -print -quit | grep -q .; then + echo "Error: no .xml files found" + exit 1 + fi + + - id: app_token + uses: actions/create-github-app-token@v2 + if: always() + with: + app-id: 2291458 + private-key: ${{ secrets.TEST_REPORTING_APP_TOKEN }} + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2 + if: | + always() + && contains(steps.listfiles.outcome, 'success') + with: + commit: ${{ inputs.commit }} + event_file: ${{ inputs.event_file}} + event_name: ${{ inputs.event_name }} + files: "${{ github.workspace }}/artifacts/**/*.xml" + action_fail: true + action_fail_on_inconclusive: true + github_token: ${{ steps.app_token.outputs.token }} diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml new file mode 100644 index 00000000..f06432de --- /dev/null +++ b/.github/workflows/push.yml @@ -0,0 +1,31 @@ +name: Build on push + +on: + push: + branches: + - master + +permissions: + checks: write + pull-requests: write + contents: read + packages: read + +jobs: + build: + uses: ./.github/workflows/build-yocto.yml + test: + uses: ./.github/workflows/test.yml + needs: [build] + secrets: inherit + with: + build_id: ${{ github.run_id }} + publish-test-results: + uses: ./.github/workflows/publish-results.yml + needs: test + secrets: inherit + with: + workflow_id: ${{ github.run_id }} + event_name: ${{ github.event_name }} + event_file: ${{ github.event_path }} + commit: ${{ github.sha }} diff --git a/.github/workflows/repolinter.yml b/.github/workflows/repolinter.yml new file mode 100644 index 00000000..7102d757 --- /dev/null +++ b/.github/workflows/repolinter.yml @@ -0,0 +1,31 @@ +name: QuIC Organization Repolinter + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +jobs: + repolinter: + if: github.repository_owner == 'qualcomm-linux' + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + - name: Verify repolinter config file is present + id: check_files + uses: andstor/file-existence-action@v3 + with: + files: "repolint.json" + - name: Run Repolinter with local repolint.json + if: steps.check_files.outputs.files_exists == 'true' + uses: todogroup/repolinter-action@v1 + with: + config_file: "repolint.json" + - name: Run Repolinter with default ruleset + if: steps.check_files.outputs.files_exists == 'false' + uses: todogroup/repolinter-action@v1 + with: + config_url: "https://raw.githubusercontent.com/quic/.github/main/repolint.json" diff --git a/.github/workflows/stales.yml b/.github/workflows/stales.yml new file mode 100644 index 00000000..0a8685c0 --- /dev/null +++ b/.github/workflows/stales.yml @@ -0,0 +1,25 @@ +name: 'Close stale issues and pull requests with no recent activity' +on: + schedule: + - cron: "30 1 * * *" + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + stale-issue-message: 'This issue has been marked as stale due to 30 days of inactivity. Please add a comment and close if it is resolved or if it is no longer relevant.' + stale-pr-message: 'This pull request has been marked as stale due to 30 days of inactivity. To prevent automatic closure in 5 days, remove the stale label or add a comment. You can reopen a closed pull request at any time.' + exempt-issue-labels: bug,enhancement + exempt-pr-labels: bug,enhancement + days-before-stale: 30 + days-before-close: 5 + days-before-issue-close: -1 + remove-stale-when-updated: true + remove-issue-stale-when-updated: true + remove-pr-stale-when-updated: true diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml new file mode 100644 index 00000000..b860895f --- /dev/null +++ b/.github/workflows/test-pr.yml @@ -0,0 +1,74 @@ +name: Test PR build + +run-name: "Tests triggered by PR: ${{ github.event.workflow_run.display_title }}" + +on: + workflow_run: + workflows: ["Build on PR"] + types: + - completed + +permissions: + checks: write + pull-requests: write + contents: read + packages: read + +jobs: + test: + if: ${{ github.event.workflow_run.conclusion == 'success' }} + uses: ./.github/workflows/test.yml + secrets: inherit + with: + build_id: ${{ github.event.workflow_run.id }} + + comment-on-pr: + name: "Comment on PR" + needs: test + runs-on: ubuntu-latest + steps: + + - name: Download Result Summary + id: download-result-summary + uses: actions/download-artifact@v6 + with: + artifact-ids: ${{ needs.test.outputs.summary_id }} + path: results_summary + + - name: Download event file + uses: actions/download-artifact@v6 + with: + run-id: ${{ github.event.workflow_run.id }} + path: artifacts + github-token: ${{ github.token }} + + - name: "List files" + run: | + echo $GITHUB_WORKSPACE + ls -R $GITHUB_WORKSPACE + + - name: Prepare PR comment + id: pr_comment_prep + run: | + echo "## Test run [workflow](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" > pr-comment.txt + echo "## Test jobs for commit ${{ github.event.workflow_run.head_sha }}" >> pr-comment.txt + PR_NUMBER=$(cat "artifacts/Event File/event.json" | jq -r ".number") + RESULT_FILE_NAME=$(find ./results_summary/ -type f) + cat "${RESULT_FILE_NAME}" >> pr-comment.txt + echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT + + - name: Comment on PR + uses: thollander/actions-comment-pull-request@v3 + with: + file-path: pr-comment.txt + pr-number: ${{ steps.pr_comment_prep.outputs.pr_number }} + + publish-test-results: + uses: ./.github/workflows/publish-results.yml + secrets: inherit + needs: [test] + with: + commit: ${{ github.event.workflow_run.sha }} + event_file: artifacts/Event File/event.json + event_name: ${{ github.event.workflow_run.event }} + workflow_id: ${{ github.event.workflow_run.id }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..43cac990 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,270 @@ +name: Tests + +on: + workflow_call: + inputs: + build_id: + required: true + type: string + outputs: + summary_id: + description: "ID of the test summary artifact" + value: ${{ jobs.publish-test-summary.outputs.summary_id }} + +jobs: + prepare-boot-jobs: + runs-on: ubuntu-latest + strategy: + matrix: + machine: + - iq-8275-evk + - iq-9075-evk + - qcm6490-idp + - qcs615-ride + - rb3gen2-core-kit + - qcs8300-ride-sx + - qcs9100-ride-sx + - qcom-armv8a + - qcom-armv7a + - rb1-core-kit + distro: + - name: poky-altcfg + - name: qcom-distro + kernel: + - "" + - +linux-qcom-6.18 + exclude: + - distro: poky-altcfg + kernel: +linux-qcom-6.18 + - machine: qcom-armv7a + kernel: +linux-qcom-6.18 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run lava-test-plans + uses: ./.github/actions/lava-test-plans + with: + machine: ${{ matrix.machine }} + distro_name: ${{ matrix.distro.name }} + kernel: ${{ matrix.kernel }} + build_id: ${{ inputs.build_id }} + gh_token: ${{ secrets.GITHUB_TOKEN }} + prefix: boottest + + prepare-boot-job-list: + needs: prepare-boot-jobs + runs-on: ubuntu-latest + outputs: + jobmatrix: ${{ steps.listjobs.outputs.jobmatrix }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: 'Download job templates' + uses: actions/download-artifact@v6 + with: + pattern: boottest-* + + - name: "List jobs" + id: listjobs + uses: ./.github/actions/list-jobs + with: + prefix: "boottest" + build_id: ${{ inputs.build_id }} + gh_token: ${{ secrets.GITHUB_TOKEN }} + + submit-boot-job: + needs: prepare-boot-job-list + runs-on: ubuntu-latest + continue-on-error: true + name: Boot ${{ matrix.target.name }} + strategy: + matrix: ${{ fromJson(needs.prepare-boot-job-list.outputs.jobmatrix) }} + steps: + - name: 'Download job templates' + uses: actions/download-artifact@v6 + with: + pattern: boottest-* + + - name: Submit ${{ matrix.target.name }} + timeout-minutes: 20 + id: submit + uses: foundriesio/lava-action@v9 + with: + lava_token: ${{ secrets.LAVATOKEN }} + lava_url: 'lava.infra.foundries.io' + job_definition: ${{ matrix.target.path }} + wait_for_job: true + fail_action_on_failure: true + fail_action_on_incomplete: true + save_result_as_artifact: true + save_job_details: true + result_file_name: "${{ matrix.target.result_file }}" + - uses: mwasilew/github-action-matrix-outputs-write@v2 + if: always() + id: out + with: + matrix-step-name: ${{ github.job }} + matrix-key: ${{ matrix.target.name }} + artifact-name: ${{ matrix.target.name }} + outputs: |- + result: ${{ steps.submit.outcome }} + + + boot-job-result: + runs-on: ubuntu-latest + needs: [submit-boot-job] + outputs: + boot_result: "${{ steps.print-boot-result.outputs.boot_result }}" + steps: + - uses: cloudposse/github-action-matrix-outputs-read@v1 + id: read + with: + matrix-step-name: "submit-boot-job" + - id: print-boot-result + name: "Print boot result" + run: | + # collapse results of matrix of boot test jobs to a single result + echo '${{ steps.read.outputs.result }}' | yq + BOOT_RESULT=$(echo '${{ steps.read.outputs.result }}' | yq '.[] | first (. != "success")') + if [ -z "$BOOT_RESULT" ]; then + BOOT_RESULT="success" + fi + echo "boot_result=$BOOT_RESULT" + echo "boot_result=$BOOT_RESULT" >> "$GITHUB_OUTPUT" + + prepare-premerge-jobs: + needs: boot-job-result + # run only if boot jobs are successful + if: ${{ needs.boot-job-result.outputs.boot_result == 'success' }} + runs-on: ubuntu-latest + strategy: + matrix: + # only run pre-merge tests on devices available in the LAB + # and "contemporary" - exclude dragonboards + machine: + - iq-9075-evk + - qcs615-ride + - rb3gen2-core-kit + - qcs8300-ride-sx + - qcs9100-ride-sx + - rb1-core-kit + distro: + - name: poky-altcfg + - name: qcom-distro + kernel: + - "" + - +linux-qcom-6.18 + exclude: + - distro: poky-altcfg + kernel: +linux-qcom-6.18 + steps: + - id: print-condition + name: "Print condition" + env: + RESULT: ${{ needs.boot-job-result.outputs.boot_result }} + run: | + echo "${RESULT}" + + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Run lava-test-plans + uses: ./.github/actions/lava-test-plans + with: + machine: ${{ matrix.machine }} + distro_name: ${{ matrix.distro.name }} + kernel: ${{ matrix.kernel }} + build_id: ${{ inputs.build_id }} + gh_token: ${{ secrets.GITHUB_TOKEN }} + prefix: premerge + testplan: pre-merge + + prepare-premerge-job-list: + needs: prepare-premerge-jobs + runs-on: ubuntu-latest + outputs: + jobmatrix: ${{ steps.listjobs.outputs.jobmatrix }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: 'Download job templates' + uses: actions/download-artifact@v6 + with: + pattern: premerge-* + + - name: "List jobs" + id: listjobs + uses: ./.github/actions/list-jobs + with: + prefix: "premerge" + build_id: ${{ inputs.build_id }} + gh_token: ${{ secrets.GITHUB_TOKEN }} + + submit-premerge-job: + needs: prepare-premerge-job-list + runs-on: ubuntu-latest + continue-on-error: true + name: Pre-merge ${{ matrix.target.name }} + strategy: + matrix: ${{ fromJson(needs.prepare-premerge-job-list.outputs.jobmatrix) }} + steps: + - name: 'Download job templates' + uses: actions/download-artifact@v6 + with: + pattern: premerge-* + + - name: Submit ${{ matrix.target.name }} + timeout-minutes: 20 + uses: foundriesio/lava-action@v9 + with: + lava_token: ${{ secrets.LAVATOKEN }} + lava_url: 'lava.infra.foundries.io' + job_definition: ${{ matrix.target.path }} + wait_for_job: true + fail_action_on_failure: true + fail_action_on_incomplete: true + save_result_as_artifact: true + save_job_details: true + result_file_name: "${{ matrix.target.result_file }}" + + publish-test-summary: + name: "Publish Tests Summary" + needs: [submit-premerge-job, submit-boot-job] + if: | + always() + && contains(needs.*.result, 'success') + && !contains(needs.*.result, 'failure') + runs-on: ubuntu-latest + permissions: + checks: write + pull-requests: write + outputs: + summary_id: ${{ steps.generate-summary.outputs.artifact_id }} + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Generate Summary + id: generate-summary + uses: ./.github/actions/test-job-summary + with: + build_id: ${{ github.run_id }} + gh_token: ${{ secrets.GITHUB_TOKEN }} + summary_file_name: test_job_summary + + - name: Download Summary + uses: actions/download-artifact@v6 + with: + artifact-ids: ${{ steps.generate-summary.outputs.artifact_id }} + + - name: Publish Test Job Details + run: | + cat test_job_summary >> $GITHUB_STEP_SUMMARY From 619a6878944c17ecfb0bc1a8f224ad0d9dbb46f4 Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 2/8] workflows: drop unnecessary workflows We can discard the scheduled jobs, nightly-build and monthly, that are already being carried out at meta-qcom ci. Signed-off-by: Jose Quaresma --- .github/workflows/monthly.yml | 15 ------------- .github/workflows/nightly-build.yml | 34 ----------------------------- 2 files changed, 49 deletions(-) delete mode 100644 .github/workflows/monthly.yml delete mode 100644 .github/workflows/nightly-build.yml diff --git a/.github/workflows/monthly.yml b/.github/workflows/monthly.yml deleted file mode 100644 index 3738f6f8..00000000 --- a/.github/workflows/monthly.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Monthly job - -on: - schedule: - - cron: "22 10 2 * *" # montly job - at "random" time - top of hour can be busy in github - -jobs: - sstate-cache-cleanup: - if: github.repository_owner == 'qualcomm-linux' - runs-on: [self-hosted, qcom-u2404, amd64-ssd] - steps: - - name: Clean up the persistant sstate-cache dir - run: | - # keep current and last month to allow smooth end of month transition - rm -rf /efs/qli/meta-qcom/sstate-cache-$(date -d '2 months ago' '+%Y-%m') diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml deleted file mode 100644 index be189f2e..00000000 --- a/.github/workflows/nightly-build.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Nightly Build - -on: - schedule: - # NOTE - changes to the cron spec should be pushed by https://github.com/quic-yocto-ci - # so that build notification emails will be sent out properly. - - cron: "23 23 * * *" # daily job - pick a random "minute" - top of hour can be busy in github - -permissions: - checks: write - pull-requests: write - contents: read - packages: read - -jobs: - build-nightly: - uses: ./.github/workflows/build-yocto.yml - with: - sdk: "1" - test-nightly: - uses: ./.github/workflows/test.yml - needs: build-nightly - secrets: inherit - with: - build_id: ${{ github.run_id }} - publish-test-results: - uses: ./.github/workflows/publish-results.yml - needs: test-nightly - secrets: inherit - with: - workflow_id: ${{ github.run_id }} - event_name: ${{ github.event_name }} - event_file: ${{ github.event_path }} - commit: ${{ github.sha }} From 297ba4d0bfadc6bd54a4458b2b42725a0a8dcde6 Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 3/8] workflows: disable tests The tests workflows are not ready and will be proposed later after the first phase. Signed-off-by: Jose Quaresma --- .github/workflows/push.yml | 15 -- .github/workflows/test-pr.yml | 74 ---------- .github/workflows/test.yml | 270 ---------------------------------- 3 files changed, 359 deletions(-) delete mode 100644 .github/workflows/test-pr.yml delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index f06432de..2e8cbec8 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -14,18 +14,3 @@ permissions: jobs: build: uses: ./.github/workflows/build-yocto.yml - test: - uses: ./.github/workflows/test.yml - needs: [build] - secrets: inherit - with: - build_id: ${{ github.run_id }} - publish-test-results: - uses: ./.github/workflows/publish-results.yml - needs: test - secrets: inherit - with: - workflow_id: ${{ github.run_id }} - event_name: ${{ github.event_name }} - event_file: ${{ github.event_path }} - commit: ${{ github.sha }} diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml deleted file mode 100644 index b860895f..00000000 --- a/.github/workflows/test-pr.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Test PR build - -run-name: "Tests triggered by PR: ${{ github.event.workflow_run.display_title }}" - -on: - workflow_run: - workflows: ["Build on PR"] - types: - - completed - -permissions: - checks: write - pull-requests: write - contents: read - packages: read - -jobs: - test: - if: ${{ github.event.workflow_run.conclusion == 'success' }} - uses: ./.github/workflows/test.yml - secrets: inherit - with: - build_id: ${{ github.event.workflow_run.id }} - - comment-on-pr: - name: "Comment on PR" - needs: test - runs-on: ubuntu-latest - steps: - - - name: Download Result Summary - id: download-result-summary - uses: actions/download-artifact@v6 - with: - artifact-ids: ${{ needs.test.outputs.summary_id }} - path: results_summary - - - name: Download event file - uses: actions/download-artifact@v6 - with: - run-id: ${{ github.event.workflow_run.id }} - path: artifacts - github-token: ${{ github.token }} - - - name: "List files" - run: | - echo $GITHUB_WORKSPACE - ls -R $GITHUB_WORKSPACE - - - name: Prepare PR comment - id: pr_comment_prep - run: | - echo "## Test run [workflow](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" > pr-comment.txt - echo "## Test jobs for commit ${{ github.event.workflow_run.head_sha }}" >> pr-comment.txt - PR_NUMBER=$(cat "artifacts/Event File/event.json" | jq -r ".number") - RESULT_FILE_NAME=$(find ./results_summary/ -type f) - cat "${RESULT_FILE_NAME}" >> pr-comment.txt - echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT - - - name: Comment on PR - uses: thollander/actions-comment-pull-request@v3 - with: - file-path: pr-comment.txt - pr-number: ${{ steps.pr_comment_prep.outputs.pr_number }} - - publish-test-results: - uses: ./.github/workflows/publish-results.yml - secrets: inherit - needs: [test] - with: - commit: ${{ github.event.workflow_run.sha }} - event_file: artifacts/Event File/event.json - event_name: ${{ github.event.workflow_run.event }} - workflow_id: ${{ github.event.workflow_run.id }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 43cac990..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,270 +0,0 @@ -name: Tests - -on: - workflow_call: - inputs: - build_id: - required: true - type: string - outputs: - summary_id: - description: "ID of the test summary artifact" - value: ${{ jobs.publish-test-summary.outputs.summary_id }} - -jobs: - prepare-boot-jobs: - runs-on: ubuntu-latest - strategy: - matrix: - machine: - - iq-8275-evk - - iq-9075-evk - - qcm6490-idp - - qcs615-ride - - rb3gen2-core-kit - - qcs8300-ride-sx - - qcs9100-ride-sx - - qcom-armv8a - - qcom-armv7a - - rb1-core-kit - distro: - - name: poky-altcfg - - name: qcom-distro - kernel: - - "" - - +linux-qcom-6.18 - exclude: - - distro: poky-altcfg - kernel: +linux-qcom-6.18 - - machine: qcom-armv7a - kernel: +linux-qcom-6.18 - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Run lava-test-plans - uses: ./.github/actions/lava-test-plans - with: - machine: ${{ matrix.machine }} - distro_name: ${{ matrix.distro.name }} - kernel: ${{ matrix.kernel }} - build_id: ${{ inputs.build_id }} - gh_token: ${{ secrets.GITHUB_TOKEN }} - prefix: boottest - - prepare-boot-job-list: - needs: prepare-boot-jobs - runs-on: ubuntu-latest - outputs: - jobmatrix: ${{ steps.listjobs.outputs.jobmatrix }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: 'Download job templates' - uses: actions/download-artifact@v6 - with: - pattern: boottest-* - - - name: "List jobs" - id: listjobs - uses: ./.github/actions/list-jobs - with: - prefix: "boottest" - build_id: ${{ inputs.build_id }} - gh_token: ${{ secrets.GITHUB_TOKEN }} - - submit-boot-job: - needs: prepare-boot-job-list - runs-on: ubuntu-latest - continue-on-error: true - name: Boot ${{ matrix.target.name }} - strategy: - matrix: ${{ fromJson(needs.prepare-boot-job-list.outputs.jobmatrix) }} - steps: - - name: 'Download job templates' - uses: actions/download-artifact@v6 - with: - pattern: boottest-* - - - name: Submit ${{ matrix.target.name }} - timeout-minutes: 20 - id: submit - uses: foundriesio/lava-action@v9 - with: - lava_token: ${{ secrets.LAVATOKEN }} - lava_url: 'lava.infra.foundries.io' - job_definition: ${{ matrix.target.path }} - wait_for_job: true - fail_action_on_failure: true - fail_action_on_incomplete: true - save_result_as_artifact: true - save_job_details: true - result_file_name: "${{ matrix.target.result_file }}" - - uses: mwasilew/github-action-matrix-outputs-write@v2 - if: always() - id: out - with: - matrix-step-name: ${{ github.job }} - matrix-key: ${{ matrix.target.name }} - artifact-name: ${{ matrix.target.name }} - outputs: |- - result: ${{ steps.submit.outcome }} - - - boot-job-result: - runs-on: ubuntu-latest - needs: [submit-boot-job] - outputs: - boot_result: "${{ steps.print-boot-result.outputs.boot_result }}" - steps: - - uses: cloudposse/github-action-matrix-outputs-read@v1 - id: read - with: - matrix-step-name: "submit-boot-job" - - id: print-boot-result - name: "Print boot result" - run: | - # collapse results of matrix of boot test jobs to a single result - echo '${{ steps.read.outputs.result }}' | yq - BOOT_RESULT=$(echo '${{ steps.read.outputs.result }}' | yq '.[] | first (. != "success")') - if [ -z "$BOOT_RESULT" ]; then - BOOT_RESULT="success" - fi - echo "boot_result=$BOOT_RESULT" - echo "boot_result=$BOOT_RESULT" >> "$GITHUB_OUTPUT" - - prepare-premerge-jobs: - needs: boot-job-result - # run only if boot jobs are successful - if: ${{ needs.boot-job-result.outputs.boot_result == 'success' }} - runs-on: ubuntu-latest - strategy: - matrix: - # only run pre-merge tests on devices available in the LAB - # and "contemporary" - exclude dragonboards - machine: - - iq-9075-evk - - qcs615-ride - - rb3gen2-core-kit - - qcs8300-ride-sx - - qcs9100-ride-sx - - rb1-core-kit - distro: - - name: poky-altcfg - - name: qcom-distro - kernel: - - "" - - +linux-qcom-6.18 - exclude: - - distro: poky-altcfg - kernel: +linux-qcom-6.18 - steps: - - id: print-condition - name: "Print condition" - env: - RESULT: ${{ needs.boot-job-result.outputs.boot_result }} - run: | - echo "${RESULT}" - - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Run lava-test-plans - uses: ./.github/actions/lava-test-plans - with: - machine: ${{ matrix.machine }} - distro_name: ${{ matrix.distro.name }} - kernel: ${{ matrix.kernel }} - build_id: ${{ inputs.build_id }} - gh_token: ${{ secrets.GITHUB_TOKEN }} - prefix: premerge - testplan: pre-merge - - prepare-premerge-job-list: - needs: prepare-premerge-jobs - runs-on: ubuntu-latest - outputs: - jobmatrix: ${{ steps.listjobs.outputs.jobmatrix }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: 'Download job templates' - uses: actions/download-artifact@v6 - with: - pattern: premerge-* - - - name: "List jobs" - id: listjobs - uses: ./.github/actions/list-jobs - with: - prefix: "premerge" - build_id: ${{ inputs.build_id }} - gh_token: ${{ secrets.GITHUB_TOKEN }} - - submit-premerge-job: - needs: prepare-premerge-job-list - runs-on: ubuntu-latest - continue-on-error: true - name: Pre-merge ${{ matrix.target.name }} - strategy: - matrix: ${{ fromJson(needs.prepare-premerge-job-list.outputs.jobmatrix) }} - steps: - - name: 'Download job templates' - uses: actions/download-artifact@v6 - with: - pattern: premerge-* - - - name: Submit ${{ matrix.target.name }} - timeout-minutes: 20 - uses: foundriesio/lava-action@v9 - with: - lava_token: ${{ secrets.LAVATOKEN }} - lava_url: 'lava.infra.foundries.io' - job_definition: ${{ matrix.target.path }} - wait_for_job: true - fail_action_on_failure: true - fail_action_on_incomplete: true - save_result_as_artifact: true - save_job_details: true - result_file_name: "${{ matrix.target.result_file }}" - - publish-test-summary: - name: "Publish Tests Summary" - needs: [submit-premerge-job, submit-boot-job] - if: | - always() - && contains(needs.*.result, 'success') - && !contains(needs.*.result, 'failure') - runs-on: ubuntu-latest - permissions: - checks: write - pull-requests: write - outputs: - summary_id: ${{ steps.generate-summary.outputs.artifact_id }} - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Generate Summary - id: generate-summary - uses: ./.github/actions/test-job-summary - with: - build_id: ${{ github.run_id }} - gh_token: ${{ secrets.GITHUB_TOKEN }} - summary_file_name: test_job_summary - - - name: Download Summary - uses: actions/download-artifact@v6 - with: - artifact-ids: ${{ steps.generate-summary.outputs.artifact_id }} - - - name: Publish Test Job Details - run: | - cat test_job_summary >> $GITHUB_STEP_SUMMARY From 475d9409933c7694295f7b5e42316dd85100367e Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 4/8] workflows/build-yocto: disable yocto-run-checks The yocto-run-checks step needs adaptations that are not yet complete. We will turn it off since this does not prevent the existing features from working. It will be proposed in the next step. Signed-off-by: Jose Quaresma --- .github/workflows/build-yocto.yml | 35 +------------------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml index b377a4f9..7454b7cb 100644 --- a/.github/workflows/build-yocto.yml +++ b/.github/workflows/build-yocto.yml @@ -52,41 +52,8 @@ jobs: name: kas-container path: ${{ env.KAS_CONTAINER }} - yocto-run-checks: - needs: kas-setup - if: github.repository_owner == 'qualcomm-linux' - runs-on: [self-hosted, qcom-u2404, amd64] - steps: - - uses: actions/checkout@v4 - - - name: Download kas lockfile - uses: actions/download-artifact@v6 - with: - name: kas-lockfile - path: ci - - - name: Download kas-container - uses: actions/download-artifact@v6 - with: - name: kas-container - path: ${{ runner.temp }} - - - name: Setting up kas-container - run: | - KAS_CONTAINER=$RUNNER_TEMP/kas-container - echo "KAS_CONTAINER=$KAS_CONTAINER" >> $GITHUB_ENV - chmod +x $KAS_CONTAINER - - - name: Run yocto-check-layer - run: | - ci/kas-container-shell-helper.sh ci/yocto-check-layer.sh - - - name: Run Yocto patchreview - run: | - ci/kas-container-shell-helper.sh ci/yocto-patchreview.sh - compile_warm_up: - needs: [kas-setup, yocto-run-checks] + needs: kas-setup if: github.repository_owner == 'qualcomm-linux' runs-on: [self-hosted, qcom-u2404, amd64] strategy: From 0336a1d1fc185bf6614ba45bfa05c2630616b719 Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 5/8] workflows: reuse actions We will reuse the actions from the meta-com repository to avoid code duplication. Signed-off-by: Jose Quaresma --- .github/workflows/build-yocto.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml index 7454b7cb..39b29c14 100644 --- a/.github/workflows/build-yocto.yml +++ b/.github/workflows/build-yocto.yml @@ -86,7 +86,7 @@ jobs: - uses: actions/checkout@v4 - name: Run kas build - uses: ./.github/actions/compile + uses: qualcomm-linux/meta-qcom/.github/actions/compile@master with: machine: ${{matrix.machine}} distro_yaml: ${{matrix.distro.yamlfile}} @@ -191,7 +191,7 @@ jobs: - uses: actions/checkout@v4 - name: Run kas build - uses: ./.github/actions/compile + uses: qualcomm-linux/meta-qcom/.github/actions/compile@master id: compile_kas with: machine: ${{matrix.machine}} From 6a446d324201f4ec66822163384970dae14ad5c4 Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 6/8] workflows: change branch names The branch name here is main and not master like in meta-qcom. Signed-off-by: Jose Quaresma --- .github/workflows/push.yml | 2 +- .github/workflows/repolinter.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 2e8cbec8..a3f2d605 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -3,7 +3,7 @@ name: Build on push on: push: branches: - - master + - main permissions: checks: write diff --git a/.github/workflows/repolinter.yml b/.github/workflows/repolinter.yml index 7102d757..aff3ca2e 100644 --- a/.github/workflows/repolinter.yml +++ b/.github/workflows/repolinter.yml @@ -2,9 +2,9 @@ name: QuIC Organization Repolinter on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] workflow_dispatch: jobs: From 8285d24b4a35d26e8dca3fb1b9aba3559ecdcdd1 Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 7/8] workflows/build-yocto: drop poky-altcfg distro We will exercise all qcom-distro distributions variants here. The poky-altcfg is more appropriate for testing the Yocto distributions, and are already tested in the meta-qcom layer. Signed-off-by: Jose Quaresma --- .github/workflows/build-yocto.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml index 39b29c14..b31a0be2 100644 --- a/.github/workflows/build-yocto.yml +++ b/.github/workflows/build-yocto.yml @@ -63,8 +63,6 @@ jobs: - rb3gen2-core-kit - qcom-armv8a distro: - - name: poky-altcfg - yamlfile: "" - name: qcom-distro yamlfile: ':ci/qcom-distro-prop-image.yml' - name: qcom-distro-catchall @@ -118,8 +116,6 @@ jobs: - rb1-core-kit - sm8750-mtp distro: - - name: poky-altcfg - yamlfile: "" - name: qcom-distro yamlfile: ':ci/qcom-distro-prop-image.yml' - name: qcom-distro-catchall @@ -170,14 +166,6 @@ jobs: type: default dirname: "" yamlfile: "" - - machine: qcom-armv7a - distro: - name: poky-altcfg - yamlfile: '' - kernel: - type: default - dirname: "" - yamlfile: "" - machine: qcom-armv7a distro: name: qcom-distro From da27bc51fa6ffe54599a4f8274877c306dbe841e Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Thu, 29 Jan 2026 10:30:06 +0000 Subject: [PATCH 8/8] workflows/build-yocto: add qcom-distro yml local override This change is intended only to have a functional build with minimal modifications and is temporary; it will be reverted in subsequent iterations of the distro ci integration. We need the primary repository to be meta-qcom so we can keep using its github/actions with minimal changes. To do this, we'll first checkout meta-qcom as the primary repository and then meta-qcom-distro inside it. The last part we need for this is the new kas config which will allow us to change the layer structure used by kas here. This configuration has the necessary changes for move the meta-qcom-distro layer as well as the differences of meta-qcom layer. Instead of meta-qcom-distro being an external layer like in meta-qcom ci, it becomes a internal layer of meta-qcom here. Signed-off-by: Jose Quaresma --- .github/workflows/build-yocto.yml | 39 +++++++++++++++++++++++++++++++ ci/qcom-distro.yml | 16 +++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 ci/qcom-distro.yml diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml index b31a0be2..48c2f27a 100644 --- a/.github/workflows/build-yocto.yml +++ b/.github/workflows/build-yocto.yml @@ -35,6 +35,19 @@ jobs: chmod +x ${KAS_CONTAINER} - uses: actions/checkout@v4 + with: + repository: qualcomm-linux/meta-qcom + ref: master + + - uses: actions/checkout@v4 + with: + path: meta-qcom-distro + + - name: Prepare kas qcom-distro yml + run: | + # move meta-qcom-distro layer: from external repo to meta-qcom internal layer + cp ci/qcom-distro.yml ci/qcom-distro-full.yml + cp meta-qcom-distro/ci/qcom-distro.yml ci/ - name: Run kas lock run: | @@ -82,6 +95,19 @@ jobs: name: ${{ matrix.machine }}/${{ matrix.distro.name }}${{ matrix.kernel.dirname }} steps: - uses: actions/checkout@v4 + with: + repository: qualcomm-linux/meta-qcom + ref: master + + - uses: actions/checkout@v4 + with: + path: meta-qcom-distro + + - name: Prepare kas qcom-distro yml + run: | + # move meta-qcom-distro layer: from external repo to meta-qcom internal layer + cp ci/qcom-distro.yml ci/qcom-distro-full.yml + cp meta-qcom-distro/ci/qcom-distro.yml ci/ - name: Run kas build uses: qualcomm-linux/meta-qcom/.github/actions/compile@master @@ -177,6 +203,19 @@ jobs: name: ${{ matrix.machine }}/${{ matrix.distro.name }}${{ matrix.kernel.dirname }} steps: - uses: actions/checkout@v4 + with: + repository: qualcomm-linux/meta-qcom + ref: master + + - uses: actions/checkout@v4 + with: + path: meta-qcom-distro + + - name: Prepare kas qcom-distro yml + run: | + # move meta-qcom-distro layer: from external repo to meta-qcom internal layer + cp ci/qcom-distro.yml ci/qcom-distro-full.yml + cp meta-qcom-distro/ci/qcom-distro.yml ci/ - name: Run kas build uses: qualcomm-linux/meta-qcom/.github/actions/compile@master diff --git a/ci/qcom-distro.yml b/ci/qcom-distro.yml new file mode 100644 index 00000000..04b7ac23 --- /dev/null +++ b/ci/qcom-distro.yml @@ -0,0 +1,16 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/siemens/kas/master/kas/schema-kas.json + +header: + version: 14 + includes: + - qcom-distro-full.yml + +repos: + meta-qcom-distro: + layers: + .: disabled + + meta-qcom: + layers: + .: + meta-qcom-distro: