This repository contains tools and configuration files for the testing and automation needs of the Kubernetes project.
Our architecture diagram provides a (wildly out of date #13063) overview of how the different tools and services interact.
Kubernetes uses a prow
instance at prow.k8s.io to handle CI and
automation for the entire project. Everyone can participate in a
self-service PR-based workflow, where changes are automatically deployed
after they have been reviewed. All job configs are located in config/jobs
- Add or update job configs
- Delete job configs
- Test job configs locally
- Trigger jobs on PRs using bot commmands
- Testgrid shows historical test results over time (
testgrid
) - Triage shows clusters of similar test failures across all jobs (
triage
) - velodrome/bigquery-metrics shows failure and flake metrics for jobs related to kubernetes/kubernetes (
velodrome
,metrics
)
- Deck shows what jobs are running or have recently run in prow (
prow/cmd/deck
) - Gubernator's PR Dashboard shows which PRs need your review (
gubernator
) - PR Status shows what needs to be done to get PRs matching a GitHub Query to merge (
prow/cmd/tide
) - Tide History shows what actions tide has taken over time to trigger tests and merge PRs (
prow/cmd/tide
) - Tide Status shows what PRs are in tide pools to be tested and merged (
prow/cmd/tide
) - velodrome/monitoring shows tide pool and merge metrics (
velodrome
)
boskos
manages pools of resources; our CI leases GCP projects from these poolsexperiment/
is a catchall directory for one-shot tools or scriptsgcsweb
is a UI we use to display test artifacts stored in public GCS bucketsghproxy
is a GitHub-aware reverse proxy cache to help keep our GitHub API token usage within rate limitsgopherage
is a tool for manipulating Go coverage filesgreenhouse
is a shared bazel cache we use to ensure faster build and test presubmit jobslabel_sync
creates, updates and migrates GitHub labels across orgs and repos based onlabels.yaml
filekettle
extracts test results from GCS and puts them into bigquerykubetest
is how our CI creates and e2e tests kubernetes clustersmaintenance/migratestatus
is used to migrate or retire GitHub status contexts on PRs across orgs and reposmetrics
runs queries against bigquery to generate metrics based on test resultsrobots/commenter
is used by some of our jobs to comment on GitHub issues
Please see CONTRIBUTING.MD
We use Bazel to build and test the code in this repo.
The commands bazel build //...
and bazel test //...
should be all you need
for most cases. If you modify Go code, run ./hack/update-bazel.sh
to keep
BUILD.bazel
files up-to-date.
Please see docs/deps.md
We welcome contribution of e2e test results generated by other CI systems on other platforms to ensure that Kubernetes has test coverage in a variety of environments. For more info please see Contributing Test Results