Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
a3eba54
feat: COS Lite upgrade test with TF
MichaelThamm Oct 10, 2025
ddb19dc
chore: Add uv dep to CI workflow
MichaelThamm Oct 10, 2025
61b2489
chore: Add concierge dep to CI workflow
MichaelThamm Oct 10, 2025
a2e68ed
chore: Add concierge dep to CI workflow
MichaelThamm Oct 10, 2025
f84b371
chore: Add concierge dep to CI workflow
MichaelThamm Oct 10, 2025
7a0cfc1
chore: Add buffered output
MichaelThamm Oct 10, 2025
97ac05e
chore: Add skip tfd
MichaelThamm Oct 10, 2025
986c24c
Merge branch 'main' into feat/cos-lite-upgrade
MichaelThamm Oct 10, 2025
aa17bc6
chore: reduce delay in juju.wait
MichaelThamm Oct 10, 2025
0b6ce3a
feat: GH manual trigger
MichaelThamm Oct 14, 2025
6d5d1f0
test manual trigger
MichaelThamm Oct 14, 2025
f552ae5
chore: Speed up tests
MichaelThamm Oct 14, 2025
77ebfc0
Merge branch 'main' into feat/cos-lite-upgrade
MichaelThamm Oct 14, 2025
82cb4ba
test
MichaelThamm Oct 14, 2025
ba3c9fb
chore: deps
MichaelThamm Oct 14, 2025
ab67f4a
chore
MichaelThamm Oct 14, 2025
63bab2a
chore
MichaelThamm Oct 17, 2025
4b025eb
Merge branch 'main' into feat/cos-lite-upgrade
MichaelThamm Oct 17, 2025
77eaddd
chore
MichaelThamm Oct 17, 2025
703686f
chore: PR convo updates
MichaelThamm Oct 17, 2025
d799a71
GH CI microceph job
MichaelThamm Oct 19, 2025
b0f9738
chore
MichaelThamm Oct 19, 2025
e87fe63
test
MichaelThamm Oct 19, 2025
a843286
test
MichaelThamm Oct 19, 2025
06ae8a1
test
MichaelThamm Oct 19, 2025
3e51b56
remove revision pin
MichaelThamm Oct 20, 2025
5b40cc6
test
MichaelThamm Oct 20, 2025
7f49b70
chore: reduce Ceph disk size
MichaelThamm Oct 20, 2025
26c5ba4
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
c5f907e
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
bf047ac
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
c428a1a
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
5786518
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
07327cf
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
3351903
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
2800b9b
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
9b26e8d
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
13dfcb5
chore: Redo TF tests
MichaelThamm Oct 20, 2025
f11c564
use `chdir` in TF commands
MichaelThamm Oct 20, 2025
942353e
chore
MichaelThamm Oct 20, 2025
d8c9b30
chore: try Ceph spec options
MichaelThamm Oct 20, 2025
e8b48ad
chore: try Ceph spec options
MichaelThamm Oct 21, 2025
f8daef3
chore: Fix chdir in TF commands
MichaelThamm Oct 21, 2025
159402d
chore: assert env vars
MichaelThamm Oct 21, 2025
279c822
test
MichaelThamm Oct 21, 2025
0e58808
test
MichaelThamm Oct 21, 2025
f3cf923
Merge branch 'feat/cos-lite-upgrade' into feat/cos-upgrade
MichaelThamm Oct 21, 2025
30ff575
chore: remove cos product
MichaelThamm Oct 21, 2025
2227e3c
chore: skip COS tests
MichaelThamm Oct 22, 2025
a1ae829
chore: cleanup
MichaelThamm Oct 22, 2025
9aa62dc
chore: callable workflow
MichaelThamm Oct 22, 2025
572ab81
Merge branch 'feat/cos-lite-upgrade' into feat/cos-upgrade
MichaelThamm Oct 22, 2025
70cc0d4
Merge remote-tracking branch 'origin/main' into feat/cos-upgrade
MichaelThamm Oct 22, 2025
ca409ba
chore: Fix branch in CI workflow
MichaelThamm Oct 22, 2025
30f1313
feat: bundle test for role-all=true
MichaelThamm Oct 22, 2025
43a0bba
chore: test bundle in CI
MichaelThamm Oct 22, 2025
0d3aab0
chore: remove breakpoint in render_bundle
MichaelThamm Oct 22, 2025
3cd65fb
chore: remove breakpoint in render_bundle
MichaelThamm Oct 22, 2025
7ad26c3
feat: bundles
MichaelThamm Oct 22, 2025
afda501
chore: bump timeout
MichaelThamm Oct 23, 2025
d7f6899
chore: use self-hosted runners
MichaelThamm Oct 23, 2025
6c111ad
chore: make microceph required for COS
MichaelThamm Oct 23, 2025
f9f0d0e
chore: make microceph required for COS
MichaelThamm Oct 23, 2025
7710b2c
chore
MichaelThamm Oct 23, 2025
76888a2
test: self-hosted-linux-amd64-noble-xlarge
MichaelThamm Oct 23, 2025
ea6222e
chore: try more resources
MichaelThamm Oct 23, 2025
e10850b
chore: remove duplicate tests
MichaelThamm Oct 23, 2025
a88ef82
Merge remote-tracking branch 'origin/main' into feat/cos-upgrade
MichaelThamm Oct 24, 2025
62c8c9f
chore: remove self-hosted runner logic
MichaelThamm Oct 24, 2025
003f92a
first attempts
MichaelThamm Oct 24, 2025
b1b09cd
Merge branch 'main' into feat/self-hosted-runner-ci
MichaelThamm Oct 27, 2025
92c709f
test: canonical k8s
MichaelThamm Nov 6, 2025
a4c24b7
Merge remote-tracking branch 'origin/main' into feat/self-hosted-runn…
MichaelThamm Nov 6, 2025
485bfb5
chore
MichaelThamm Nov 6, 2025
3166274
chore
MichaelThamm Nov 6, 2025
1aa3ba9
chore
MichaelThamm Nov 6, 2025
efd3428
test
MichaelThamm Nov 7, 2025
782565e
test
MichaelThamm Nov 7, 2025
0253c3d
test
MichaelThamm Nov 7, 2025
44e6963
test
MichaelThamm Nov 7, 2025
30597cc
initial tests for CI
MichaelThamm Nov 7, 2025
398d6c3
chore
MichaelThamm Nov 7, 2025
fe7d3f4
test
MichaelThamm Nov 7, 2025
f2ef4b0
test
MichaelThamm Nov 7, 2025
2c6a6bb
test
MichaelThamm Nov 7, 2025
8d7e512
test
MichaelThamm Nov 7, 2025
4b21881
test
MichaelThamm Nov 7, 2025
db56948
test
MichaelThamm Nov 7, 2025
4ba7110
test
MichaelThamm Nov 7, 2025
1679749
test
MichaelThamm Nov 11, 2025
88f1f50
test
MichaelThamm Nov 11, 2025
03346be
test
MichaelThamm Nov 11, 2025
0747751
test
MichaelThamm Nov 13, 2025
13b8561
chore
MichaelThamm Nov 18, 2025
8406a87
chore
MichaelThamm Nov 18, 2025
046cb1e
Merge remote-tracking branch 'origin/main' into cos-itests
MichaelThamm Nov 18, 2025
08fb05f
fix: TF test updates including external CA offer for receive-ca-cert
MichaelThamm Nov 18, 2025
a20b2c9
chore
MichaelThamm Nov 19, 2025
0c24142
chore
MichaelThamm Nov 19, 2025
db53726
chore
MichaelThamm Nov 19, 2025
f62dac9
chore
MichaelThamm Nov 19, 2025
a4a776f
chore
MichaelThamm Nov 19, 2025
d7c1803
shellcheck fixes
MichaelThamm Nov 19, 2025
0552a72
shellcheck fixes
MichaelThamm Nov 19, 2025
67ab398
chore: bump DockerHub mirror step to 10 min timeout
MichaelThamm Nov 19, 2025
a58ecc0
chore: bump resources
MichaelThamm Nov 20, 2025
5c34a83
chore
MichaelThamm Nov 21, 2025
1edecc4
chore
MichaelThamm Nov 21, 2025
b854106
chore
MichaelThamm Nov 21, 2025
dea63cb
chore
MichaelThamm Nov 21, 2025
afa6e37
chore
MichaelThamm Nov 21, 2025
b5c5a67
fix: update Grafana's ingress integrations (#149)
MichaelThamm Nov 21, 2025
b76ba1e
Merge branch 'main' into cos-itests
MichaelThamm Nov 21, 2025
1d19c29
Merge branch 'main' into cos-itests
MichaelThamm Nov 26, 2025
53e154b
Merge branch 'main' into cos-itests
MichaelThamm Nov 27, 2025
f6e86cb
chore: Fix lock file
MichaelThamm Nov 27, 2025
b55685a
COS Lite on self-hosted runners
MichaelThamm Nov 27, 2025
ab13c3d
chore
MichaelThamm Nov 27, 2025
d6d9a0d
chore
MichaelThamm Nov 27, 2025
c2a0041
chore
MichaelThamm Nov 28, 2025
518a4ec
final cleanup
MichaelThamm Nov 28, 2025
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
106 changes: 105 additions & 1 deletion .github/workflows/_integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,114 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
- name: Concierge prepare
if: ${{ runner.environment == 'github-hosted' }}
run: |
sudo snap install concierge --classic
sudo concierge prepare --juju-channel 3.6/stable -p microk8s --extra-snaps just,astral-uv,terraform

