diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 582c580b..43b39b47 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -130,6 +130,9 @@ jobs: # allowed because the job is gated on manual approval for fork PRs allow-unsafe-pr-checkout: true + - name: Set up Mise + uses: jdx/mise-action@e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d # v4.2.0 + - name: Login to Docker Hub uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 env: @@ -137,9 +140,6 @@ jobs: with: username: ${{ github.repository_owner }} - - name: Set up Mise - uses: jdx/mise-action@e6a8b3978addb5a52f2b4cd9d91eafa7f0ab959d # v4.2.0 - - name: Build and push the CCM PR image run: mise run ko-publish diff --git a/.github/workflows/go-analyze.yml b/.github/workflows/go-analyze.yml index 64c54945..dc34fdc0 100644 --- a/.github/workflows/go-analyze.yml +++ b/.github/workflows/go-analyze.yml @@ -84,6 +84,9 @@ jobs: - name: lint run: mise run lint + + - name: Chainsaw lint + run: mise run chainsaw-lint - name: Helm Lint run: mise run helm-lint diff --git a/Makefile b/Makefile index 6925889d..ba7cfa27 100644 --- a/Makefile +++ b/Makefile @@ -80,6 +80,11 @@ vet: fmt lint: golangci-lint run -c .golangci.yml +.PHONY: chainsaw-lint +chainsaw-lint: ## Validate the Chainsaw configuration and every test manifest. + chainsaw lint configuration --file .chainsaw.yaml + find e2e -type f -name 'chainsaw-test.yaml' -print0 | xargs -0 -n 1 chainsaw lint test --file + .PHONY: lint-fix lint-fix: golangci-lint run -c .golangci.yml --fix diff --git a/docs/development/testing.md b/docs/development/testing.md index 31cf8bc8..c839ba1d 100644 --- a/docs/development/testing.md +++ b/docs/development/testing.md @@ -163,3 +163,11 @@ The E2E manifests use labels to select compatible scenarios: | `ipv6-backends` | CAPL-provisioned IPv6 workload cluster | Some tests require a CAPL management cluster to add nodes or configure routes. They are intentionally excluded from the `lke` selector. + +## Chainsaw schema validation + +Run the Chainsaw configuration and test-manifest checks without a cluster: + +```bash +mise run chainsaw-lint +``` diff --git a/mise.toml b/mise.toml index c9b5aefb..3a55195a 100644 --- a/mise.toml +++ b/mise.toml @@ -92,6 +92,10 @@ run = "make vet" description = "Run golangci-lint" run = "make lint" +[tasks.chainsaw-lint] +description = "Validate the Chainsaw configuration and every E2E test manifest." +run = "make chainsaw-lint" + [tasks.lint-fix] description = "Run golangci-lint --fix" run = "make lint-fix"