GitLab CLI 中带有令牌的 maven-release 插件

问题描述 投票:0回答:1

我正在开发的项目使用 maven-release 插件来管理版本并将工件发布到包注册表。为了在 GitLab CI 管道的上下文中使用它,到目前为止,我使用了 SSH 密钥解决方法,这使得这项工作可行:

release-job:
  image: maven:3.9.6-eclipse-temurin-17-focal
  stage: release
  rules:
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $VERSION'
  script:
    - git config --global user.email "[email protected]" # just putting some stuff in here
    - git config --global user.name "GitLab"
    - mvn -B -DscmCommentPrefix="[skip ci]" release:prepare release:perform -DreleaseVersion=$VERSION --settings settings.xml

因为 SSH 密钥与特定用户的 GitLab 帐户绑定,并且需要比访问令牌更多的设置,所以我现在想切换到这些密钥。为此,我必须使用这样的 https-remote:

https://oauth2:$TOKEN@$REPO_URL
(变量名称在这里应该是不言自明的)。但令我困惑的是,我还没有设法让 Maven 使用 git 远程。

首先,我尝试在脚本中的一个步骤中设置 git 远程,如下所示:

git remote set-url --push https://oauth2:$TOKEN@$REPO_URL
。在管道的日志中,我可以看到 Maven 忽略了 git 远程并尝试推送到在
pom.xml
中设置的 ssh 远程:
[INFO] Executing: /bin/sh -c cd '/builds/dev/pipeline-test' && 'git' 'push' 'git@****/pipeline-test.git' 'refs/heads/main:refs/heads/main'
(实际存储库 URL 已编辑,
git@***
部分是它应该在的位置)说
https://...
但没有)。
接下来,我尝试通过参数传入远程:
mvn -B -DconnectionUrl=scm:git:$REMOTE ...

Maven 也忽略了这一点。我已经浏览了整个项目文档的大部分内容,并尝试了我能找到的每个选项如何传递该变量,但结果总是相同的。

有人曾经这样做过并可以告诉我如何强制 Maven Release 插件推送到不同的 git 远程吗?

maven gitlab maven-release-plugin
1个回答
0
投票

要使

maven-release-plugin
使用gitlab
project access token
,您可以按照以下步骤操作:

  1. 创建一个具有
    Access Token
    权限的 Gitlab
    api
  2. 使用 Access Token 的值创建一个 Gitlab
    Variable
    ,我们称之为
    MavenReleaseToken
  3. 在您的
    pom.xml
    中修改
    scm
    :

<scm>     <connection>scm:git:https://root:[email protected]/gitlab/demo.git</connection>
        <url>https://gitlab.company.de/gitlab/demo.git</url>
        <tag>HEAD</tag> </scm>

  1. 在您的
    mvn
    命令中使用
    -Dusername=root -Dpassword=$MavenReleaseToken

有关更多信息,请参阅:https://blog.ordix.de/maven-release-mit-der-gitlab-ci

© www.soinside.com 2019 - 2024. All rights reserved.