# Setup for Self-hosted (PS7) runners
- name: Install snaps
if: ${{ runner.environment == 'self-hosted' }}
run: |
sudo snap install juju --classic --channel=3.6/stable
sudo snap install just --classic
sudo snap install astral-uv --classic
sudo snap install terraform --classic
- name: (IS hosted) Configure microk8s Docker Hub mirror
timeout-minutes: 10
if: ${{ runner.environment == 'self-hosted' }}
run: |
sudo snap install microk8s --channel "1.34-strict/stable" --classic
sudo adduser "$USER" snap_microk8s

# Wait for microk8s to populate iptables
# https://chat.canonical.com/canonical/pl/jo5cg6wqjjrudqd5ybj6hhttee
until sudo iptables --list | grep -q -i "microk8s"
do
echo "MicroK8s has not yet configured iptables."
sleep 10
done

sudo tee /var/snap/microk8s/current/args/certs.d/docker.io/hosts.toml << EOF
server = "$DOCKERHUB_MIRROR"
[host."${DOCKERHUB_MIRROR#'https://'}"]
capabilities = ["pull", "resolve"]
EOF
sudo microk8s stop
sudo microk8s start
- name: Set up microk8s
id: microk8s-setup
timeout-minutes: 15
if: ${{ runner.environment == 'self-hosted' }}
run: |
sudo apt-get update
sudo apt-get install retry -y

