FROM registry.suse.com/bci/golang:1.22 AS build
RUN zypper -n install -l openssl-devel
WORKDIR /src
COPY go.mod go.sum /src/
RUN go mod download
COPY cmd/operator/main.go /src/
COPY api /src/api
COPY controllers /src/controllers
COPY internal /src/internal
COPY pkg /src/pkg
COPY cmd /src/cmd
# Set arg/env after go mod download, otherwise we invalidate the cached layers due to the commit changing easily

FROM build AS build-operator
ARG TAG=v0.0.0
ARG COMMIT=""
ARG COMMITDATE=""
ENV CGO_ENABLED=0
RUN go build  \
    -ldflags "-w -s  \
    -X github.com/rancher/elemental-operator/pkg/version.Version=$TAG  \
    -X github.com/rancher/elemental-operator/pkg/version.Commit=$COMMIT  \
    -X github.com/rancher/elemental-operator/pkg/version.CommitDate=$COMMITDATE"  \
    -o /usr/sbin/elemental-operator ./cmd/operator

FROM build AS build-register
ARG TAG=v0.0.0
ARG COMMIT=""
ARG COMMITDATE=""
ENV CGO_ENABLED=1
RUN go build  \
    -ldflags "-w -s  \
    -X github.com/rancher/elemental-operator/pkg/version.Version=$TAG  \
    -X github.com/rancher/elemental-operator/pkg/version.Commit=$COMMIT  \
    -X github.com/rancher/elemental-operator/pkg/version.CommitDate=$COMMITDATE"  \
    -o /usr/sbin/elemental-register ./cmd/register
ENV CGO_ENABLED=0
RUN go build  \
    -ldflags "-w -s  \
    -X github.com/rancher/elemental-operator/pkg/version.Version=$TAG  \
    -X github.com/rancher/elemental-operator/pkg/version.Commit=$COMMIT  \
    -X github.com/rancher/elemental-operator/pkg/version.CommitDate=$COMMITDATE"  \
    -o /usr/sbin/elemental-support ./cmd/support


FROM scratch AS elemental-operator
COPY --from=build /var/lib/ca-certificates/ca-bundle.pem /etc/ssl/certs/ca-certificates.crt
COPY --from=build-operator /usr/sbin/elemental-operator /usr/sbin/elemental-operator
USER 10010:10010
ENTRYPOINT ["/usr/sbin/elemental-operator"]

FROM scratch AS elemental-register
COPY --from=build /var/lib/ca-certificates/ca-bundle.pem /etc/ssl/certs/ca-certificates.crt
COPY --from=build-register /usr/sbin/elemental-register /usr/sbin/elemental-register
COPY --from=build-register /usr/sbin/elemental-support /usr/sbin/elemental-support
ENTRYPOINT ["/usr/sbin/elemental-register"]
