Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
b1a6b82
ci: test on different architectures
james-garner-canonical Oct 17, 2025
5ae71ca
ci: always use go-version-file, since custom runner doesn't have go
james-garner-canonical Oct 17, 2025
6fdf5cc
ci: build on default github runners for target architecture
james-garner-canonical Nov 21, 2025
fa588df
ci: bump workflow versions per main
james-garner-canonical Nov 21, 2025
4be7360
chore: merge main
james-garner-canonical Nov 21, 2025
bc9adc0
ci: explicitly install go for architecture due to known issue
james-garner-canonical Nov 21, 2025
ef4b938
ci: move uninstalling ubuntu-latest packages to runner specific step
james-garner-canonical Nov 23, 2025
ba8f1b0
ci: use runner.environment for conditional step
james-garner-canonical Nov 23, 2025
07cf9e6
ci: patch spread.yaml to avoid current failure on self-hosted runner
james-garner-canonical Nov 23, 2025
fc2f86d
test: update spread tests that use k8s incidentally to use lxd instead
james-garner-canonical Nov 28, 2025
e6ea7c0
test: update test conditions to match changes
james-garner-canonical Nov 28, 2025
38259ca
test: don't expect rockcraft with machine profile
james-garner-canonical Nov 28, 2025
62548b3
test: drop line that should have been removed
james-garner-canonical Nov 28, 2025
ca78a3b
style: whitespace
james-garner-canonical Nov 30, 2025
5d2f3f9
ci: skip tests that are expected to fail on new architectures
james-garner-canonical Dec 4, 2025
0a5ea13
chore: merge main
james-garner-canonical Dec 4, 2025
925e6a5
ci: construct spread matrix on ubuntu-latest instead of self-hosted r…
james-garner-canonical Dec 4, 2025
3e2f78e
ci: use jq index for arrays
james-garner-canonical Dec 4, 2025
2819b6f
ci: use jq --compact-output
james-garner-canonical Dec 4, 2025
e34944b
chore: merge main
james-garner-canonical Dec 11, 2025
d95a3bf
test: install microk8s from edge for alternative architecture support
james-garner-canonical Dec 11, 2025
79041d5
Revert "test: install microk8s from edge for alternative architecture…
james-garner-canonical Dec 12, 2025
1ae91d3
ci: skip juju-extra-bootstrap-args as well, as it tests microk8s args
james-garner-canonical Dec 14, 2025
ff9f582
ci: flip arch and runner args for better readability
james-garner-canonical Dec 15, 2025
c8442cb
ci: separate self-hosted runners matrix from regular CI
james-garner-canonical Dec 15, 2025
fc078d3
chore: merge main
james-garner-canonical Dec 15, 2025
f0c1ced
ci: add a job to check if amd64 tests passed as our required check
james-garner-canonical Dec 15, 2025
db6c290
ci: try nicer formatting for json
james-garner-canonical Dec 15, 2025
b0385e7
ci: include reason for skipping tests
james-garner-canonical Dec 15, 2025
89779c1
ci: consistently order arch then runner
james-garner-canonical Dec 15, 2025
68ca68a
chore: merge main
james-garner-canonical Jan 12, 2026
646dd48
ci: disable preset-lxd-init-no-bootstrap on alternative architectures
james-garner-canonical Jan 14, 2026
134c125
Merge branch 'main' into 25-10+ci+test-on-different-architectures
james-garner-canonical Jan 22, 2026
0f9fa45
refactor: replace snapcore/snapd dependency with minimal local snapd …
Copilot Jan 23, 2026
68bd79c
Updated security@ubuntu.com PGP key (#145)
lucistanescu Jan 26, 2026
def73ee
docs: Add CONTRIBUTING.md, moving some content from README.md (#146)
tonyandrewmeyer Jan 29, 2026
d67e18e
ci: leave existing push CI as-is, and run on arches via dispatch
james-garner-canonical Jan 29, 2026
a8c9290
test: run dispatchable workflow from push to test in this PR
james-garner-canonical Jan 29, 2026
ac69036
chore: merge main
james-garner-canonical Jan 29, 2026
b3977a5
ci: DRY push.yaml by calling _test-on-arch.yaml
james-garner-canonical Jan 29, 2026
1c3968e
ci: only test on alternative architectures in dispatchable job
james-garner-canonical Jan 30, 2026
cea17ae
ci: shorter name for tests workflow
james-garner-canonical Jan 30, 2026
8536ce3
ci: don't use a matrix
james-garner-canonical Jan 30, 2026
7d5455a
chore: merge main (bringing in new format job to push.yaml)
james-garner-canonical Feb 5, 2026
b31d6cb
ci: drop uninstall docker step as that's gone from main now
james-garner-canonical Feb 5, 2026
2a82931
ci: revert changes to overrides-env and add it to the skip list
james-garner-canonical Feb 5, 2026
3359620
ci: add a comment to explain why we run alternative arches manually
james-garner-canonical Feb 5, 2026
5e76802
ci: add tests-passed job to collect matrix tests
james-garner-canonical Feb 12, 2026
c715327
ci: drop matrix test collection job as we're using hard-coded names now
james-garner-canonical Feb 16, 2026
35fc234
Update .github/workflows/push.yaml
tonyandrewmeyer Feb 16, 2026
d05730e
Update .github/workflows/test-on-alternative-arches.yaml
tonyandrewmeyer Feb 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 12 additions & 88 deletions .github/workflows/push.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,94 +15,18 @@ concurrency:
cancel-in-progress: true

jobs:
binaries:
name: Build concierge
runs-on: ubuntu-latest
steps:
- name: Check out the code
uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: "go.mod"

- name: Run tests
run: |
go test -v -race ./...

- name: Setup goreleaser
run: |
sudo snap install --classic goreleaser

- name: Build concierge
id: build
run: |
goreleaser build --clean --snapshot --single-target --output .
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload binary artifact
uses: actions/upload-artifact@v5
with:
name: binary
path: ./concierge

define-matrix:
name: Define spread matrix
runs-on: ubuntu-24.04
outputs:
suites: ${{ steps.suites.outputs.suites }}
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup Go
uses: actions/setup-go@v6

- name: Install
run: |
go install github.com/snapcore/spread/cmd/spread@latest

- name: Generate matrix list
id: suites
run: |
list="$(spread -list github-ci | sed "s|github-ci:ubuntu-24.04:tests/||g" | jq -r -ncR '[inputs | select(length>0)]')"
echo "suites=$list"
echo "suites=$list" >> $GITHUB_OUTPUT

spread-test:
name: Spread (${{ matrix.suite }})
runs-on: ubuntu-24.04
needs:
- binaries
- define-matrix
tests:
strategy:
fail-fast: false
matrix:
suite: ${{ fromJSON(needs.define-matrix.outputs.suites) }}
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Download binary artifact
uses: actions/download-artifact@v6
with:
name: binary

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: "go.mod"

- name: Install
run: |
go install github.com/snapcore/spread/cmd/spread@latest

- name: Run integration tests
run: |
sudo apt-get remove -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /run/containerd
spread -v "github-ci:ubuntu-24.04:tests/${{ matrix.suite }}"
include:
- runner: ubuntu-24.04
arch: amd64
- runner: self-hosted-linux-ppc64el-noble-edge
arch: ppc64le # note: ppc64le for arch, ppc64el in runner name
- runner: self-hosted-linux-s390x-noble-edge
arch: s390x
uses: ./.github/workflows/tests.yaml
with:
runner: ${{ matrix.runner }}
arch: ${{ matrix.arch }}
115 changes: 115 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
name: Tests

on:
workflow_call:
inputs:
runner:
required: true
type: string
arch:
required: true
type: string

jobs:
binaries:
name: Build concierge
runs-on: ubuntu-latest
steps:
- name: Check out the code
uses: actions/checkout@v5
with:
fetch-depth: 0

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: "go.mod"

- name: Run tests
run: |
go test -v -race ./...

- name: Setup goreleaser
run: |
sudo snap install --classic goreleaser

- name: Build concierge
id: build
run: |
goreleaser build --clean --snapshot --single-target --output .
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GOOS: linux
GOARCH: ${{ inputs.arch }}

- name: Upload binary artifact
uses: actions/upload-artifact@v5
with:
name: binary-${{ inputs.runner }}
path: ./concierge

define-matrix:
name: Define spread matrix
runs-on: ${{ inputs.runner }}
outputs:
suites: ${{ steps.suites.outputs.suites }}
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: "go.mod"
architecture: ${{ inputs.arch }}

- name: Install
run: |
go install github.com/snapcore/spread/cmd/spread@latest

- name: Generate matrix list
id: suites
run: |
list="$(spread -list github-ci | sed "s|github-ci:ubuntu-24.04:tests/||g" | jq -r -ncR '[inputs | select(length>0)]')"
echo "suites=$list"
echo "suites=$list" >> $GITHUB_OUTPUT

spread-test:
name: Spread (${{ matrix.suite }})
runs-on: ${{ inputs.runner }}
needs:
- binaries
- define-matrix
strategy:
fail-fast: false
matrix:
suite: ${{ fromJSON(needs.define-matrix.outputs.suites) }}
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Download binary artifact
uses: actions/download-artifact@v6
with:
name: binary-${{ inputs.runner }}

- name: Setup Go
uses: actions/setup-go@v6
with:
go-version-file: "go.mod"
architecture: ${{ inputs.arch }}

- name: Install
run: |
go install github.com/snapcore/spread/cmd/spread@latest

- name: Uninstall docker and containerd
if: ${{ runner.environment == 'github-hosted' }}
run: |
sudo apt-get remove -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /run/containerd

- name: Run integration tests
run: |
spread -v "github-ci:ubuntu-24.04:tests/${{ matrix.suite }}"

2 changes: 1 addition & 1 deletion spread.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ path: /root/proj
prepare: |
snap refresh --hold
if systemctl is-enabled unattended-upgrades.service; then
systemctl stop unattended-upgrades.service
systemctl stop unattended-upgrades.service || echo 'Self-hosted runner?'
systemctl mask unattended-upgrades.service
fi
Comment on lines 85 to 88
Copy link
Contributor Author

@james-garner-canonical james-garner-canonical Nov 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oddly the if systemctl is-enabled unattended-upgrades.service conditional does not guard from failure when stopping the service on the self-hosted runners.

+ systemctl is-enabled unattended-upgrades.service
unattended-upgrades.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install is-enabled unattended-upgrades
enabled
+ systemctl stop unattended-upgrades.service
Failed to stop unattended-upgrades.service: Unit unattended-upgrades.service not loaded.


Expand Down