# `newgrp` does not work in GitHub Actions; use `sudo --user` instead
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s status --wait-ready
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- retry --times 3 --delay 5 -- sudo microk8s enable dns
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s status --wait-ready
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s.kubectl rollout status --namespace kube-system --watch --timeout=5m deployments/coredns
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- retry --times 3 --delay 5 -- sudo microk8s enable hostpath-storage
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s.kubectl rollout status --namespace kube-system --watch --timeout=5m deployments/hostpath-provisioner

IPADDR=$(ip -4 -j route get 2.2.2.2 | sed -n -e 's/^.*prefsrc\":"\([^ "]*\).*/\1/p')
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- retry --times 3 --delay 5 -- sudo microk8s enable "metallb:$IPADDR-$IPADDR"
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s status --wait-ready
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- retry --times 3 --delay 5 -- sudo microk8s enable ingress
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s status --wait-ready
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- retry --times 3 --delay 5 -- sudo microk8s enable rbac
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s status --wait-ready
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- retry --times 3 --delay 5 -- sudo microk8s enable registry
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s status --wait-ready

mkdir ~/.kube/
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- microk8s config | sudo tee ~/.kube/config > /dev/null
- name: Set up environment
timeout-minutes: 15
if: ${{ runner.environment == 'self-hosted' }}
run: |
mkdir -p ~/.local/share/juju # Workaround for juju 3 strict snap
sudo --user "$USER" --preserve-env --preserve-env=PATH -- env -- juju bootstrap microk8s --config model-logs-size=10G microk8s
juju model-defaults logging-config='<root>=INFO; unit=DEBUG'

