github.com/munnerz/test-infra@v0.0.0-20190108210205-ce3d181dc989/prow/cmd/README.md (about)

     1  # Prow Images
     2  
     3  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 in addition to the `BUILD.bazel` files that contain [Bazel](https://bazel.build) rules for building binary and container images. For details about building the binaries and images see [`build_test_update.md`](/prow/build_test_update.md).
     4  
     5  ## Cluster Components
     6  
     7  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.
     8  
     9  #### Core Components
    10  
    11  * [`hook`](/prow/cmd/hook) 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 [`prow/plugins`](/prow/plugins/) directory for more information on plugins.
    12  * [`plank`](/prow/cmd/plank) is the controller that manages the job execution and lifecycle for jobs that run in k8s pods.
    13  * [`deck`](/prow/cmd/deck) presents a nice view of [recent jobs](https://prow.k8s.io/), [command](https://prow.k8s.io/command-help) and [plugin](https://prow.k8s.io/plugins) help information, the [status of merge automation](https://prow.k8s.io/tide), and a [dashboard for PR authors](https://prow.k8s.io/pr).
    14  * [`horologium`](/prow/cmd/horologium) triggers periodic jobs when necessary.
    15  * [`sinker`](/prow/cmd/sinker) cleans up old jobs and pods.
    16  
    17  
    18  #### Merge Automation
    19  
    20  * [`tide`](/prow/cmd/tide) manages retesting and merging PRs once they meet the configured merge criteria. See [its README](./tide/README.md) for more information.
    21  
    22  #### Auxiliary Components
    23  
    24  Hopefully you won't need any of these components...
    25  
    26  * [`jenkins-operator`](/prow/cmd/jenkins-operator) 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.
    27  * [`tot`](/prow/cmd/tot) 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.
    28  * [`sub`](/prow/cmd/sub) listen to Cloud Pub/Sub notification to trigger Prow Jobs.
    29  
    30  ## Dev Tools
    31  * [`checkconfig`](/prow/cmd/checkconfig) loads and verifies the configuration, useful as a pre-submit.
    32  * [`mkpj`](/prow/cmd/mkpj) creates `ProwJobs` using Prow configuration.
    33  * [`mkpod`](/prow/cmd/mkpod) creates `Pods` from `ProwJobs`.
    34  * [`phony`](/prow/cmd/phony) sends fake webhooks for testing hook and plugins.
    35  
    36  ## Pod Utilities
    37  
    38  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](/prow/pod-utilities.md) for more information.
    39  
    40  * [`clonerefs`](/prow/cmd/clonerefs)
    41  * [`initupload`](/prow/cmd/initupload)
    42  * [`entrypoint`](/prow/cmd/entrypoint)
    43  * [`sidecar`](/prow/cmd/sidecar)
    44  
    45  ## Base Images
    46  
    47  The container images in [`images`](/prow/cmd/images) are used as base images for Prow components.