From ebdf453e43845fb7beec3317a1869befa5a571e5 Mon Sep 17 00:00:00 2001 From: Johannes Batzill Date: Fri, 31 Jan 2025 01:41:53 +0000 Subject: [PATCH] feat: [CODE-3122]: Add dockerfile for new ui (#3359) --- Dockerfile.uiv2 | 85 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Dockerfile.uiv2 diff --git a/Dockerfile.uiv2 b/Dockerfile.uiv2 new file mode 100644 index 000000000..95b4f2ef4 --- /dev/null +++ b/Dockerfile.uiv2 @@ -0,0 +1,85 @@ +# ---------------------------------------------------------# +# Pull UIv2 image # +# ---------------------------------------------------------# + +# opensource-ui is only pushed as linux/arm64 - okay since we only copy files. +FROM --platform=linux/arm64 harness/opensource-ui:alpha.453 as uiv2 + +# ---------------------------------------------------------# +# Build Harness image # +# ---------------------------------------------------------# +FROM --platform=$BUILDPLATFORM golang:1.22-alpine3.18 as builder + +RUN apk update \ + && apk add --no-cache protoc build-base git + +# Setup workig dir +WORKDIR /app +RUN git config --global --add safe.directory '/app' + +# Get dependencies - will also be cached if we won't change mod/sum +COPY go.mod . +COPY go.sum . + +COPY Makefile . +ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE" +RUN make dep +RUN make tools +# COPY the source code as the last step +COPY . . + +COPY --from=uiv2 /canary-dist /app/web/dist + +# build +ARG GIT_COMMIT +ARG GITNESS_VERSION_MAJOR +ARG GITNESS_VERSION_MINOR +ARG GITNESS_VERSION_PATCH +ARG TARGETOS TARGETARCH + +RUN if [ "$TARGETARCH" = "arm64" ]; then \ + wget -P ~ https://musl.cc/aarch64-linux-musl-cross.tgz && \ + tar -xvf ~/aarch64-linux-musl-cross.tgz -C ~ ; \ + fi + +# set required build flags +RUN --mount=type=cache,target=/root/.cache/go-build \ + --mount=type=cache,target=/go/pkg \ + if [ "$TARGETARCH" = "arm64" ]; then CC=~/aarch64-linux-musl-cross/bin/aarch64-linux-musl-gcc; fi && \ + LDFLAGS="-X github.com/harness/gitness/version.GitCommit=${GIT_COMMIT} -X github.com/harness/gitness/version.major=${GITNESS_VERSION_MAJOR} -X github.com/harness/gitness/version.minor=${GITNESS_VERSION_MINOR} -X github.com/harness/gitness/version.patch=${GITNESS_VERSION_PATCH} -extldflags '-static'" && \ + CGO_ENABLED=1 \ + GOOS=$TARGETOS GOARCH=$TARGETARCH \ + CC=$CC go build -ldflags="$LDFLAGS" -o ./gitness ./cmd/gitness + +### Pull CA Certs +FROM --platform=$BUILDPLATFORM alpine:latest as cert-image + +RUN apk --update add ca-certificates + +# ---------------------------------------------------------# +# Create final image # +# ---------------------------------------------------------# +FROM --platform=$TARGETPLATFORM alpine/git:2.43.0 as final + +# setup app dir and its content +WORKDIR /app +VOLUME /data + +ENV XDG_CACHE_HOME /data +ENV GITNESS_GIT_ROOT /data +ENV GITNESS_DATABASE_DRIVER sqlite3 +ENV GITNESS_DATABASE_DATASOURCE /data/database.sqlite +ENV GITNESS_METRIC_ENABLED=true +ENV GITNESS_METRIC_ENDPOINT=https://stats.drone.ci/api/v1/gitness +ENV GITNESS_TOKEN_COOKIE_NAME=token +ENV GITNESS_DOCKER_API_VERSION 1.41 +ENV GITNESS_SSH_ENABLE=true +ENV GITNESS_GITSPACE_ENABLE=true + +COPY --from=builder /app/gitness /app/gitness +COPY --from=cert-image /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt + +EXPOSE 3000 +EXPOSE 3022 + +ENTRYPOINT [ "/app/gitness", "server" ]