如何解决使用 maven 将工件推送到 Gitlab
我有一个项目用于将工件推送到 Nexus,但我们现在需要更改它以将其推送到 Gitlab。当我的 CI/CD 管道尝试执行此部署时,出现以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy
(default-deploy) on project foo: Failed to retrieve remote Metadata foo:1.0.4-SNAPSHOT/maven-
Metadata.xml: Could not transfer Metadata foo:1.0.4-SNAPSHOT/maven-Metadata.xml from/to foo-
snapshots (https://foo.nexus.com/repository/foo-snapshots/): Not authorized -> [Help 1]
请注意,它仍在尝试将其推送到 Nexus,而不是推送到 Gitlab。如何更改 gitlab-ci.yml 文件或 settings.xml 以将其推送到 Gitlab?
这是我的 gitlab-ci.yml 文件:
stages:
- build
deploy:
stage: build
script:
- mvn clean deploy -e -B -U -Ddist=true -s settings.xml
请注意,在将其推送到 Nexus 之前,这是脚本中的第一行代码:
mvn-settings -u "${NEXUS_DEPLOY_USER}" -p "${NEXUS_DEPLOY_PASS}" --master-password "${NEXUS_MASTER_PASS}" -s foo-snapshots
。但是我认为我可以通过执行 -s settings.xml
来覆盖它。
在这个 settings.xml 中是我的 gitlab 令牌:
<server>
<id>foo</id>
<configuration>
<httpHeaders>
<property>
<name>Job-Token</name>
<value>${env.CI_JOB_TOKEN}</value>
并在其下定义了一些分发存储库:
<profiles>
<profile>
<id>gitlab-foo</id>
<repositories>
<repository>
<id>foo</id>
<url>https://gitlab.foo/api/v4/projects/700/packages/maven</url>
</repository>
</repositories>
<properties>
<distribution.repository.id>foo-snapshots</distribution.repository.id>
<url>https://gitlab.foo/api/v4/projects/700/packages/maven</url>
这里也是我的 pom.xml 文件的相关部分:
<distributionManagement>
<repository>
<id>foo-snapshots</id>
<url>https://gitlab.foo/api/v4/projects/706/packages/maven</url>
</repository>
<snapshotRepository>
<id>foo-snapshots</id>
<url>https://gitlab.foo/api/v4/projects/706/packages/maven</url>
</snapshotRepository>
</distributionManagement>
解决方法
确保您已指定部署存储库。您可以通过几种不同的方式执行此操作:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。