ci: added build and tagging
This commit is contained in:
+12
-6
@@ -1,8 +1,8 @@
|
||||
ARG GOARCH=amd64
|
||||
ARG GOOS=linux
|
||||
ARG CGO_ENABLED=0
|
||||
ARG VERSION=1.0.0
|
||||
ARG BUILD_TIME=unknown
|
||||
ARG SERVICE
|
||||
|
||||
# Stage 1: Build
|
||||
FROM docker.io/golang:1.24-alpine AS build
|
||||
@@ -12,32 +12,38 @@ ARG GOARCH
|
||||
ARG CGO_ENABLED
|
||||
ARG VERSION
|
||||
ARG BUILD_TIME
|
||||
ARG SERVICE
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
go mod download
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN CGO_ENABLED=${CGO_ENABLED} \
|
||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||
--mount=type=cache,target=/go/pkg/mod \
|
||||
CGO_ENABLED=${CGO_ENABLED} \
|
||||
GOOS=${GOOS} \
|
||||
GOARCH=${GOARCH} \
|
||||
go build -trimpath \
|
||||
-ldflags="-s -w -X 'main.Version=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}'" \
|
||||
-o /bin/app ./cmd/server
|
||||
-ldflags="-s -w -X 'main.BuildTime=${BUILD_TIME}'" \
|
||||
-o /bin/${SERVICE} ./cmd/${SERVICE}
|
||||
|
||||
# Stage 2: Runtime
|
||||
FROM docker.io/alpine:3.22 AS runtime
|
||||
|
||||
ARG VERSION
|
||||
ARG BUILD_TIME
|
||||
ARG SERVICE
|
||||
|
||||
RUN addgroup -S app && adduser -S -G app app
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=build /bin/app /app/bin
|
||||
COPY --from=build /bin/${SERVICE} /app/bin
|
||||
|
||||
RUN chown app:app /app/bin && chmod +x /app/bin
|
||||
|
||||
|
||||
Reference in New Issue
Block a user