FROM --platform=$BUILDPLATFORM docker.io/golang:1.24-alpine3.21 AS build RUN addgroup -g 1000 -S crow && \ adduser -u 1000 -G crow -S crow && \ mkdir -p /etc/crow && \ ln -s /etc/crow /etc/woodpecker && \ chown -R crow:crow /etc/crow /etc/woodpecker RUN apk add --no-cache -q just git WORKDIR /src COPY . . ARG TARGETOS TARGETARCH CI_COMMIT_SHA CI_COMMIT_TAG CI_COMMIT_BRANCH ENV GOOS=$TARGETOS ENV GOARCH=$TARGETARCH RUN --mount=type=cache,target=/root/.cache/go-build \ --mount=type=cache,target=/go/pkg \ just build-agent FROM scratch ENV GODEBUG=netdns=go # Internal setting do NOT change! Signals that crow is running inside a container ENV WOODPECKER_IN_CONTAINER=true EXPOSE 3000 # copy certs from build image COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt # copy agent binary COPY --from=build /src/dist/crow-agent /bin/ COPY --from=build /etc/crow /etc COPY --from=build /etc/passwd /etc/passwd COPY --from=build /etc/group /etc/group HEALTHCHECK CMD ["/bin/crow-agent", "ping"] ENTRYPOINT ["/bin/crow-agent"]