Skip to content

Commit 048352a

Browse files
authored
Merge pull request #2 from xiaomakuaiz/feature/add-go-dev-image
Feature/add go dev image
2 parents 5f29005 + e680d94 commit 048352a

File tree

3 files changed

+68
-2
lines changed

3 files changed

+68
-2
lines changed

.github/workflows/ci.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,23 @@ on:
1313

1414
env:
1515
REGISTRY: ghcr.io/chaitin/monkeycode-runner
16-
STACK: base
17-
VERSION: bookworm
1816

1917
jobs:
2018
build:
2119
runs-on: ubuntu-latest
20+
strategy:
21+
matrix:
22+
include:
23+
- stack: base
24+
version: bookworm
25+
- stack: golang
26+
version: 1.25-bookworm
2227
permissions:
2328
contents: read
2429
packages: write
30+
env:
31+
STACK: ${{ matrix.stack }}
32+
VERSION: ${{ matrix.version }}
2533
steps:
2634
- name: Checkout
2735
uses: actions/checkout@v4

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,15 @@ Base container images for Chaitin MonkeyCode developer workflows.
88
- Push to GHCR: `PUSH=true REGISTRY=ghcr.io/chaitin/monkeycode-runner STACK=base VERSION=bookworm ./scripts/build.sh` (needs `docker login ghcr.io`).
99
- Run: `docker run --rm -it ghcr.io/chaitin/monkeycode-runner/base:bookworm bash`
1010

11+
## Go image (1.25-bookworm)
12+
- Dockerfile: `docker/golang/1.25-bookworm/Dockerfile` (extends the base image, installs Go 1.25.5 plus `staticcheck`, `gofumpt`, `swag`, `golangci-lint`).
13+
- Build locally: `STACK=golang VERSION=1.25-bookworm ./scripts/build.sh`
14+
- Push to GHCR: `PUSH=true REGISTRY=ghcr.io/chaitin/monkeycode-runner STACK=golang VERSION=1.25-bookworm ./scripts/build.sh`
15+
- Run: `docker run --rm -it ghcr.io/chaitin/monkeycode-runner/golang:1.25-bookworm bash`
16+
1117
## Layout
1218
- `docker/base/bookworm/Dockerfile` – base image definition.
19+
- `docker/golang/1.25-bookworm/Dockerfile` – Go developer image (bookworm + Go 1.25).
1320
- `scripts/build.sh` – helper to build/push images (env-driven: STACK, VERSION, REGISTRY, PUSH).
1421
- `docs/` – docs placeholder for future stacks and CI notes.
1522

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Go developer image based on DevRunner base (Debian bookworm)
2+
ARG BASE_IMAGE=ghcr.io/chaitin/monkeycode-runner/base:bookworm
3+
FROM ${BASE_IMAGE}
4+
5+
LABEL org.opencontainers.image.title="DevRunner Go" \
6+
org.opencontainers.image.source="https://github.com/chaitin/DevRunner" \
7+
org.opencontainers.image.description="Golang toolbox image for DevRunner stacks"
8+
9+
ARG GO_VERSION=1.25.5
10+
ARG GO_SHA256_AMD64=9e9b755d63b36acf30c12a9a3fc379243714c1c6d3dd72861da637f336ebb35b
11+
ARG GO_SHA256_ARM64=b00b694903d126c588c378e72d3545549935d3982635ba3f7a964c9fa23fe3b9
12+
13+
ARG GOLANGCI_LINT_VERSION=v1.61.0
14+
ARG GOLANGCI_LINT_SHA256_AMD64=77cb0af99379d9a21d5dc8c38364d060e864a01bd2f3e30b5e8cc550c3a54111
15+
ARG GOLANGCI_LINT_SHA256_ARM64=af60ac05566d9351615cb31b4cc070185c25bf8cbd9b09c1873aa5ec6f3cc17e
16+
17+
ARG TARGETOS
18+
ARG TARGETARCH
19+
ARG TARGETVARIANT
20+
21+
ENV GOROOT=/usr/local/go \
22+
GOPATH=/go \
23+
GOCACHE=/go/cache \
24+
PATH=/usr/local/go/bin:/go/bin:${PATH}
25+
26+
RUN set -eux; \
27+
mkdir -p "${GOPATH}" "${GOCACHE}"; \
28+
GO_OS="${TARGETOS:-linux}"; \
29+
GO_ARCH="${TARGETARCH:-amd64}"; \
30+
case "${GO_ARCH}" in \
31+
amd64) GO_ARCHIVE="${GO_OS}-amd64"; GO_SHA256="${GO_SHA256_AMD64}"; GCL_ARCH="linux-amd64"; GCL_SHA256="${GOLANGCI_LINT_SHA256_AMD64}";; \
32+
arm64) GO_ARCHIVE="${GO_OS}-arm64"; GO_SHA256="${GO_SHA256_ARM64}"; GCL_ARCH="linux-arm64"; GCL_SHA256="${GOLANGCI_LINT_SHA256_ARM64}";; \
33+
"") GO_ARCHIVE="${GO_OS}-amd64"; GO_SHA256="${GO_SHA256_AMD64}"; GCL_ARCH="linux-amd64"; GCL_SHA256="${GOLANGCI_LINT_SHA256_AMD64}";; \
34+
*) echo "Unsupported GOARCH: ${GO_ARCH}${TARGETVARIANT:+ (${TARGETVARIANT})}" >&2; exit 1;; \
35+
esac; \
36+
curl -fsSL "https://go.dev/dl/go${GO_VERSION}.${GO_ARCHIVE}.tar.gz" -o /tmp/go.tar.gz; \
37+
echo "${GO_SHA256} /tmp/go.tar.gz" | sha256sum -c -; \
38+
tar -C /usr/local -xzf /tmp/go.tar.gz; \
39+
rm /tmp/go.tar.gz; \
40+
go env; \
41+
go install honnef.co/go/tools/cmd/staticcheck@latest; \
42+
go install mvdan.cc/gofumpt@latest; \
43+
go install github.com/swaggo/swag/cmd/swag@latest; \
44+
GOLANGCI_LINT_VERSION_TRIMMED="${GOLANGCI_LINT_VERSION#v}"; \
45+
curl -fsSL "https://github.com/golangci/golangci-lint/releases/download/${GOLANGCI_LINT_VERSION}/golangci-lint-${GOLANGCI_LINT_VERSION_TRIMMED}-${GCL_ARCH}.tar.gz" -o /tmp/golangci-lint.tgz; \
46+
echo "${GCL_SHA256} /tmp/golangci-lint.tgz" | sha256sum -c -; \
47+
tar -C /tmp -xzf /tmp/golangci-lint.tgz; \
48+
install -m 0755 "/tmp/golangci-lint-${GOLANGCI_LINT_VERSION_TRIMMED}-${GCL_ARCH}/golangci-lint" /usr/local/bin/golangci-lint; \
49+
rm -rf /tmp/golangci-lint*
50+
51+
WORKDIR /workspace

0 commit comments

Comments
 (0)