
qcastel/maven-release该Docker镜像预设了git、maven和gpg环境,并集成了由bot触发发布的脚本,旨在简化Maven项目的自动化发布流程。通过提供预置工具链和自动化脚本,支持GPG签名、版本管理、安全认证等关键发布环节,适用于CI/CD环境中由bot执行的可靠发布任务。
mvn prepare步骤执行失败,自动回滚发布过程,保障代码库一致性适用于需要自动化Maven项目发布流程的场景,特别适合:
镜像内置核心发布脚本:release.sh,用于执行完整的发布流程自动化。
脚本运行依赖以下环境变量,需根据项目需求配置:
| 变量名 | 说明 |
|---|---|
GPG_ENABLED | 是否启用GPG签名(true/false) |
GPG_KEY_ID | GPG签名密钥ID |
GPG_KEY | base64编码的GPG私钥 |
GPG_PASSPHRASE | GPG私钥解密密码 |
| 变量名 | 说明 |
|---|---|
SSH_PRIVATE_KEY | base64编码的SSH私钥 |
SSH_ROOT_FOLDER | SSH根目录,默认值为${SSH_ROOT_FOLDER} |
SSH_EXTRA_KNOWN_HOST | 需添加到.ssh/known_hosts的额外主机名 |
SSH_PASSPHRASE | SSH私钥解密密码(若私钥加密) |
| 变量名 | 说明 |
|---|---|
MAVEN_REPO_SERVER_ID | Maven仓库服务器ID(用于推送artifacts) |
MAVEN_REPO_SERVER_USERNAME | Maven仓库认证用户名 |
MAVEN_REPO_SERVER_PASSWORD | Maven仓库认证密码 |
MAVEN_PROJECT_FOLDER | 执行Maven命令的项目根目录 |
MAVEN_ARGS | 发布过程中传递给Maven的额外参数 |
MAVEN_OPTION | Maven运行选项(如JVM参数等) |
MAVEN_DEVELOPMENT_VERSION_NUMBER | 开发版本号格式 |
MAVEN_RELEASE_VERSION_NUMBER | 发布版本号格式 |
| 变量名 | 说明 |
|---|---|
DOCKER_REGISTRY_ID | Docker仓库ID(如registry.hub.docker.com) |
DOCKER_REGISTRY_USERNAME | Docker仓库认证用户名 |
DOCKER_REGISTRY_PASSWORD | Docker仓库认证密码 |
| 变量名 | 说明 |
|---|---|
SKIP_GIT_SANITY_CHECK | 设为true跳过git完整性检查(会重置分支) |
SKIP_PERFORM | 设为false不跳过maven perform步骤 |
GIT_RELEASE_BOT_NAME | Git提交时使用的bot用户名 |
GIT_RELEASE_BOT_EMAIL | Git提交时使用的bot用户*** |
CI_COMMIT_SHA | 触发工作流的提交SHA值 |
CI_COMMIT_REF_NAME | 触发工作流的分支或标签引用 |
VERSION_MAJOR | 设为true以递增主版本号 |
VERSION_MINOR | 设为true以递增次版本号 |
RELEASE_BRANCH_NAME | 自定义发布分支名称(仅在该分支触发发布) |
bashdocker run -e GPG_ENABLED=true \ -e GPG_KEY_ID=ABC*** \ -e GPG_KEY="$(base64 /local/path/to/gpg_private.key)" \ -e GPG_PASSPHRASE=your_gpg_passphrase \ -e SSH_PRIVATE_KEY="$(base64 /local/path/to/ssh_private.key)" \ -e MAVEN_REPO_SERVER_ID=central \ -e MAVEN_REPO_SERVER_USERNAME=maven_user \ -e MAVEN_REPO_SERVER_PASSWORD=maven_pass \ -e VERSION_MINOR=true \ -e RELEASE_BRANCH_NAME=release \ [镜像名称] /release.sh
yamlversion: '3' services: maven-release: image: [镜像名称] environment: GPG_ENABLED: "true" GPG_KEY_ID: "ABC***" GPG_KEY: "${GPG_PRIVATE_KEY_BASE64}" GPG_PASSPHRASE: "${GPG_PASSPHRASE}" SSH_PRIVATE_KEY: "${SSH_PRIVATE_KEY_BASE64}" MAVEN_REPO_SERVER_ID: "central" MAVEN_REPO_SERVER_USERNAME: "${MAVEN_USERNAME}" MAVEN_REPO_SERVER_PASSWORD: "${MAVEN_PASSWORD}" VERSION_MINOR: "true" RELEASE_BRANCH_NAME: "release" GIT_RELEASE_BOT_NAME: "release-bot" GIT_RELEASE_BOT_*** "***" command: /release.sh

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务