CI Jobs

This document intends to provide an overview over our jobs running via Prow, GitHub actions and Google Cloud Build. It also documents the cluster-api-operator specific configuration in test-infra.

Builds and Tests running on the main branch

NOTE: To see which test jobs execute which tests or e2e tests, you can click on the links which lead to the respective test overviews in testgrid.

The dashboards for the ProwJobs can be found here: https://testgrid.k8s.io/sig-cluster-lifecycle-cluster-api-operator

More details about ProwJob configurations can be found here.

Presubmits

Prow Presubmits:

GitHub Presubmit Workflows:

  • PR golangci-lint: golangci/golangci-lint-action
    • Runs golangci-lint. Can be run locally via make lint.
  • PR verify: title verifier
    • Verifies the PR titles have a valid format, i.e. contains one of the valid icons.
  • PR Renovate (runs on pushes to Renovate branches)
    • Regenerates Go modules and code, and commits the changes to the branch.

Other Github workflows

  • Renovate (Mend Renovate GitHub App, configured in .github/renovate.json5)
    • Opens pull requests for Go module updates on the first day of each month. Major updates open only after approval on the Dependency Dashboard issue.
    • Opens one pull request for GitHub Actions updates every Monday. Major updates and golangci-lint versions get separate pull requests.
    • Opens security fix pull requests from Dependabot alerts, including indirect modules and hack/tools / hack/chart-update.
  • release (runs when tags are pushed)
    • Creates a GitHub release with release notes for the tag.
  • book publishing
    • Deploys operator book to GitHub Pages

Postsubmits

Prow Postsubmits:

Periodics

Prow Periodics:

Test-infra configuration

  • config/jobs/image-pushing/k8s-staging-cluster-api.yaml
    • Configures postsubmit job to push images and manifests.
  • config/jobs/kubernetes-sigs/cluster-api-operator/
    • Configures Cluster API Operator presubmit and periodic jobs.
  • config/testgrids/kubernetes/sig-cluster-lifecycle/config.yaml
    • Configures Cluster API Operator testgrid dashboards.
  • config/prow/plugins.yaml
    • approve: disable auto-approval of PR authors, ignore GitHub reviews (/approve is explicitly required)
    • lgtm: enables retaining lgtm through squash
    • require_matching_label: configures needs-triage
    • plugins: enables require-matching-label plugin
    • external_plugins: enables cherrypicker plugin
  • label_sync/labels.yaml
    • Configures labels for the cluster-api-operator repository.