build: bootstrap Go toolchain and generated APIs

This commit is contained in:
2026-08-31 08:01:13 +00:00
parent a110e1df57
commit e23737de0d
24 changed files with 7618 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
FROM golang:1.27.0-bookworm AS build
WORKDIR /src
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/rvbox-server ./cmd/rvbox-server \
&& CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags="-s -w" -o /out/rvc ./cmd/rvc
FROM alpine:3.22.1
RUN apk add --no-cache ca-certificates \
&& addgroup -S -g 65532 rvbox \
&& adduser -S -D -H -u 65532 -G rvbox rvbox
COPY --from=build /out/rvbox-server /usr/local/bin/rvbox-server
COPY --from=build /out/rvc /usr/local/bin/rvc
USER 65532:65532
ENTRYPOINT ["/usr/local/bin/rvbox-server"]
+40
View File
@@ -0,0 +1,40 @@
ARG BUF_VERSION=1.72.0
FROM bufbuild/buf:${BUF_VERSION} AS buf
FROM golang:1.27.0-bookworm
ARG PROTOC_VERSION=35.0
ARG PROTOC_AMD64_SHA256=a45cda0989c17dd950db55f6fbe1e5814c50fda08e87aa422980ac1f89dddbbc
ARG PROTOC_ARM64_SHA256=36b518ac14d90351cc6598228ed2bbe5afe4e357b1af470b07e0ec1609875de2
ARG PROTOC_GEN_GO_VERSION=1.36.12
ARG PROTOC_GEN_GO_GRPC_VERSION=1.6.2
ARG TARGETARCH
ENV GOCACHE=/cache/go-build \
GOMODCACHE=/cache/go/pkg/mod \
GOPATH=/cache/go \
PATH=/cache/go/bin:/usr/local/go/bin:/usr/local/bin:/usr/bin:/bin
COPY --from=buf /usr/local/bin/buf /usr/local/bin/buf
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates curl git make unzip \
&& rm -rf /var/lib/apt/lists/* \
&& case "${TARGETARCH}" in \
amd64) protoc_arch=x86_64; protoc_sha="${PROTOC_AMD64_SHA256}" ;; \
arm64) protoc_arch=aarch_64; protoc_sha="${PROTOC_ARM64_SHA256}" ;; \
*) echo "unsupported toolchain architecture: ${TARGETARCH}" >&2; exit 1 ;; \
esac \
&& curl -fsSLo /tmp/protoc.zip \
"https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-${protoc_arch}.zip" \
&& echo "${protoc_sha} /tmp/protoc.zip" | sha256sum -c - \
&& unzip -q /tmp/protoc.zip -d /usr/local \
&& rm /tmp/protoc.zip
RUN GOBIN=/usr/local/bin go install "google.golang.org/protobuf/cmd/protoc-gen-go@v${PROTOC_GEN_GO_VERSION}" \
&& GOBIN=/usr/local/bin go install "google.golang.org/grpc/cmd/protoc-gen-go-grpc@v${PROTOC_GEN_GO_GRPC_VERSION}"
RUN mkdir -p /cache/go-build /cache/go/pkg/mod /cache/xdg /workspace \
&& chown -R 1001:1001 /cache /workspace
WORKDIR /workspace
+5
View File
@@ -0,0 +1,5 @@
services:
toolchain:
environment:
RVBOX_TEST_RUN_ID: "${RVBOX_TEST_RUN_ID:?set by scripts/test-env}"
+24
View File
@@ -0,0 +1,24 @@
name: rvbox-dev
services:
toolchain:
build:
context: ..
dockerfile: deploy/Dockerfile.toolchain
working_dir: /workspace
user: "${RVBOX_UID:-1001}:${RVBOX_GID:-1001}"
environment:
IN_TOOLCHAIN: "1"
GOCACHE: /cache/go-build
GOMODCACHE: /cache/go/pkg/mod
GOPATH: /cache/go
HOME: /tmp
XDG_CACHE_HOME: /cache/xdg
volumes:
- ..:/workspace
- rvbox-go-build:/cache/go-build
- rvbox-go-mod:/cache/go/pkg/mod
volumes:
rvbox-go-build:
rvbox-go-mod: