Jobs

This document intents to provide an overview over our jobs running via Prow, GitHub actions and Google Cloud Build. It also documents the cluster-api 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.

Presubmits

Legend:

  • ✳️️ jobs that don’t have to be run successfully for merge
  • ✴️ jobs that are not triggered automatically for every commit

Prow Presubmits:

GitHub Presubmit Workflows:

  • golangci-lint: golangci/golangci-lint-action
    • Runs golangci-lint. Can be run locally via make lint.
  • verify: kubernetes-sigs/kubebuilder-release-tools verifier
    • Verifies the PR titles have a valid format, i.e. contains one of the valid icons.
    • Verifies the PR description is valid, i.e. is long enough.
  • Check PR Markdown links (run when markdown files changed)
    • Checks markdown for broken links.
  • dependabot (run on dependabot PRs)
    • Regenerates Go modules and code.
  • release (run on tags)
    • Creates a GitHub release with release notes for the tag.

GitHub Weekly Workflows:

  • golangci-lint: golangci/golangci-lint-action
    • Weekly check all Markdown links
  • scan-images:
    • Scan all images for vulnerabilities. Can be run locally via make verify-container-images

Postsubmits

Prow Postsubmits:

Periodics

Prow Periodics:

Test-infra configuration

  • config/jobs/image-pushing/k8s-staging-cluster-api.yaml
    • Configures nightly and postsubmit jobs to push images and manifests.
  • config/jobs/kubernetes-sigs/cluster-api/
    • Configures Cluster API presubmit and periodic jobs.
  • config/testgrids/kubernetes/sig-cluster-lifecycle/config.yaml
    • Configures Cluster API testgrid dashboards.
  • config/prow/config.yaml
    • branch-protection and tide are configured to make the golangci-lint GitHub action mandatory for merge
  • config/prow/plugins.yaml
    • triggers: configures /ok-to-test
    • approve: disable auto-approval of PR authors, ignore GitHub reviews (/approve is explicitly required)
    • milestone_applier: configures that merged PRs are automatically added to the correct milestone after merge
    • repo_milestone: configures cluster-api-maintainers as maintainers
    • require_matching_label: configures needs-triage
    • plugins: enables milestone, override and require-matching-label plugins
    • external_plugins: enables cherrypicker
  • label_sync/labels.yaml
    • Configures labels for the cluster-api repository.