Skip to content

Commit

Permalink
Merge pull request #1173 from bdunne/ubi_golang
Browse files Browse the repository at this point in the history
Prefer UBI and go download over library/golang

(cherry picked from commit 07b6768)
  • Loading branch information
Fryguy committed Oct 22, 2024
1 parent c979da4 commit 0b3b3aa
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
16 changes: 14 additions & 2 deletions manageiq-operator/Dockerfile
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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" \
Expand Down
8 changes: 3 additions & 5 deletions spec/manageiq-operator/go_version_spec.rb
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 0b3b3aa

Please sign in to comment.