- Config loader with env var expansion and validation - SQLite database with tasks and toolchain_versions tables - Gitea REST API client for repository and branch operations - K8s client for Job lifecycle management (with noop fallback for local dev) - REST API: tasks CRUD, retry, plugins, version management - Worker/scheduler with polling, concurrency control, and job tracking - Static frontend: generate, tasks, settings pages - Toolchain images: Go and Node.js Dockerfiles with entrypoint scripts - Helm chart with deployment, service, configmap, ingress, PVC - Multi-stage Dockerfile for service - Unit tests for config, database, gitclient, k8s, api, worker - E2E tests for idempotency, version switch, failure recovery
27 lines
929 B
Docker
27 lines
929 B
Docker
FROM alpine:3.19
|
|
|
|
ARG PROTOC_VERSION=25.1
|
|
ARG PROTOC_GEN_GO_VERSION=v1.34.2
|
|
ARG PROTOC_GEN_GO_GRPC_VERSION=v1.5.0
|
|
|
|
RUN apk add --no-cache git curl unzip
|
|
|
|
RUN curl -sLO https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
|
unzip -o protoc-${PROTOC_VERSION}-linux-x86_64.zip -d /usr/local && \
|
|
rm protoc-${PROTOC_VERSION}-linux-x86_64.zip
|
|
|
|
RUN curl -sLO https://go.dev/dl/go1.22.5.linux-amd64.tar.gz && \
|
|
tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gz && \
|
|
rm go1.22.5.linux-amd64.tar.gz
|
|
|
|
ENV PATH="/usr/local/go/bin:/root/go/bin:${PATH}"
|
|
ENV GOPATH="/root/go"
|
|
|
|
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@${PROTOC_GEN_GO_VERSION} && \
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@${PROTOC_GEN_GO_GRPC_VERSION}
|
|
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|