Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,15 @@ COPY LICENSE /licenses/
USER 65532

LABEL \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-rhel8-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-rhel8" \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}" \
version=$VERSION \
summary="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
maintainer="serverless-support@redhat.com" \
description="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.display-name="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.description="Red Hat OpenShift Serverless {{.project}}{{.component}}" \
io.openshift.tags="{{.component_dashcase}}"
io.openshift.tags="{{.component_dashcase}}" \
cpe="cpe:/a:redhat:openshift_serverless:{{.short_version}}::{{.shortRhelVersion}}"

ENTRYPOINT ["{{.app_file}}"]
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,16 @@ RUN ln -s {{.app_file}} /usr/local/bin/deploy && \
USER 65532

LABEL \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-rhel8-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-rhel8" \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}" \
version=$VERSION \
summary="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
maintainer="serverless-support@redhat.com" \
description="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.display-name="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.description="Red Hat OpenShift Serverless {{.project}}{{.component}}" \
io.openshift.tags="{{.component_dashcase}}"
io.openshift.tags="{{.component_dashcase}}" \
cpe="cpe:/a:redhat:openshift_serverless:{{.short_version}}::{{.shortRhelVersion}}"


ENTRYPOINT ["/usr/bin/bash"]
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,15 @@ RUN mkdir -p $LOGS_DIR && \
USER 65532

LABEL \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}rhel8-container" \
name="openshift-serverless-1/svls-{{.project_dashcase}}rhel8" \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}-{{.rhelVersion}}-container" \
name="openshift-serverless-1/serverless-{{.project_dashcase}}-{{.rhelVersion}}" \
version={{.version}} \
summary="Red Hat OpenShift Serverless 1 {{.project}}" \
maintainer="serverless-support@redhat.com" \
description="Red Hat OpenShift Serverless 1 {{.project}}" \
io.k8s.display-name="Red Hat OpenShift Serverless 1 {{.project}}" \
io.k8s.description="Red Hat OpenShift Serverless {{.project}}" \
io.openshift.tags="{{.main}}"
io.openshift.tags="{{.main}}" \
cpe="cpe:/a:redhat:openshift_serverless:{{.short_version}}::{{.shortRhelVersion}}"

ENTRYPOINT /usr/bin/gather
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,15 @@ COPY LICENSE /licenses/
USER 65532

LABEL \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-rhel9-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-rhel8" \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}" \
version=$VERSION \
summary="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
maintainer="serverless-support@redhat.com" \
description="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.display-name="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.description="Red Hat OpenShift Serverless {{.project}}{{.component}}" \
io.openshift.tags="{{.component_dashcase}}"
io.openshift.tags="{{.component_dashcase}}" \
cpe="cpe:/a:redhat:openshift_serverless:{{.short_version}}::{{.shortRhelVersion}}"

ENTRYPOINT ["{{.app_file}}"]
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,15 @@ RUN ln -s {{.app_file}} /usr/local/bin/deploy && \
USER 65532

LABEL \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-rhel9-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-rhel8" \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}-container" \
name="openshift-serverless-1/{{.project_dashcase}}{{.component_dashcase}}-{{.rhelVersion}}" \
version=$VERSION \
summary="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
maintainer="serverless-support@redhat.com" \
description="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.display-name="Red Hat OpenShift Serverless 1 {{.project}}{{.component}}" \
io.k8s.description="Red Hat OpenShift Serverless {{.project}}{{.component}}" \
io.openshift.tags="{{.component_dashcase}}"
io.openshift.tags="{{.component_dashcase}}" \
cpe="cpe:/a:redhat:openshift_serverless:{{.short_version}}::{{.shortRhelVersion}}"

ENTRYPOINT ["/usr/bin/bash"]
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,15 @@ RUN mkdir -p $LOGS_DIR && \
USER 65532

