7 git maven maven-release-plugin gitlab-ci
我们正在尝试使用maven执行maven版本.我们使用gitlab作为CI工具.问题是当我们尝试执行maven发布时,maven无法将pom.xml更新到下一次迭代.
谷歌对我的问题没有答案.我试过的是: - 试图检查试图推送的用户的权限(在回购中具有主访问权限并且分支受到保护) - 主人有权访问我的仓库中的受保护分支.
下面是我的.gitlab-ci.yml文件 -
Maven_Release:
stage: Maven_Release
image: maven_Build:Latest
script:
- git config --global user.name "username"
- git config --global user.email "Email"
- git checkout -f master
- git remote set-url origin https://gitlab.com/test1/project/${CI_PROJECT_NAME}.git
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa
- ssh-keyscan -p 10022 gitlab.com >> ~/.ssh/known_hosts
- mvn -B -s settings.xml -DdeployAtEnd=false -Dmaven.site.deploy.skip=true -Dresume=false -DautoVersionSubmodules=true -DdryRun=false -Djsse.enableSNIExtension=false -Dmaven.test.skip=true -DreleaseVersion=1.0.0 -DdevelopmentVersion=1.0.1 -DskipITs -DscmCommentPrefix="[ci skip]" release:prepare release:perform
when: manual
only:
- master
Run Code Online (Sandbox Code Playgroud)
我试图运行这个工作,它能够部署,标记版本,但由于以下错误,它无法将pom.xml版本更改为下一次迭代,
[INFO] Checking in modified POMs...
[INFO] commit done: [ci skip]prepare release REL_xxxxx
[INFO] push changes to remote... refs/heads/master:refs/heads/master
[INFO] fetch url: https:/usrname:password@gitlabt.com/test/project/projectname.git
[INFO] push url: https:/usrname:password@gitlabt.com/test/project/projectname.git
[INFO] REJECTED_OTHER_REASON - RemoteRefUpdate[remoteName=refs/heads/master, REJECTED_OTHER_REASON, (null)...xx3xxx9c7cdc6dxx, fastForward, srcRef=refs/heads/master, message="pre-receive hook declined"]
[INFO] Tagging release with the label REL_xxxxx...
[INFO] push tag [REL_xxxxxx] to remote...
[INFO] fetch url: https:/usrname:password@gitlabt.com/test/project/projectname.git
[INFO] push url: https:/usrname:password@gitlabt.com/test/project/projectname.git
[INFO] OK - RemoteRefUpdate[remoteName=refs/tags/REL_xxxxx, OK, (null)...c5ce4d1fdf5f0a9415d9f02a48aab4f536eab52c, fastForward, srcRef=refs/tags/REL_xxxxx, message=null]
[INFO] Transforming 'project name'...
[INFO] Transforming 'Rproject'...
[INFO] Transforming 'project'...
[INFO] Updating project name to xxx-SNAPSHOT
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] commit done: [ci skip]prepare for next development iteration
[INFO] push changes to remote... refs/heads/master:refs/heads/master
[INFO] fetch url: https:/usrname:password@gitlabt.com/test/project/projectname.git
[INFO] push url: https:/usrname:password@gitlabt.com/test/project/projectname.git
[INFO] REJECTED_OTHER_REASON - RemoteRefUpdate[remoteName=refs/heads/master, REJECTED_OTHER_REASON, (null)...1xxxxx541baf208dxxxd, fastForward, srcRef=refs/heads/master, message="pre-receive hook declined"]
[INFO] Release preparation complete.
[INFO]
[INFO] --- maven-release-plugin:2.5.1:perform (default-cli) @ mobile-interface-parent ---
Run Code Online (Sandbox Code Playgroud)
非常感谢您的意见和帮助!
你开始:
mkdir -p ~/.ssh
echo "$SSH_PRIVATE_KEY" > /root/.ssh/id_rsa
ssh-keyscan -p 10022 gitlab.com >> ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
这非常适合提供具有开发人员权限的正确 SSH 密钥以推回 GitLab 存储库(或具有相同权限的部署密钥)
但是……你不用它!
git remote set-url origin https://gitlab.com/test1/project/${CI_PROJECT_NAME}.git
Run Code Online (Sandbox Code Playgroud)
那是一个 https URL,而不是一个 SSH URL(ssh://git@gitlabt.com/test/project/projectname.git或git@gitlabt.com:test/project/projectname.git)。
(我假设gitlabt.com是一个错字,你实际上看到了gitlab.com)
任何 https URL 都将使用git config credential.helper具有为该 URL 记忆的凭据的 。这些凭据可能不是允许mvn release:prepare推回 GitLab 存储库的正确凭据。
检查pom.xml:它可以把它的URL来mvn release与scm部分:
<scm>
<developerConnection>scm:git:ssh://git@gitlab.com:/test1/project/${CI_PROJECT_NAME}.git</developerConnection>
</scm>
Run Code Online (Sandbox Code Playgroud)
developerConnection如果您希望您~/.ssh/id_rsa真正有用,请确保其中有一个 SSH URL 。
我给出了不同的电子邮件 ID。但是 maven 无法找出确切的问题,并给出了“
REJECTED_OTHER_REASON - RemoteRefUpdate”。
因此,我尝试提供其他电子邮件 ID,并且效果很好。另外,在 GitLab 中,我尝试修改 push
rules :::: project settings>Repository>push Rules。
如果我们需要使用不同的电子邮件地址,我也删除了提交者限制。
| 归档时间: |
|
| 查看次数: |
3203 次 |
| 最近记录: |