Skip to content

Harden operator defaults and timeline surface ahead of first release #59

Harden operator defaults and timeline surface ahead of first release

Harden operator defaults and timeline surface ahead of first release #59

Workflow file for this run

name: ci
on:
pull_request:
push:
branches:
- main
workflow_call:
workflow_dispatch:
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
verify:
runs-on: ubuntu-24.04
env:
LOCALBIN: ${{ github.workspace }}/bin
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Setup Go
uses: actions/setup-go@v5.5.0
with:
go-version-file: go.mod
cache: true
- name: Cache local tool binaries
uses: actions/cache@v4.2.4
with:
path: |
bin/controller-gen-v0.17.2
bin/kustomize-v5.6.0
bin/setup-envtest-release-0.24
bin/golangci-lint-v2.12.2
bin/chainsaw-v0.2.15
bin/controller-gen
bin/kustomize
bin/setup-envtest
bin/golangci-lint
bin/chainsaw
key: tools-${{ runner.os }}-v1-${{ hashFiles('Makefile') }}
- name: Cache envtest Kubernetes assets
uses: actions/cache@v4.2.4
with:
path: bin/k8s
key: envtest-assets-${{ runner.os }}-1.36
- name: Setup Python
uses: actions/setup-python@v5.6.0
with:
python-version: "3.x"
- name: Install Python dependencies
run: python -m pip install --upgrade pip pyyaml
- name: Install local tools
run: make tools
- name: Format
run: make fmt
- name: Vet
run: make vet
- name: Lint
run: make lint
- name: Static analysis (security + complexity)
run: make static-check
- name: Unit and envtest smoke tests
run: make test
- name: Race tests
run: go test -race ./...
- name: Generate
run: make generate
- name: Generated diff check
run: git diff --exit-code
- name: Helm lint
run: make helm-lint
- name: Helm template
run: make helm-template
- name: Docs generation check
run: git diff --exit-code -- llms.txt llms-full.txt docs/static/llms-full.txt
- name: Feature coverage checker tests
run: make feature-coverage-test
- name: Vulnerability check
run: |
go install golang.org/x/vuln/cmd/govulncheck@v1.1.4
govulncheck ./...
- name: Feature coverage
run: make feature-coverage
- name: Feature coverage summary
if: always()
run: cat traceability/feature-coverage-report.md >> "$GITHUB_STEP_SUMMARY"
- name: Upload feature coverage report
if: always()
uses: actions/upload-artifact@v4.4.3
with:
name: feature-coverage-report
path: traceability/feature-coverage-report.md
e2e-core:
runs-on: ubuntu-24.04
needs: verify
env:
LOCALBIN: ${{ github.workspace }}/bin
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Setup Go
uses: actions/setup-go@v5.5.0
with:
go-version-file: go.mod
cache: true
- name: Cache chainsaw binary
uses: actions/cache@v4.2.4
with:
path: |
bin/chainsaw-v0.2.15
bin/chainsaw
key: tools-chainsaw-${{ runner.os }}-v1-${{ hashFiles('Makefile') }}
- name: Install kind
run: |
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
- name: Create kind cluster
run: make kind-create KIND=kind
- name: Build and load operator image
run: make kind-load KIND=kind
- name: Run full e2e suite
run: make test-e2e KIND=kind
- name: Delete kind cluster
if: always()
run: make kind-delete KIND=kind