如何使用GitLab组级部署令牌替代部署密钥构建Maven发布阶段
替换部署密钥为组级部署令牌实现Git操作与Maven认证
一、修改GitLab CI脚本
原脚本基于SSH部署密钥实现认证,现在替换为HTTPS方式的部署令牌认证,调整before_script部分如下:
release-job: stage: release when: manual before_script: - apt-get update && apt-get install -y git - git config --global user.email $GITLAB_USER_EMAIL - git config --global user.name $GITLAB_USER_ID - git checkout -B $CI_COMMIT_REF_NAME # 配置Git使用部署令牌认证(需提前在GitLab CI变量中设置DEPLOY_TOKEN_USER和DEPLOY_TOKEN_PASSWORD) - git config --global credential.helper store - echo "https://${DEPLOY_TOKEN_USER}:${DEPLOY_TOKEN_PASSWORD}@gitlab.com" > ~/.git-credentials # 将远程仓库URL从SSH切换为HTTPS(替换为你的实际组/项目路径) - git remote set-url origin https://gitlab.com/[你的组/项目路径].git script: - mvn -Dresume=false release:prepare release:perform -s $CI_PROJECT_DIR/mvn-settings.xml
关键修改点:
- 删除所有SSH相关配置(创建
.ssh目录、复制私钥、添加known_hosts) - 添加Git凭证配置,用部署令牌的用户名和密码生成HTTPS认证凭证
- 将Git远程仓库地址从SSH格式(
git@gitlab.com:...)切换为HTTPS格式,确保使用部署令牌认证
二、修改mvn-settings.xml配置
原配置使用CI_JOB_TOKEN,现在替换为部署令牌的用户名和密码,调整<servers>节点内容:
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> <servers> <server> <id>gitlab-maven</id> <!-- 使用组级部署令牌的用户名和密码 --> <username>${DEPLOY_TOKEN_USER}</username> <password>${DEPLOY_TOKEN_PASSWORD}</password> </server> </servers> </settings>
关键修改点:
- 删除原有的
httpHeaders配置 - 添加
<username>和<password>节点,引用GitLab CI中配置的部署令牌变量
前置准备
- 在GitLab项目的设置 → CI/CD → 变量中,添加两个变量:
DEPLOY_TOKEN_USER:组级部署令牌的用户名DEPLOY_TOKEN_PASSWORD:组级部署令牌的密码
- 确保组级部署令牌拥有对应项目的读/写权限(Maven发布通常需要仓库写入权限)
内容的提问来源于stack exchange,提问作者Roobal Jindal
相关产品推荐
相关产品推荐

