Golang CI Docker镜像公开测试版发布
Golang CI Docker镜像公开测试版发布 大家好,
对于那些不了解的朋友,我们在 CircleCI 维护了一系列 Docker 镜像,我们称之为便利镜像,涵盖多种语言和数据库。这些镜像旨在运行您的 CI 环境。
我们之前使用的基础设施陈旧且复杂,因此我们一直在设计一套新的镜像系列。这当然包括一个新的 Go 镜像。
如果您已经在使用 CircleCI 来构建/测试/部署您的 Go 项目(或者想要这样做),如果您能试用我们的新镜像,我将非常感激。镜像名称为 cimg/go,标签为 Go 版本,例如 1.12 或 1.13.2。
所有内容都是开源的,您可以在这里找到 GitHub 仓库,在这里找到 Docker Hub 仓库。
我们的目标是:
- 提供一个对 CI 有用的 Go Docker 镜像。
- 收集关于此镜像是否适用于您的项目,或者是否缺少某些功能,或者您认为它做了某些“错误”的反馈。
- 如果您是从我们旧版镜像
circleci/golang迁移过来的,请提供关于此镜像在您那里的使用情况的反馈。
如有任何问题,请告诉我,谢谢!
更多关于Golang CI Docker镜像公开测试版发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang CI Docker镜像公开测试版发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
很高兴看到CircleCI发布了新的Go语言CI Docker镜像。作为Go语言开发者,这个镜像的发布对CI/CD流程的标准化和优化很有帮助。以下是我对这个镜像的一些专业看法和示例代码:
镜像特点分析
从GitHub仓库来看,cimg/go镜像有几个值得关注的改进:
- 版本标签更清晰:直接使用Go版本号作为标签,如
1.13.2 - 分层结构合理:基于Ubuntu LTS,包含了常用的构建工具
- 体积优化:相比旧版镜像可能进行了精简
使用示例
基础使用
# 在Dockerfile中使用
FROM cimg/go:1.13.2
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o myapp .
CircleCI配置示例
# .circleci/config.yml
version: 2.1
jobs:
build:
docker:
- image: cimg/go:1.13.2
steps:
- checkout
- run:
name: "下载依赖"
command: go mod download
- run:
name: "运行测试"
command: go test ./... -v
- run:
name: "构建"
command: go build -o myapp ./cmd/main.go
workflows:
version: 2
build-and-test:
jobs:
- build
多阶段构建示例
# 使用cimg/go进行构建,然后使用更小的运行时镜像
FROM cimg/go:1.13.2 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/main .
CMD ["./main"]
迁移注意事项
从circleci/golang迁移到cimg/go时需要注意:
- 环境变量变化:检查是否有环境变量差异
- 工具链版本:确认包含的辅助工具版本(如git、curl等)
- 缓存策略:可能需要调整缓存目录路径
测试建议
对于想要测试这个镜像的开发者,建议:
# 本地测试镜像
docker run --rm -it cimg/go:1.13.2 go version
# 测试构建环境
docker run --rm -v $(pwd):/app -w /app cimg/go:1.13.2 \
sh -c "go mod download && go test ./..."
这个新镜像的设计看起来更加现代化,特别是版本标签策略的改进让依赖管理更清晰。对于Go项目CI/CD流程来说,这是一个值得尝试的升级选项。

