Skip to content

Commit 9e2b1f0

Browse files
authored
speed up docker builds (#92)
1 parent 87d4407 commit 9e2b1f0

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

.github/workflows/docker-publish.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ env:
2323

2424
jobs:
2525
build:
26-
runs-on: ubuntu-latest
26+
runs-on: ubuntu-latest-xl
2727
permissions:
2828
contents: read
2929
packages: write
@@ -67,6 +67,17 @@ jobs:
6767
with:
6868
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
6969

70+
- name: Go Build Cache for Docker
71+
uses: actions/cache@v4
72+
with:
73+
path: go-build-cache
74+
key: ${{ runner.os }}-go-build-cache-${{ hashFiles('**/go.sum') }}
75+
76+
- name: Inject go-build-cache
77+
uses: reproducible-containers/buildkit-cache-dance@4b2444fec0c0fb9dbf175a96c094720a692ef810 # v2.1.4
78+
with:
79+
cache-source: go-build-cache
80+
7081
# Build and push Docker image with Buildx (don't push on PR)
7182
# https://github.com/docker/build-push-action
7283
- name: Build and push Docker image

Dockerfile

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@ FROM golang:1.23.7 AS build
55
ARG VERSION
66
# Set the working directory
77
WORKDIR /build
8-
# Copy the current directory contents into the working directory
9-
COPY . .
8+
9+
RUN go env -w GOMODCACHE=/root/.cache/go-build
10+
1011
# Install dependencies
11-
RUN go mod download
12+
COPY go.mod go.sum ./
13+
RUN --mount=type=cache,target=/root/.cache/go-build go mod download
14+
15+
COPY . ./
1216
# Build the server
13-
RUN CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=${VERSION} -X main.commit=$(git rev-parse HEAD) -X main.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
17+
RUN --mount=type=cache,target=/root/.cache/go-build CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=${VERSION} -X main.commit=$(git rev-parse HEAD) -X main.date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
1418
-o github-mcp-server cmd/github-mcp-server/main.go
19+
1520
# Make a stage to run the app
1621
FROM gcr.io/distroless/base-debian12
1722
# Set the working directory

0 commit comments

Comments
 (0)