diff --git a/manageiq-operator/Dockerfile b/manageiq-operator/Dockerfile index 6721871d..e8e076f5 100644 --- a/manageiq-operator/Dockerfile +++ b/manageiq-operator/Dockerfile @@ -1,5 +1,15 @@ # Build the manager binary -FROM docker.io/library/golang:1.23 as builder +FROM registry.access.redhat.com/ubi9/ubi-minimal as builder + +COPY go.mod /go.mod + +RUN microdnf -y install gzip jq tar && \ + arch=$(uname -m | sed 's/x86_64/amd64/') && \ + goversion=$(sed -nr 's/^go\s+(.*)/go\1/p' /go.mod) && \ + file=$(curl -s 'https://go.dev/dl/?mode=json&include=all' | jq -r --arg GOVERSION "${goversion}" --arg ARCH "${arch}" 'first(.[] | select(.version | startswith($GOVERSION))).files[] | select(.arch == $ARCH and .os == "linux").filename') && \ + curl -s -f -L https://go.dev/dl/${file} | tar -C / -xzf - + +ENV PATH=/go/bin:/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin WORKDIR /workspace # Copy the Go Modules manifests @@ -14,9 +24,11 @@ COPY cmd/main.go cmd/main.go COPY api/ api/ COPY internal/controller/ internal/controller/ -# Build +# Build go executable RUN CGO_ENABLED=0 go build -a -o manager cmd/main.go + +# Build operator image FROM registry.access.redhat.com/ubi9/ubi-minimal:latest LABEL name="ManageIQ Operator" \ diff --git a/spec/manageiq-operator/go_version_spec.rb b/spec/manageiq-operator/go_version_spec.rb index d4ca7873..733f679c 100644 --- a/spec/manageiq-operator/go_version_spec.rb +++ b/spec/manageiq-operator/go_version_spec.rb @@ -1,11 +1,9 @@ describe "Go Version" do it "matches go.mod" do require 'awesome_spawn' - dockerfile_version = File.read(ROOT.join("manageiq-operator", "Dockerfile")).match(/^FROM.+golang:(\d+\.\d+).+/)[1] - mod_version = File.read(ROOT.join("manageiq-operator", "go.mod")).match(/^go\s(\d+\.\d+)/)[1] - running_version = AwesomeSpawn.run!("go version", :chdir => ROOT.join("manageiq-operator")).output.match(/.*\sgo(\d+\.\d+).*/)[1] + mod_version = File.read(ROOT.join("manageiq-operator", "go.mod")).match(/^go\s(\d+\.\d+)/)[1] + running_version = AwesomeSpawn.run!("go version", :chdir => ROOT.join("manageiq-operator")).output.match(/.*\sgo(\d+\.\d+).*/)[1] - expect(dockerfile_version).to eq(mod_version) - expect(running_version).to eq(mod_version) + expect(running_version).to eq(mod_version) end end