FROM openshift/golang-builder:rhel_8_golang_1.16 AS builder
ENV __doozer=update BUILD_RELEASE=202111151318.p0.g6a8cbc2.assembly.stream BUILD_VERSION=v4.9.0 OS_GIT_MAJOR=4 OS_GIT_MINOR=9 OS_GIT_PATCH=0 OS_GIT_TREE_STATE=clean OS_GIT_VERSION=4.9.0-202111151318.p0.g6a8cbc2.assembly.stream SOURCE_GIT_TREE_STATE=clean 
ENV __doozer=merge OS_GIT_COMMIT=6a8cbc2 OS_GIT_VERSION=4.9.0-202111151318.p0.g6a8cbc2.assembly.stream-6a8cbc2 SOURCE_DATE_EPOCH=1635795212 SOURCE_GIT_COMMIT=6a8cbc2fef0c94bf9455fee0d08e7357b47cef5b SOURCE_GIT_TAG=6a8cbc2fe SOURCE_GIT_URL=https://github.com/openshift/operator-framework-olm 

ENV GO111MODULE auto
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH

WORKDIR /build

# copy just enough of the git repo to parse HEAD, used to record version in OLM binaries
COPY .git/HEAD .git/HEAD
COPY .git/refs/heads/. .git/refs/heads
RUN mkdir -p .git/objects

COPY . .
RUN make build/olm bin/cpb

FROM openshift/ose-base:v4.9.0.20211115.131845
ENV __doozer=update BUILD_RELEASE=202111151318.p0.g6a8cbc2.assembly.stream BUILD_VERSION=v4.9.0 OS_GIT_MAJOR=4 OS_GIT_MINOR=9 OS_GIT_PATCH=0 OS_GIT_TREE_STATE=clean OS_GIT_VERSION=4.9.0-202111151318.p0.g6a8cbc2.assembly.stream SOURCE_GIT_TREE_STATE=clean 
ENV __doozer=merge OS_GIT_COMMIT=6a8cbc2 OS_GIT_VERSION=4.9.0-202111151318.p0.g6a8cbc2.assembly.stream-6a8cbc2 SOURCE_DATE_EPOCH=1635795212 SOURCE_GIT_COMMIT=6a8cbc2fef0c94bf9455fee0d08e7357b47cef5b SOURCE_GIT_TAG=6a8cbc2fe SOURCE_GIT_URL=https://github.com/openshift/operator-framework-olm 

ADD manifests/ /manifests

# Copy the binary to a standard location where it will run.
COPY --from=builder /build/bin/olm /bin/olm
COPY --from=builder /build/bin/catalog /bin/catalog
COPY --from=builder /build/bin/collect-profiles /bin/collect-profiles
COPY --from=builder /build/bin/package-server /bin/package-server
COPY --from=builder /build/bin/cpb /bin/cpb
COPY --from=builder /build/bin/psm /bin/psm

# This image doesn't need to run as root user.
USER 1001

EXPOSE 8080
EXPOSE 5443

# Apply labels as needed. ART build automation fills in others required for
# shipping, including component NVR (name-version-release) and image name. OSBS
# applies others at build time. So most required labels need not be in the source.
#
# io.k8s.display-name is required and is displayed in certain places in the
# console (someone correct this if that's no longer the case)
#
# io.k8s.description is equivalent to "description" and should be defined per
# image; otherwise the parent image's description is inherited which is
# confusing at best when examining images.
#

LABEL \
        io.openshift.release.operator="true" \
        io.k8s.display-name="OpenShift Container Platform Operator Lifecycle Manager" \
        io.k8s.description="This is a component of OpenShift Container Platform and runs the Operator Lifecycle Manager" \
        maintainer="Odin Team <aos-odin@redhat.com>" \
        License="GPLv2+" \
        vendor="Red Hat" \
        name="openshift/ose-operator-lifecycle-manager" \
        com.redhat.component="operator-lifecycle-manager-container" \
        io.openshift.maintainer.product="OpenShift Container Platform" \
        io.openshift.maintainer.component="OLM" \
        release="202111151318.p0.g6a8cbc2.assembly.stream" \
        io.openshift.build.commit.id="6a8cbc2fef0c94bf9455fee0d08e7357b47cef5b" \
        io.openshift.build.source-location="https://github.com/openshift/operator-framework-olm" \
        io.openshift.build.commit.url="https://github.com/openshift/operator-framework-olm/commit/6a8cbc2fef0c94bf9455fee0d08e7357b47cef5b" \
        version="v4.9.0"

