Skip to content

Latest commit

 

History

History
65 lines (52 loc) · 2.14 KB

builds-create-custom-build-artifacts.adoc

File metadata and controls

65 lines (52 loc) · 2.14 KB

Creating custom build artifacts

You must create the image you want to use as your custom build image.

Procedure
  1. Starting with an empty directory, create a file named Dockerfile with the following content:

    FROM docker.io/centos:7
    RUN yum install -y buildah
    # For simplicity, /tmp/build contains the inputs we’ll be building when we
    # run this custom builder image. Normally the custom builder image would
    # fetch this content from some location at build time. (e.g. via git clone).
    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 executed when
    # this custom builder image is executed.
    ENTRYPOINT ["/usr/bin/build.sh"]
  2. In the same directory, create a file named Dockerfile.sample. This file will be included in the custom build image and defines the image that will be produced by the custom build:

    FROM docker.io/centos:7
    RUN touch /tmp/built
  3. In the same directory, create a file named build.sh. This file contains the logic that will be executed when the custom build runs:

    #!/bin/sh
    # Note that in this case the build inputs are part of the custom builder image, but normally this
    # would be 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 in order 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}