This folder contains Dockerfiles for building "builder" images to be used within ProwJobs to execute CI tasks.
If none of the existing images suite your needs see "How to add a new builder image" for how to create a new one.
The builder image (quay.io/pusher/builder
) acts as a base image for all other
builder images.
The builder image contains the following:
- Docker-In-Docker installation
- A
prow
user and workspace configured with correct permissions - A
runner
script that optionally starts Docker-In-Docker before executing itsargs
inside a bash shell
Clonerefs is not a builder image. Clonerefs is part of the Prow pod utilities
which clones code before ProwJobs start.
We maintain a copy to set the user to prow
so that cloned repositories
have the correct permissions set.
The Golang builder (quay.io/pusher/golang-builder
) is for building Golang
based projects within Prow.
The Golang builder contains the following:
- Everything in the base builder image
- Golang 1.13.5
- profile
- delve
- dep
- golangci-lint
- ginkgo
The Kubebuilder builder (quay.io/pusher/golang-builder
) is for building
Kubebuilder based projects within Prow.
The Kubebuilder builder contains the following:
- Everything in the Golang builder image
- Kubebuilder testing tools for Kubernetes 1.11, 1.12 and 1.13
- etcd
- kube-apiserver
- kubectl
- kubebuilder
The Python builder (quay.io/pusher/python-builder
) is for testing Python based
projects within Prow.
The Python builder contains the following:
- Everything in the base builder image
- python 2.7.13 (under
python2
) - Python 3.7.3 (under
python
) - Pip 19.1
The Ruby builder (quay.io/pusher/ruby-builder
) is for testing Ruby based
projects within Prow.
The Ruby builder contains the following:
- Everything in the base builder image
- ruby 2.6.5
- Run
make docker-new-$NAME
. - Add your new targets to the Makefile to build/tag/push your new image, following the existing conventions.
- Add your modifications to the Dockerfile that the previous command generated.
- Build the (base) builder image and push it to
quay.io
:
$ docker login --username <USERNAME> quay.io
# docker-push-* implicitly builds, tags and pushes
$ make docker-push-builder`.
- Build your image
make docker-build-$NAME
. - When you're happy with the result, commit your changes, push to Github and open a PR.
Note: due to how caching works in the build process you will need to rebuild and push the
builder
image after each commit, so (for now) it's recommended to make commits after you're done with your modifications.