mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
64 lines
2.2 KiB
Plaintext
64 lines
2.2 KiB
Plaintext
// Module included in the following assemblies:
|
|
//
|
|
// * builds/custom-builds-buildah.adoc
|
|
|
|
|
|
:_mod-docs-content-type: PROCEDURE
|
|
[id="builds-create-custom-build-artifacts_{context}"]
|
|
= Creating custom build artifacts
|
|
|
|
You must create the image you want to use as your custom build image.
|
|
|
|
.Procedure
|
|
|
|
. Starting with an empty directory, create a file named `Dockerfile` with the following content:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
FROM registry.redhat.io/rhel8/buildah
|
|
# In this example, `/tmp/build` contains the inputs that build when this
|
|
# custom builder image is run. Normally the custom builder image fetches
|
|
# this content from some location at build time, by using git clone as an example.
|
|
ADD dockerfile.sample /tmp/input/Dockerfile
|
|
ADD build.sh /usr/bin
|
|
RUN chmod a+x /usr/bin/build.sh
|
|
# /usr/bin/build.sh contains the actual custom build logic that will be run when
|
|
# this custom builder image is run.
|
|
ENTRYPOINT ["/usr/bin/build.sh"]
|
|
----
|
|
|
|
. In the same directory, create a file named `dockerfile.sample`. This file is included in the custom build image and defines the image that is produced by the custom build:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
FROM registry.access.redhat.com/ubi9/ubi
|
|
RUN touch /tmp/build
|
|
----
|
|
|
|
. In the same directory, create a file named `build.sh`. This file contains the logic that is run when the custom build runs:
|
|
+
|
|
[source,terminal]
|
|
----
|
|
#!/bin/sh
|
|
# Note that in this case the build inputs are part of the custom builder image, but normally this
|
|
# is retrieved from an external source.
|
|
cd /tmp/input
|
|
# OUTPUT_REGISTRY and OUTPUT_IMAGE are env variables provided by the custom
|
|
# build framework
|
|
TAG="${OUTPUT_REGISTRY}/${OUTPUT_IMAGE}"
|
|
|
|
|
|
# performs the build of the new image defined by dockerfile.sample
|
|
buildah --storage-driver vfs bud --isolation chroot -t ${TAG} .
|
|
|
|
|
|
# buildah requires a slight modification to the push secret provided by the service
|
|
# account to use it for pushing the image
|
|
cp /var/run/secrets/openshift.io/push/.dockercfg /tmp
|
|
(echo "{ \"auths\": " ; cat /var/run/secrets/openshift.io/push/.dockercfg ; echo "}") > /tmp/.dockercfg
|
|
|
|
|
|
# push the new image to the target for the build
|
|
buildah --storage-driver vfs push --tls-verify=false --authfile /tmp/.dockercfg ${TAG}
|
|
----
|