The OpenShift Builder image drives OpenShift Builds, leveraging Buildah and Source-To-Image to turn source code into images that can be deployed on Kubernetes.
To get started, fork the openshift/builder repo.
The easiest way to test your changes is to launch an OpenShift 4.x cluster. First, go to try.openshift.com to obtain a pull secret and download the installer. Follow the instructions to launch a cluster on AWS.
If you want the latest openshift-install
and oc
clients, go to the openshift-release
page, select the channel and build you wish to install, and download the respective oc
and openshift-installer
binaries.
There are three types of channels you can obtain the installer from:
4-stable
- these are stable releases of OpenShift 4, corresponding to GA or beta releases.4.x.0-nightly
- nightly development releases, with payloads published to quay.io.4.x.0-ci
- bleeding-edge releases published to the OpenShift CI imagestreams.
Note: Installs from the 4.x.0-ci
channel require a pull secret to registry.svc.ci.openshift.org
, which is only available to Red Hat OpenShift developers.
After your cluster is installed, you will need to do the following:
- Patch the cluster version so that you can launch your own builder image:
$ oc patch clusterversion/version --patch '{"spec":{"overrides":[{"kind":"ConfigMap", "namespace":"openshift-controller-manager-operator","name":"openshift-controller-manager-images","unmanaged":true}]}}' --type=merge
- Make your code changes and build the binary with
make build
. - Build the image using the
Dockerfile-dev
file, giving it a unique tag:
$ make build-devel-image IMAGE=<MYREPO>/<MYIMAGE> TAG=<MYTAG>
or if you are using buildah
:
$ buildah bud -t <MYREPO>/<MYIMAGE>:<MYTAG> -f Dockerfile.dev .
- Push the image to a registry accessible from the cluster (e.g. your repository on quay.io).
- Patch the ConfigMap in the override above to instruct the cluster to use your builder image:
$ oc patch configmap openshift-controller-manager-images -n openshift-controller-manager-operator --patch '{"data":{"builderImage":"<MYREPO>/<MYIMAGE>:<MYTAG>"}}' --type=merge
- Watch the openshift controller manager daemonset rollout (this can take a few minutes):
$ oc get ds controller-manager -n openshift-controller-manager -w
- Trigger an OpenShift build via
oc start-build
. You can use one of the templates suggested inoc new-app
to populate your project with a build.
Once you are satisfied with your code changes, you may submit a pull request to the openshift/builder repo. A member of the OpenShift Developer Experience team will evaluate your change for approval.
The OpenShift builder is considered a core component of the OpenShift Container Platform.
The e2e test suite run against each pull request is located in the openshift/origin repo.
Tests whose description contains [Feature:Builds]
are run as part of the e2e suite, and are generally placed in the
test/extended/builds
directory.
Refer to the extended tests README
for instructions on how to develop and run these tests against your own cluster.