From b0adb111e4a9a7f06258e592fcf89093d78ec6cc Mon Sep 17 00:00:00 2001 From: Anand Kumar Singh Date: Thu, 28 Nov 2024 16:00:33 +0530 Subject: [PATCH] Create downstream container image for konflux (#808) * Create downstream container image for konflux Signed-off-by: Anand Kumar Singh * enable hermetic builds and update containerfile labels Signed-off-by: Anand Kumar Singh * use redhat go-toolset:1.22 image Signed-off-by: Anand Kumar Singh * enable multiarch Signed-off-by: Anand Kumar Singh * use only x86_64 for pull request builds Signed-off-by: Anand Kumar Singh --------- Signed-off-by: Anand Kumar Singh --- .tekton/gitops-operator-pull-request.yaml | 11 +++- .tekton/gitops-operator-push.yaml | 14 ++++- Containerfile.plugin | 68 +++++++++++++++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 Containerfile.plugin diff --git a/.tekton/gitops-operator-pull-request.yaml b/.tekton/gitops-operator-pull-request.yaml index 696e8f8da..947801eea 100644 --- a/.tekton/gitops-operator-pull-request.yaml +++ b/.tekton/gitops-operator-pull-request.yaml @@ -18,6 +18,9 @@ metadata: namespace: rh-openshift-gitops-tenant spec: params: + - name: build-platforms + value: + - linux/x86_64 - name: git-url value: '{{source_url}}' - name: revision @@ -27,7 +30,11 @@ spec: - name: image-expires-after value: 5d - name: dockerfile - value: Dockerfile + value: Containerfile.plugin + - name: hermetic + value: true + - name: prefetch-input + value: '{"type": "gomod", "path": "."}' pipelineSpec: finally: - name: show-sbom @@ -228,6 +235,8 @@ spec: - $(params.build-args[*]) - name: BUILD_ARGS_FILE value: $(params.build-args-file) + - name: TARGET_VERSION + value: '{{target_branch}}' runAfter: - prefetch-dependencies taskRef: diff --git a/.tekton/gitops-operator-push.yaml b/.tekton/gitops-operator-push.yaml index e1653394f..02c40584b 100644 --- a/.tekton/gitops-operator-push.yaml +++ b/.tekton/gitops-operator-push.yaml @@ -17,6 +17,12 @@ metadata: namespace: rh-openshift-gitops-tenant spec: params: + - name: build-platforms + value: + - linux/x86_64 + - linux/arm64 + - linux/ppc64le + - linux/s390x - name: git-url value: '{{source_url}}' - name: revision @@ -24,7 +30,11 @@ spec: - name: output-image value: quay.io/redhat-user-workloads/rh-openshift-gitops-tenant/openshift-gitops-operator/gitops-operator:{{revision}} - name: dockerfile - value: Dockerfile + value: Containerfile.plugin + - name: hermetic + value: true + - name: prefetch-input + value: '{"type": "gomod", "path": "."}' pipelineSpec: finally: - name: show-sbom @@ -220,6 +230,8 @@ spec: value: $(params.image-expires-after) - name: COMMIT_SHA value: $(tasks.clone-repository.results.commit) + - name: TARGET_VERSION + value: '{{target_branch}}' - name: BUILD_ARGS value: - $(params.build-args[*]) diff --git a/Containerfile.plugin b/Containerfile.plugin new file mode 100644 index 000000000..70fecc1d2 --- /dev/null +++ b/Containerfile.plugin @@ -0,0 +1,68 @@ +# Copyright 2021 Red Hat +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# -- + +FROM registry.redhat.io/rhel8/go-toolset:1.22.7-5.1731464728 AS builder + +ENV LANG=en_US.utf8 +ENV GIT_COMMITTER_NAME devtools +ENV GIT_COMMITTER_EMAIL devtools@redhat.com +LABEL com.redhat.delivery.appregistry=true + +WORKDIR /gitops-operator + +COPY go.mod go.mod +COPY go.sum go.sum +# cache deps before building and copying source so that we don't need to re-download as much +# and so that source changes don't invalidate our downloaded layer +RUN go mod download + +# Copy the go source +COPY cmd/main.go cmd/main.go +COPY api/ api/ +COPY controllers/ controllers/ +COPY common/ common/ +COPY version/ version/ + +ARG VERBOSE=2 +ENV GOFLAGS="-mod=mod" +RUN go build -o bin/manager ./cmd/main.go + +FROM registry.access.redhat.com/ubi8/ubi-minimal +ENV LANG=en_US.utf8 +COPY --from=builder /gitops-operator/bin/manager /usr/local/bin/manager +# Redis HA script templates +COPY build/redis /var/lib/redis +USER 10001 +ENTRYPOINT [ "/usr/local/bin/manager" ] + +LABEL \ + name="openshift-gitops-1/gitops-rhel8-operator" \ + version=${TARGET_VERSION} \ + License="Apache 2.0" \ + com.redhat.component="openshift-gitops-operator-container" \ + com.redhat.delivery.appregistry="false" \ + release=${CI_CONTAINER_RELEASE} \ + upstream-version=${CI_UPSTREAM_VERSION} \ + upstream-vcs-ref="${COMMIT_SHA}" \ + upstream-vcs-type="git" \ + summary="Openshift GitOps Operator Dockerfile Template" \ + maintainer="William Tam " \ + io.openshift.tags="openshift,gitops-operator" \ + io.k8s.display-name="Red Hat OpenShift GitOps Operator" \ + io.k8s.description="Red Hat OpenShift GitOps Operator" \ + io.openshift.maintainer.product="Red Hat OpenShift GitOps" \ + io.openshift.maintainer.component="William Tam " +