# syntax=docker/dockerfile:1 FROM golang:1.27-bookworm AS builder WORKDIR /src COPY go.mod go.sum ./ COPY cmd ./cmd COPY pkg ./pkg RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" \ -o /out/gitdata-actions-engine ./cmd/gitdata-actions-engine FROM debian:bookworm-slim AS node-runtimes RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ curl \ xz-utils \ && rm -rf /var/lib/apt/lists/* \ && mkdir -p /opt/gitdata/node \ && for version in 12.22.12 16.20.2 20.19.0 24.21.0; do \ mkdir -p "/opt/gitdata/node/node${version%%.*}"; \ curl -fsSL "https://nodejs.org/dist/v${version}/node-v${version}-linux-x64.tar.xz" \ | tar -xJ --strip-components=1 -C "/opt/gitdata/node/node${version%%.*}"; \ done FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ git \ openssh-client \ tar \ gzip \ xz-utils \ && rm -rf /var/lib/apt/lists/* \ && useradd --system --create-home --uid 10001 gitdata \ && mkdir -p /work \ && chown -R gitdata:gitdata /work COPY --from=builder /out/gitdata-actions-engine /usr/local/bin/gitdata-actions-engine COPY --from=node-runtimes --chown=gitdata:gitdata /opt/gitdata/node /opt/gitdata/node USER gitdata WORKDIR /work ENTRYPOINT ["/usr/local/bin/gitdata-actions-engine"]