LABEL \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}rhel9-container" \
name="openshift-serverless-1/svls-{{.project_dashcase}}rhel8" \
com.redhat.component="openshift-serverless-1-{{.project_dashcase}}-{{.rhelVersion}}-container" \
name="openshift-serverless-1/serverless-{{.project_dashcase}}-{{.rhelVersion}}" \
version={{.version}} \
summary="Red Hat OpenShift Serverless 1 {{.project}}" \
maintainer="serverless-support@redhat.com" \
description="Red Hat OpenShift Serverless 1 {{.project}}" \
io.k8s.display-name="Red Hat OpenShift Serverless 1 {{.project}}" \
io.k8s.description="Red Hat OpenShift Serverless {{.project}}" \
io.openshift.tags="{{.main}}"
io.openshift.tags="{{.main}}" \
cpe="cpe:/a:redhat:openshift_serverless:{{.short_version}}::{{.shortRhelVersion}}"

ENTRYPOINT /usr/bin/gather
47 changes: 43 additions & 4 deletions pkg/dockerfilegen/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ import (
"strings"
"text/template"

"github.com/openshift-knative/hack/pkg/soversion"

"github.com/coreos/go-semver/semver"
"github.com/openshift-knative/hack/pkg/project"
"github.com/openshift-knative/hack/pkg/prowgen"
Expand Down Expand Up @@ -166,15 +168,31 @@ func generateDockerfile(params Params, mainPackagesPaths sets.Set[string]) error
}

rhelVersion := RHEL9
if metadata.Project.Tag != "" {
var soVersion string
projectTag := metadata.Project.Tag
if projectTag == "main" || metadata.Project.Tag == "" {
projectTag = "knative-v1.17"
log.Println("Use Default version substitution for main branch")
}
if projectTag != "" && projectTag != "main" {
// Handle knative-vX.Y tags
// tag before knative-v1.17
minorVersion, err := strconv.Atoi(strings.Replace(metadata.Project.Tag, "knative-v1.", "", 1))
if err != nil {
if strings.HasPrefix(projectTag, "knative-v1.") {
minorVersion, err := strconv.Atoi(strings.Replace(projectTag, "knative-v1.", "", 1))
if err != nil {
log.Printf("Failed to parse minor version from tag %q: %v", projectTag, err)
minorVersion = 17 // fallback
}
if minorVersion < 17 {
rhelVersion = RHEL8
}
semverSoVersion := soversion.FromUpstreamVersion(strings.Replace(projectTag, "knative-v", "", 1))
soVersion = fmt.Sprintf("%v.%v", semverSoVersion.Major, semverSoVersion.Minor)
}
} else {
if metadata.Project.Version == "main" || metadata.Project.Version == "" {
metadata.Project.Version = "1.37.0" //fallback
}
// version before 1.37+
if metadata.Project.Version != "" {
semVer := semver.New(metadata.Project.Version)
Expand All @@ -183,6 +201,7 @@ func generateDockerfile(params Params, mainPackagesPaths sets.Set[string]) error
rhelVersion = RHEL8
}
}
soVersion = fmt.Sprintf("%v.%v", semVer.Major, semVer.Minor)
}
}

Expand Down Expand Up @@ -255,7 +274,7 @@ func generateDockerfile(params Params, mainPackagesPaths sets.Set[string]) error
projectWithSep = capitalize(projectName) + " "
projectDashCaseWithSep = projectName + "-"
}

elVersion := "el" + strings.TrimPrefix(rhelVersion, "rhel-")
d := map[string]interface{}{
"main": p,
"app_file": appFile,
Expand All @@ -267,6 +286,9 @@ func generateDockerfile(params Params, mainPackagesPaths sets.Set[string]) error
"component_dashcase": dashcase(p),
"additional_instructions": additionalInstructions,
"build_env_vars": buildEnvs,
"rhelVersion": strings.ReplaceAll(rhelVersion, "-", ""),
"short_version": soVersion,
"shortRhelVersion": elVersion,
}

var dockerfileTemplate embed.FS
Expand Down Expand Up @@ -405,13 +427,30 @@ func generateMustGatherDockerfile(params Params) error {
return fmt.Errorf("%w: Could not get oc binary name: %w",
ErrUnsupportedRepo, errors.WithStack(err))
}
rhelVersion := RHEL9
var soVersion string
elVersion := "el" + strings.TrimPrefix(rhelVersion, "rhel-")

if metadata.Project.Version != "" {
semVer := semver.New(metadata.Project.Version)
if semVer != nil {
if semVer.Minor < 37 {
rhelVersion = RHEL8
}
}
soVersion = fmt.Sprintf("%v.%v", semVer.Major, semVer.Minor)
}

