如何解决Maven 发布:在 azure 管道上执行失败,因为它无法读取存储库的密码
我有一个父 pom,我在其中使用了 maven-release-plugin,以及需要推送到 Azure 工件的工件。我能够让它在我的本地工作,现在我正在尝试使用 azure 管道使其自动化,但我收到了 mvn release:perform
的以下错误。
错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.0-M1:perform (default-cli) on project my-parent-repo: Unable to checkout from SCM
[ERROR] Provider message:
[ERROR] The git-clone command Failed.
[ERROR] Command output:
[ERROR] cloning into 'checkout'...
[ERROR] fatal: Could not read Password for 'https:********@dev.azure.com': terminal prompts disabled
[ERROR] -> [Help 1]
我的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<scm>
<developerConnection>scm:git:https://$(PAT)@dev.azure.com/my-org/my-prjt/_git/my-parent-repo/</developerConnection>
<tag>HEAD</tag>
</scm>
<groupId>dispute</groupId>
<artifactId>my-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Microservice DI parent</name>
<description>DI microservice parent </description>
<distributionManagement>
<!-- Publish the versioned releases here -->
<repository>
<id>repo</id>
<name>Artifact repo</name>
<url>https://xxx.pkgs.visualstudio.com/2abc/_packaging/my-maven-artifacts/maven/v1</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M1</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>my-maven-artifacts</id>
<url>
https://xxx.pkgs.visualstudio.com/2abc/_packaging/my-maven-artifacts/maven/v1
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>Pod4-artifacts</id>
<url>
https://xxx.pkgs.visualstudio.com/2abc/_packaging/my-maven-artifacts/maven/v1
</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<properties>
<!-- Build properties -->
<maven.version>3.3.9</maven.version>
<java.version>11</java.version>
</properties>
</project>
修复尝试:
我已在代理作业上启用 Allow scripts to access the OAuth token
。我还为项目集合服务帐户和项目集合构建服务提供了在存储库下创建标签、分支和贡献的权限。
此外,还有一个包含用户名和密码的 ci-settings.xml 用于 repo id,它们在 Azure 管道的 Maven 任务中作为参数提供。
-e -B -s $(System.DefaultWorkingDirectory)/ci-settings.xml
如果有什么遗漏,请告诉我。请注意,它在我的本地运行良好。
解决方法
由于您使用的是 PAT 令牌而不是 OAuth 令牌,因此我们不需要启用选项 Allow scripts to access the OAuth token
。如果你想使用这个,你可以使用这个网址
https://$env:SYSTEM_ACCESSTOKEN@dev.azure.com/my-org/my-prjt/_git/my-parent-repo
我们应该在select repo权限下为账户Project Collection Build Service(Org name)
提供创建标签、分支、贡献的权限,而不是在All Repositories
权限页面下配置权限。
我们也可以尝试在 pom 文件中设置 PAT token
而不是变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。