Components
Prow Images
This directory includes a sub directory for every Prow component and is where all binary and container images are built. You can find the main
packages here. For details about building the binaries and images see “Building, Testing, and Updating Prow”.
Cluster Components
Prow has a microservice architecture implemented as a collection of container images that run as Kubernetes deployments. A brief description of each service component is provided here.
Core Components
crier
(doc, code) reports on ProwJob status changes. Can be configured to report to gerrit, github, pubsub, slack, etc.deck
(doc, code) presents a nice view of recent jobs, command and plugin help information, the current status and history of merge automation, and a dashboard for PR authors.hook
(doc, code) is the most important piece. It is a stateless server that listens for GitHub webhooks and dispatches them to the appropriate plugins. Hook’s plugins are used to trigger jobs, implement ‘slash’ commands, post to Slack, and more. See the plugins doc and code directory for more information on plugins.horologium
(doc, code) triggers periodic jobs when necessary.prow-controller-manager
(doc, code) manages the job execution and lifecycle for jobs that run in k8s pods. It currently acts as a replacement forplank
sinker
(doc, code) cleans up old jobs and pods.
Merge Automation
tide
(doc, code) manages retesting and merging PRs once they meet the configured merge criteria. See its README for more information.
Optional Components
branchprotector
(doc, code) configures github branch protection according to a specified policyexporter
(doc, code) exposes metrics about ProwJobs not directly related to a specific Prow componentgcsupload
(doc, code)gerrit
(doc, code) is a Prow-gerrit adapter for handling CI on gerrit workflowshmac
(doc, code) updates HMAC tokens, GitHub webhooks and HMAC secrets for the orgs/repos specified in the Prow config filejenkins-operator
(doc, code) is the controller that manages jobs that run on Jenkins. We moved away from using this component in favor of running all jobs on Kubernetes.tot
(doc, code) vends sequential build numbers. Tot is only necessary for integration with automation that expects sequential build numbers. If Tot is not used, Prow automatically generates build numbers that are monotonically increasing, but not sequential.status-reconciler
(doc, code) ensures changes to blocking presubmits in Prow configuration does not cause in-flight GitHub PRs to get stucksub
(doc, code) listen to Cloud Pub/Sub notification to trigger Prow Jobs.
CLI Tools
checkconfig
(doc, code) loads and verifies the configuration, useful as a pre-submit.config-bootstrapper
(doc, code) bootstraps a configuration that would be incrementally updated by theupdateconfig
Prow plugingeneric-autobumper
(doc, code) automates image version upgrades (e.g. for a Prow deployment) by opening a PR with images changed to their latest version according to a config file.invitations-accepter
(doc, code) approves all pending GitHub repository invitationsmkpj
(doc, code) createsProwJobs
using Prow configuration.mkpod
(doc, code) createsPods
fromProwJobs
.peribolos
(doc, code) manages GitHub org, team and membership settings according to a config file. Used by kubernetes/orgphony
(doc, code) sends fake webhooks for testing hook and plugins.
Pod Utilities
These are small tools that are automatically added to ProwJob pods for jobs that request pod decoration. They are used to transparently provide source code cloning and upload of metadata, logs, and job artifacts to persistent storage. See their README for more information.
Base Images
The container images in images
are used as base images for Prow components.
TODO: undocumented
Deprecated
cm2kc
(doc, code) is a CLI tool used to convert a clustermap file to a kubeconfig file. Deprecated because we have moved away from clustermaps; you should usegencred
to generate a kubeconfig file directly.phaino
(doc) runs an approximation of a ProwJob on your local workstationtackle
(doc, code)
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.