d := map[string]interface{}{
"main": projectName,
"oc_cli_artifacts": ocClientArtifactsImage,
"oc_binary_name": ocBinaryName,
"version": metadata.Project.Version,
"project": capitalize(projectName),
"project_dashcase": projectDashCaseWithSep,
"rhelVersion": strings.ReplaceAll(rhelVersion, "-", ""),
"short_version": soVersion,
"shortRhelVersion": elVersion,
}
out := filepath.Join(params.Output, params.DockerfilesDir, filepath.Base(projectName))
if _, err = saveDockerfile(d, DockerfileMustGatherTemplate, out, ""); err != nil {
Expand Down
10 changes: 5 additions & 5 deletions pkg/dockerfilegen/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@ package dockerfilegen

import "embed"

//go:embed dockerfile-templates/Default.dockerfile.tmpl
//go:embed dockerfile-templates/Default.dockerfile.tmpl dockerfile-templates/rhel-9/*.tmpl
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
//go:embed dockerfile-templates/Default.dockerfile.tmpl dockerfile-templates/rhel-9/*.tmpl
//go:embed dockerfile-templates/Default.dockerfile.tmpl dockerfile-templates/rhel-9/*

It should be dir input, otherwise pattern match with suffix doesn't work.

var DockerfileDefaultTemplate embed.FS

//go:embed dockerfile-templates/FuncUtil.dockerfile.tmpl
//go:embed dockerfile-templates/FuncUtil.dockerfile.tmpl dockerfile-templates/rhel-9/*.tmpl
var DockerfileFuncUtilTemplate embed.FS

//go:embed dockerfile-templates/BuildImage.dockerfile.tmpl
//go:embed dockerfile-templates/BuildImage.dockerfile.tmpl dockerfile-templates/rhel-9/*.tmpl
var DockerfileBuildImageTemplate embed.FS

//go:embed dockerfile-templates/SourceImage.dockerfile.tmpl
//go:embed dockerfile-templates/SourceImage.dockerfile.tmpl dockerfile-templates/rhel-9/*.tmpl
var DockerfileSourceImageTemplate embed.FS

//go:embed dockerfile-templates/MustGather.dockerfile.tmpl
//go:embed dockerfile-templates/MustGather.dockerfile.tmpl dockerfile-templates/rhel-9/*.tmpl
var DockerfileMustGatherTemplate embed.FS

//go:embed ubi8.rpms.lock.yaml
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
FROM registry.ci.openshift.org/ocp/4.17:cli-artifacts as tools

# Dockerfile to bootstrap build and test in openshift-ci
FROM registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17 as builder
FROM registry.ci.openshift.org/openshift/release:rhel-9-release-golang-1.22-openshift-4.17 as builder

ARG TARGETARCH

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# DO NOT EDIT! Generated Dockerfile for cmd/discover.
ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-8-release-golang-1.22-openshift-4.17
ARG GO_BUILDER=registry.ci.openshift.org/openshift/release:rhel-9-release-golang-1.22-openshift-4.17
ARG GO_RUNTIME=registry.access.redhat.com/ubi8/ubi-minimal

FROM $GO_BUILDER as builder
Expand All @@ -25,14 +25,15 @@ COPY LICENSE /licenses/
USER 65532

LABEL \
com.redhat.component="openshift-serverless-1-knative-discover-rhel8-container" \
name="openshift-serverless-1/knative-discover-rhel8" \
com.redhat.component="openshift-serverless-1-knative-discover-rhel9-container" \
name="openshift-serverless-1/knative-discover-rhel9" \
version=$VERSION \
summary="Red Hat OpenShift Serverless 1 Knative Discover" \
maintainer="serverless-support@redhat.com" \
description="Red Hat OpenShift Serverless 1 Knative Discover" \
io.k8s.display-name="Red Hat OpenShift Serverless 1 Knative Discover" \
io.k8s.description="Red Hat OpenShift Serverless Knative Discover" \
io.openshift.tags="discover"
io.openshift.tags="discover" \
cpe="cpe:/a:redhat:openshift_serverless:1.37::el9"

ENTRYPOINT ["/usr/bin/discover"]
Loading