Skip to content

Commit d245b36

Browse files
syscod3claude
andcommitted
ci: kubeconform, pluto weekly, nightly E2E
- kubeconform: validate CRD manifests against k8s 1.29-1.31 on every push - pluto-weekly: deprecated API detection, Monday 04:00 UTC - nightly-e2e: Kind cluster smoke test, 02:00 UTC, diagnostics artifact on failure Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 2b91fbc commit d245b36

3 files changed

Lines changed: 104 additions & 0 deletions

File tree

.github/workflows/kubeconform.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Kubeconform
2+
3+
on: [push, pull_request, workflow_dispatch]
4+
5+
jobs:
6+
validate:
7+
runs-on: ubuntu-latest
8+
strategy:
9+
matrix:
10+
k8s: ["1.29", "1.30", "1.31"]
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Install kubeconform
15+
run: |
16+
curl -sSfL https://github.com/yannh/kubeconform/releases/latest/download/kubeconform-linux-amd64.tar.gz \
17+
| tar -xz -C /usr/local/bin
18+
19+
- name: Install kustomize
20+
run: |
21+
curl -sSfL https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.3.0/kustomize_v5.3.0_linux_amd64.tar.gz \
22+
| tar -xz -C /usr/local/bin
23+
24+
- name: Validate manifests
25+
run: |
26+
kustomize build config/default \
27+
| kubeconform -strict -ignore-missing-schemas \
28+
-kubernetes-version ${{ matrix.k8s }}.0

.github/workflows/nightly-e2e.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
name: Nightly E2E
2+
3+
on:
4+
schedule:
5+
- cron: "0 2 * * *"
6+
workflow_dispatch:
7+
8+
concurrency:
9+
group: nightly-e2e
10+
cancel-in-progress: false
11+
12+
jobs:
13+
e2e:
14+
runs-on: ubuntu-latest
15+
timeout-minutes: 45
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- uses: actions/setup-go@v5
20+
with:
21+
go-version: "1.25"
22+
23+
- uses: helm/kind-action@v1
24+
25+
- name: Build and load image
26+
run: |
27+
make docker-build IMG=controller:test
28+
kind load docker-image controller:test
29+
30+
- name: Run E2E
31+
run: make test-e2e
32+
continue-on-error: true
33+
id: e2e
34+
35+
- name: Collect diagnostics
36+
if: steps.e2e.outcome == 'failure'
37+
run: |
38+
mkdir -p /tmp/diagnostics
39+
kubectl get nodes -o wide > /tmp/diagnostics/nodes.txt
40+
kubectl get pods -A > /tmp/diagnostics/pods.txt
41+
kubectl get events -A --sort-by='.lastTimestamp' > /tmp/diagnostics/events.txt
42+
kubectl logs -n oci-pivot-system -l control-plane=controller-manager > /tmp/diagnostics/controller.log || true
43+
44+
- name: Upload diagnostics
45+
if: steps.e2e.outcome == 'failure'
46+
uses: actions/upload-artifact@v4
47+
with:
48+
name: e2e-diagnostics
49+
path: /tmp/diagnostics/
50+
51+
- name: Fail if E2E failed
52+
if: steps.e2e.outcome == 'failure'
53+
run: exit 1

.github/workflows/pluto-weekly.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Pluto — Deprecated API Detection
2+
3+
on:
4+
schedule:
5+
- cron: "0 4 * * 1" # Monday 04:00 UTC
6+
workflow_dispatch:
7+
8+
jobs:
9+
pluto:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
matrix:
13+
k8s: ["v1.29.0", "v1.30.0", "v1.31.0"]
14+
steps:
15+
- uses: actions/checkout@v4
16+
17+
- name: Install pluto
18+
run: |
19+
curl -sSfL https://github.com/FairwindsOps/pluto/releases/download/v5.23.5/pluto_5.23.5_linux_amd64.tar.gz \
20+
| tar -xz -C /usr/local/bin
21+
22+
- name: Detect deprecated APIs
23+
run: pluto detect-files -d config/ --target-versions k8s=${{ matrix.k8s }}

0 commit comments

Comments
 (0)