perf(ci): pre-install all tools in pre-commit Docker image
All checks were successful
CI / Test (pull_request) Successful in 53s
CI / Build (pull_request) Successful in 38s
CI / Format Check (pull_request) Successful in 2s
CI / Lint (pull_request) Successful in 26s

- Move Go 1.25.3 installation to Dockerfile
- Pre-install protobuf plugins and golangci-lint in image
- Set environment variables in Dockerfile
- Remove runtime installation steps from pre-commit script
- Significantly improves pre-commit check performance
This commit is contained in:
2025-11-07 10:16:12 +01:00
parent 75c5293c8c
commit a785cd73de
2 changed files with 39 additions and 25 deletions

View File

@@ -1,4 +1,40 @@
FROM alpine:latest FROM alpine:latest
# install node (Alpine) # Install system dependencies
RUN apk add --no-cache nodejs npm gcc build-base musl-dev curl make RUN apk add --no-cache \
nodejs \
npm \
gcc \
build-base \
musl-dev \
curl \
make \
wget \
tar \
bash \
git \
protobuf \
protobuf-dev
# Install Go 1.25.3
RUN cd /tmp && \
wget -q https://go.dev/dl/go1.25.3.linux-amd64.tar.gz && \
tar -C /usr/local -xzf go1.25.3.linux-amd64.tar.gz && \
rm go1.25.3.linux-amd64.tar.gz
# Set up Go environment
ENV PATH=/usr/local/go/bin:$PATH:/root/go/bin
ENV GOROOT=/usr/local/go
ENV GOPATH=/root/go
ENV CGO_ENABLED=1
ENV GOFLAGS=-buildvcs=false
# Install Go protobuf plugins
RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest && \
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# Install golangci-lint
RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b /root/go/bin
# Set working directory
WORKDIR /workspace

View File

@@ -30,32 +30,10 @@ docker run --rm \
-w /workspace \ -w /workspace \
"$IMAGE_NAME:latest" \ "$IMAGE_NAME:latest" \
sh -c " sh -c "
echo '📦 Installing Go 1.25.3 and required tools...'
apk add --no-cache protobuf protobuf-dev bash git wget tar make || exit 1
# Install Go 1.25.3
cd /tmp && \
wget -q https://go.dev/dl/go1.25.3.linux-amd64.tar.gz && \
tar -C /usr/local -xzf go1.25.3.linux-amd64.tar.gz && \
rm go1.25.3.linux-amd64.tar.gz || exit 1
export PATH=/usr/local/go/bin:\$PATH:/root/go/bin
export GOROOT=/usr/local/go
export GOPATH=/root/go
echo '📥 Installing Go protobuf plugins...'
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest || exit 1
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest || exit 1
echo '📥 Installing golangci-lint...'
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b /root/go/bin || exit 1
echo '📋 Running make fmt-check...' echo '📋 Running make fmt-check...'
cd /workspace && make fmt-check || exit 1 make fmt-check || exit 1
echo '🔍 Running make lint...' echo '🔍 Running make lint...'
export CGO_ENABLED=1
export GOFLAGS=-buildvcs=false
make lint || exit 1 make lint || exit 1
echo '🧪 Running make test...' echo '🧪 Running make test...'