mirror of
https://github.com/actions/actions-runner-controller.git
synced 2025-12-10 19:50:30 +00:00
Adding multi-arch image support for `arm64` and `amd64`. This uses dockers new `buildx` feature, to enable further architectures more work will be required to update the `runner/Dockerfile` file to pull architecture-specific releases. The Makefile targets really should only be used for local testing and not for release, additional work to appropriately tag the release images may need to be added but for now, I've not added that logic. Fixes: #86 Signed-off-by: Michael Fornaro <20387402+xUnholy@users.noreply.github.com>
38 lines
918 B
Docker
38 lines
918 B
Docker
# Build the manager binary
|
|
FROM golang:1.13 as builder
|
|
|
|
ARG TARGETPLATFORM
|
|
|
|
WORKDIR /workspace
|
|
|
|
ENV GO111MODULE=on \
|
|
CGO_ENABLED=0
|
|
|
|
# Copy the Go Modules manifests
|
|
COPY go.mod 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 . .
|
|
|
|
# Build
|
|
RUN export GOOS=$(echo ${TARGETPLATFORM} | cut -d / -f1) && \
|
|
export GOARCH=$(echo ${TARGETPLATFORM} | cut -d / -f2) && \
|
|
GOARM=$(echo ${TARGETPLATFORM} | cut -d / -f3 | cut -c2-) && \
|
|
go build -a -o manager main.go
|
|
|
|
# Use distroless as minimal base image to package the manager binary
|
|
# Refer to https://github.com/GoogleContainerTools/distroless for more details
|
|
FROM gcr.io/distroless/static:nonroot
|
|
|
|
WORKDIR /
|
|
|
|
COPY --from=builder /workspace/manager .
|
|
|
|
USER nonroot:nonroot
|
|
|
|
ENTRYPOINT ["/manager"]
|