
rancher/goreleaserrancher/goreleaser 是 Rancher 团队基于官方 goreleaser 工具定制的 Docker 镜像,专为 Go 项目的自动化构建、打包和发布流程设计。该镜像集成了 Rancher 生态系统的最佳实践,优化了与 Rancher CI/CD 工具链的兼容性,可简化 Go 应用在开发、测试和生产环境中的版本管理、多平台构建及分发流程。
bash# 基本构建(使用项目根目录的 .goreleaser.yml 配置) docker run --rm -v $(pwd):/workspace -w /workspace rancher/goreleaser release --snapshot # 带环境变量的发布(例如指定 GitHub Token) docker run --rm \ -v $(pwd):/workspace \ -w /workspace \ -e GITHUB_TOKEN=your_github_token \ rancher/goreleaser release
在项目根目录创建 .goreleaser.yml 配置文件,示例:
yamlproject_name: my-go-app env: - GO111MODULE=on before: hooks: - go mod tidy builds: - env: - CGO_ENABLED=0 goos: [linux, darwin] goarch: [amd64, arm64] binary: my-app dockers: - image_templates: - "rancher/my-go-app:{{ .Version }}" - "rancher/my-go-app:latest" dockerfile: Dockerfile build_flag_templates: - "--label=org.opencontainers.image.version={{ .Version }}" release: github: owner: rancher repo: my-go-app draft: false prerelease: false changelog: sort: asc filters: exclude: - "^docs:" - "^test:"
创建 docker-compose.yml:
yamlversion: '3.8' services: goreleaser: image: rancher/goreleaser volumes: - .:/workspace working_dir: /workspace environment: - GITHUB_TOKEN=${GITHUB_TOKEN} - DOCKER_REGISTRY=${DOCKER_REGISTRY} command: release --rm-dist
运行:
bash# 加载环境变量并执行 export GITHUB_TOKEN=your_token export DOCKER_REGISTRY=rancher.io docker-compose up
| 环境变量 | 说明 | 示例值 |
|---|---|---|
GITHUB_TOKEN | GitHub API Token(用于发布 Releases) | ghp_xxxx |
DOCKER_REGISTRY | 目标 Docker 镜像仓库 | rancher.io 或私有仓库地址 |
GO_VERSION | 覆盖默认 Go 版本 | 1.21 |
RELEASE_TAG | 手动指定发布版本号(覆盖自动生成) | v1.2.3 |
.goreleaser.yml 是核心配置文件,主要配置项:
builds:定义构建参数(Go 版本、目标平台、二进制名称等)dockers:Docker 镜像构建配置(镜像名、Dockerfile 路径等)release:发布目标配置(GitHub/GitLab 仓库信息)changelog:发布说明生成规则before.hooks:构建前执行的命令(如 go mod tidy).goreleaser.yml 配置文件--snapshot 参数测试构建流程(不会实际发布)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务