Skip to content

Spread (manual - large/flaky) #7

Spread (manual - large/flaky)

Spread (manual - large/flaky) #7

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