Golang CI Docker镜像公开测试版发布

Golang CI Docker镜像公开测试版发布 大家好,

对于那些不了解的朋友,我们在 CircleCI 维护了一系列 Docker 镜像,我们称之为便利镜像,涵盖多种语言和数据库。这些镜像旨在运行您的 CI 环境。

我们之前使用的基础设施陈旧且复杂,因此我们一直在设计一套新的镜像系列。这当然包括一个新的 Go 镜像。

如果您已经在使用 CircleCI 来构建/测试/部署您的 Go 项目(或者想要这样做),如果您能试用我们的新镜像,我将非常感激。镜像名称为 cimg/go,标签为 Go 版本,例如 1.121.13.2

所有内容都是开源的,您可以在这里找到 GitHub 仓库,在这里找到 Docker Hub 仓库。

我们的目标是:

  1. 提供一个对 CI 有用的 Go Docker 镜像。
  2. 收集关于此镜像是否适用于您的项目,或者是否缺少某些功能,或者您认为它做了某些“错误”的反馈。
  3. 如果您是从我们旧版镜像 circleci/golang 迁移过来的,请提供关于此镜像在您那里的使用情况的反馈。

如有任何问题,请告诉我,谢谢!


更多关于Golang CI Docker镜像公开测试版发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang CI Docker镜像公开测试版发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


很高兴看到CircleCI发布了新的Go语言CI Docker镜像。作为Go语言开发者,这个镜像的发布对CI/CD流程的标准化和优化很有帮助。以下是我对这个镜像的一些专业看法和示例代码:

镜像特点分析

从GitHub仓库来看,cimg/go镜像有几个值得关注的改进:

  1. 版本标签更清晰:直接使用Go版本号作为标签,如1.13.2
  2. 分层结构合理:基于Ubuntu LTS,包含了常用的构建工具
  3. 体积优化:相比旧版镜像可能进行了精简

使用示例

基础使用

# 在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时需要注意:

  1. 环境变量变化:检查是否有环境变量差异
  2. 工具链版本:确认包含的辅助工具版本(如git、curl等)
  3. 缓存策略:可能需要调整缓存目录路径

测试建议

对于想要测试这个镜像的开发者,建议:

# 本地测试镜像
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流程来说,这是一个值得尝试的升级选项。

回到顶部