prow/

directory
v0.0.0-...-97238d6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 29, 2019 License: Apache-2.0

README

Prow

Prow is a Kubernetes based CI/CD system. Jobs can be triggered by various types of events and report their status to many different services. In addition to job execution, Prow provides GitHub automation in the form of policy enforcement, chat-ops via /foo style commands, and automatic PR merging. See the GoDoc for library docs. Please note that these libraries are intended for use by prow only, and we do not make any attempt to preserve backwards compatibility.

For a brief overview of how Prow runs jobs take a look at "Life of a Prow Job".

Functions and Features
  • Job execution for testing, batch processing, artifact publishing.

    • GitHub events are used to trigger post-PR-merge (postsubmit) jobs and on-PR-update (presubmit) jobs.
    • Support for multiple execution platforms and source code review sites.
  • Pluggable GitHub bot automation that implements /foo style commands and enforces configured policies/processes.

  • GitHub merge automation with batch testing logic.

  • Front end for viewing jobs, merge queue status, dynamically generated help information, and more.

  • Automatic deployment of source control based config.

  • Automatic GitHub org/repo administration configured in source control.

  • Designed for multi-org scale with dozens of repositories. (The Kubernetes Prow instance uses only 1 GitHub bot token!)

  • High availability as benefit of running on Kubernetes. (replication, load balancing, rolling updates...)

  • JSON structured logs.

  • Prometheus metrics.

Documentation

Getting started
More details

Useful Talks

KubeCon 2018 EU

Automation and the Kubernetes Contributor Experience SIG Testing Deep Dive

Prow in the wild

Prow is used by the following organizations and projects:

Jenkins X uses Prow as part of Serverless Jenkins.

Contact us

If you need to contact the maintainers of Prow you have a few options:

  1. Open an issue in the kubernetes/test-infra repo.
  2. Reach out to the #prow channel of the Kubernetes Slack.
  3. Contact one of the code owners in prow/OWNERS or in a more specifically scoped OWNERS file.
Bots home

@k8s-ci-robot lives here and is the face of the Kubernetes Prow instance. Here is a command list for interacting with @k8s-ci-robot and other Prow bots.

Directories

Path Synopsis
apis
client
Package clonerefs is a library for cloning references
Package clonerefs is a library for cloning references
cmd
Package commentpruner facilitates efficiently deleting bot comments as a reaction to webhook events.
Package commentpruner facilitates efficiently deleting bot comments as a reaction to webhook events.
Package config knows how to read and parse config.yaml.
Package config knows how to read and parse config.yaml.
Package crier reports finished prowjob status to git providers.
Package crier reports finished prowjob status to git providers.
Package cron provides a wrapper of robfig/cron, which manages schedule cron jobs for horologium
Package cron provides a wrapper of robfig/cron, which manages schedule cron jobs for horologium
deck
Package entrypoint is a library that knows how to wrap a process and write it's output and exit code to disk
Package entrypoint is a library that knows how to wrap a process and write it's output and exit code to disk
Package errorutil provides utilities for errors
Package errorutil provides utilities for errors
external-plugins
Package flagutil contains utilities and interfaces shared between several Prow commands.
Package flagutil contains utilities and interfaces shared between several Prow commands.
Package gcsupload uploads artifacts to a GCS path resolved from job configuration
Package gcsupload uploads artifacts to a GCS path resolved from job configuration
Package genfiles understands the .generated_files config file.
Package genfiles understands the .generated_files config file.
gerrit
git
Package git provides a client to plugins that can do git operations.
Package git provides a client to plugins that can do git operations.
Package initupload determines the output status of clone operations and posts that status along with artifacts and logs to cloud storage.
Package initupload determines the output status of clone operations and posts that status along with artifacts and logs to cloud storage.
Package jenkins includes a client and the operational logic for managing Jenkins masters in prow.
Package jenkins includes a client and the operational logic for managing Jenkins masters in prow.
Package logrusutil implements some helpers for using logrus
Package logrusutil implements some helpers for using logrus
Package metrics contains utilities for working with metrics in prow.
Package metrics contains utilities for working with metrics in prow.
Package pjutil contains helpers for working with ProwJobs.
Package pjutil contains helpers for working with ProwJobs.
Package pluginhelp defines structures that represent plugin help information.
Package pluginhelp defines structures that represent plugin help information.
pod-utils
pubsub
Package report contains helpers for writing comments and updating statuses in Github.
Package report contains helpers for writing comments and updating statuses in Github.
Package sidecar is a library that knows how to report on the output of a process that writes its output and exit code to disk
Package sidecar is a library that knows how to report on the output of a process that writes its output and exit code to disk
Package spyglass creates views for Prow job artifacts.
Package spyglass creates views for Prow job artifacts.
Package statusreconciler ensures that changes to required presubmits do not cause PRs in flight to get stuck in the merge queue
Package statusreconciler ensures that changes to required presubmits do not cause PRs in flight to get stuck in the merge queue
Package tide contains a controller for managing a tide pool of PRs.
Package tide contains a controller for managing a tide pool of PRs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