Spread (manual - large/flaky) #7
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
| name: Spread (manual - large/flaky) | |
| on: | |
| pull_request: | |
| # The 3 default types + "labeled" | |
| types: [labeled, opened, reopened, synchronize] | |
| schedule: | |
| # At 03:00 on Wednesday and Sunday. | |
| - cron: "0 3 * * WED,SUN" | |
| workflow_dispatch: | |
| jobs: | |
| # Decide if the tests should be ran | |
| predicate: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| should_run: ${{ steps.eval.outputs.should_run }} | |
| steps: | |
| - id: eval | |
| run: | | |
| # OR's the three different conditions in which this should run: | |
| # - This is an actual scheduled run | |
| # - This is a manually triggered run via the Actions tab | |
| # - This is a PR with the 'PR: Run Manual Spread' label | |
| should_run=${{ contains(github.event.pull_request.labels.*.name, 'PR: Run Manual Spread') || contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }} | |
| echo "should_run=$should_run" >> "$GITHUB_OUTPUT" | |
| snap-build: | |
| needs: predicate | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| # speed up build times by using wheels, when available | |
| - name: Use wheels | |
| run: | | |
| yq e 'del(.parts.snapcraft."build-environment"[] | select(.UV_NO_BINARY == "true"))' -i snap/snapcraft.yaml | |
| - name: Build snap | |
| uses: canonical/action-build@v1 | |
| id: snapcraft | |
| - name: Upload snap artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: snap | |
| path: ${{ steps.snapcraft.outputs.snap }} | |
| - name: Verify snapcraft snap | |
| run: | | |
| sudo snap install --dangerous --classic ${{ steps.snapcraft.outputs.snap }} | |
| kernel-plugins: | |
| needs: [predicate, snap-build] | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: [spread-installed] | |
| steps: | |
| - name: Cleanup job workspace | |
| run: | | |
| rm -rf "${{ github.workspace }}" | |
| mkdir "${{ github.workspace }}" | |
| - name: Checkout snapcraft | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Download snap artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: snap | |
| path: tests | |
| - name: Kernel plugin test | |
| run: | | |
| spread google:ubuntu-22.04-64:tests/spread/plugins/craft-parts/kernel | |
| remote-build: | |
| needs: [predicate, snap-build] | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: [spread-installed] | |
| steps: | |
| - name: Cleanup job workspace | |
| run: | | |
| rm -rf "${{ github.workspace }}" | |
| mkdir "${{ github.workspace }}" | |
| - name: Checkout snapcraft | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Download snap artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: snap | |
| path: tests | |
| - name: remote-build test | |
| env: | |
| LAUNCHPAD_TOKEN: "${{ secrets.LAUNCHPAD_TOKEN }}" | |
| run: | | |
| spread google:ubuntu-22.04-64:tests/spread/core22/remote-build \ | |
| google:ubuntu-24.04-64:tests/spread/core24/remote-build \ | |
| google:fedora-39-64:tests/spread/core24/remote-build:no_platforms | |
| matter-sdk: | |
| needs: [predicate, snap-build] | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: [spread-installed] | |
| steps: | |
| - name: Cleanup job workspace | |
| run: | | |
| rm -rf "${{ github.workspace }}" | |
| mkdir "${{ github.workspace }}" | |
| - name: Checkout snapcraft | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Download snap artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: snap | |
| path: tests | |
| - name: matter-sdk test | |
| run: | | |
| spread \ | |
| google:ubuntu-22.04-64:tests/spread/plugins/craft-parts/matter-sdk \ | |
| google:ubuntu-22.04-64:tests/spread/core24-suites/plugins/matter-sdk | |
| colcon-plugins: | |
| needs: [predicate, snap-build] | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: [spread-installed] | |
| steps: | |
| - name: Cleanup job workspace | |
| run: | | |
| rm -rf "${{ github.workspace }}" | |
| mkdir "${{ github.workspace }}" | |
| - name: Checkout snapcraft | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Download snap artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: snap | |
| path: tests | |
| - name: colcon plugin test | |
| run: | | |
| spread google:ubuntu-22.04-64:tests/spread/core24-suites/plugins/colcon-hello \ | |
| google:ubuntu-22.04-64:tests/spread/core24-suites/plugins/colcon-msg-package \ | |
| google:ubuntu-22.04-64:tests/spread/core24-suites/plugins/colcon-packages-ignore \ | |
| google:ubuntu-22.04-64:tests/spread/core24-suites/plugins/colcon-talker-listener \ | |
| google:ubuntu-22.04-64:tests/spread/plugins/craft-parts/colcon-hello | |
| extensions: | |
| needs: [predicate, snap-build] | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: [spread-installed] | |
| steps: | |
| - name: Cleanup job workspace | |
| run: | | |
| rm -rf "${{ github.workspace }}" | |
| mkdir "${{ github.workspace }}" | |
| - name: Checkout snapcraft | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Download snap artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: snap | |
| path: tests | |
| - name: extensions test | |
| run: | | |
| spread google.*:tests/spread/extensions/ | |
| snapd-bases: | |
| needs: [predicate, snap-build] | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: [spread-installed] | |
| steps: | |
| - name: Cleanup job workspace | |
| run: | | |
| rm -rf "${{ github.workspace }}" | |
| mkdir "${{ github.workspace }}" | |
| - name: Checkout snapcraft | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Download snap artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: snap | |
| path: tests | |
| - name: Spread test | |
| run: | | |
| spread google:ubuntu-22.04-64:tests/spread/snaps/snapd | |
| squid-proxy: | |
| needs: [predicate, snap-build] | |
| if: needs.predicate.outputs.should_run == 'true' | |
| runs-on: [spread-installed] | |
| steps: | |
| - name: Clean up job workspace | |
| run: | | |
| rm -rf "${{ github.workspace }}" | |
| mkdir "${{ github.workspace }}" | |
| - name: Checkout Snapcraft | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| submodules: true | |
| - name: Download snap artifact | |
| uses: actions/download-artifact@v8 | |
| with: | |
| name: snap | |
| path: tests | |
| - name: Spread test | |
| run: | | |
| spread google:ubuntu-24.04-64:tests/spread/core24/squid-proxy google:ubuntu-22.04-64:tests/spread/core22/squid-proxy |