如何配置CircleCI(自定义YML/现有ORB)发布Java库至GitHub Packages
解决CircleCI发布Java正式版到GitHub Packages的密钥权限问题
核心问题分析
mvn release:prepare和release:perform会修改版本号并提交到GitHub仓库,默认CircleCI的部署密钥如果是只读的就会触发报错。你配置了写入权限的密钥但未生效,大概率是CircleCI没有正确关联该密钥完成Git操作。
无需GPG的标准ORB方案:CircleCI官方Maven ORB
官方circleci/maven orb已支持GitHub Packages发布,且不需要强制GPG配置,具体步骤如下:
配置CircleCI环境变量
- 在项目的CircleCI设置中添加两个环境变量:
GITHUB_TOKEN:拥有仓库写入权限的个人访问令牌(PAT),优先用PAT而非部署密钥,避免SSH密钥的权限映射问题GITHUB_USERNAME:你的GitHub用户名
- 在项目的CircleCI设置中添加两个环境变量:
编写CircleCI配置文件
替换现有发布步骤,示例config.yml:version: 2.1 orbs: maven: circleci/maven@1.4.1 workflows: release-workflow: jobs: - maven/release: release-branch-pattern: main # 替换为你的主分支名称 maven-command: "release:prepare release:perform -DskipTests -s .circleci/settings.xml" git-user-email: "你的Git邮箱" git-user-name: "你的Git用户名"修正settings.xml配置
确保.circleci/settings.xml中GitHub Packages的服务器配置关联环境变量:<servers> <server> <id>github</id> <username>${env.GITHUB_USERNAME}</username> <password>${env.GITHUB_TOKEN}</password> </server> </servers>
替代方案:手动配置Git认证
如果不想使用ORB,可在发布步骤前手动配置Git认证:
jobs: release: docker: - image: cimg/openjdk:17.0 steps: - checkout - run: name: 配置Git身份与远程仓库 command: | git config user.name "你的Git用户名" git config user.email "你的Git邮箱" # 替换远程仓库为HTTPS协议,用PAT认证 git remote set-url origin https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/你的用户名/你的仓库名.git - run: command: mvn release:prepare release:perform -DskipTests -s .circleci/settings.xml -f pom.xml
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