# Runner-independent setup
- name: Install and configure microceph
if: ${{ inputs.product == 'cos' }}
run: |
# https://github.com/canonical/microceph-action/blob/main/microceph.sh
function check_ceph_ok_or_exit () {
i=0
for i in {1..5}; do
if sudo microceph.ceph status | grep HEALTH_OK; then
break
else
sudo microceph.ceph status
sleep 30
sudo microceph.ceph health detail
fi
done
if [ "$i" -eq 5 ]; then
exit 1
fi
}

sudo snap install microceph
sudo microceph cluster bootstrap
sleep 30s
sudo microceph.ceph config set "mon.$(hostname)" mon_data_avail_warn 6
sudo microceph disk add loop,2G,3
check_ceph_ok_or_exit

sudo microceph enable rgw --port 8080 --ssl-port 8443
sudo microceph.radosgw-admin user create --uid=user --display-name=User
sudo microceph.radosgw-admin key create --uid=user --key-type=s3 --access-key=access-key --secret-key=secret-key

- name: Test deployment
run: |
S3_ENDPOINT=http://$(ip -4 -j route get 2.2.2.2 | jq -r '.[] | .prefsrc'):8080
export S3_ENDPOINT
export S3_ACCESS_KEY=access-key
export S3_SECRET_KEY=secret-key
just integration ${{ inputs.product }}/${{ matrix.scenario }}
8 changes: 7 additions & 1 deletion .github/workflows/terraform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,10 @@ jobs:
uses: canonical/observability-stack/.github/workflows/_integration.yml@main
with:
product: cos_lite
runner: ubuntu-latest
runner: self-hosted-linux-amd64-noble-large
test-integration-cos:
name: COS Terraform integration
uses: canonical/observability-stack/.github/workflows/_integration.yml@main
with:
product: cos
runner: self-hosted-linux-amd64-noble-xlarge
3 changes: 2 additions & 1 deletion tests/integration/cos_lite/tls_external/track-2.tf
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,6 @@ module "cos-lite" {
external_certificates_offer_url = "admin/${var.ca_model}.certificates"
external_ca_cert_offer_url = "admin/${var.ca_model}.send-ca-cert"

traefik = { channel = "latest/edge" } # TODO: Switch to latest/stable when rev257 hits stable
traefik = { channel = "latest/edge" } # TODO: Switch to latest/stable when rev257 hits stable
prometheus = { revision = 279 } # TODO: Remove when rev279 hits stable
}
3 changes: 2 additions & 1 deletion tests/integration/cos_lite/tls_full/track-2.tf
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ module "cos-lite" {
external_certificates_offer_url = "admin/${var.ca_model}.certificates"
external_ca_cert_offer_url = "admin/${var.ca_model}.send-ca-cert"

traefik = { channel = "latest/edge" } # TODO: Switch to latest/stable when rev257 hits stable
traefik = { channel = "latest/edge" } # TODO: Switch to latest/stable when rev257 hits stable
prometheus = { revision = 279 } # TODO: Remove when rev279 hits stable
}

Loading