天蓝色构建管道中的 Maven release:prepare
maven release:prepare in azure build pipeline
我正在尝试在 maven 工具中构建的 scala 项目上实施 azure devops。
我必须在项目中使用发布管理,以便我使用下面的 scm 连接和 maven-release
pom.xml 文件中如下所示的插件。
...
...
<groupId>com.group.id</groupId>
<artifactId>engineering-parsers</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
....
....
....
<scm>
<connection>scm:git:git@git.org.com:data-layer/engineering-parser.git</connection>
<developerConnection>scm:git:git@git.org.com:data-layer/engineering-parser.git</developerConnection>
<url>https://git.org.com/data-layer/engineering-parser</url>
<tag>v1.0.0</tag>
</scm>
...
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
...
我在 azure 构建管道中添加了一个 Maven 任务,如下所示,并提供了命令 release:prepare 并尝试使用 --batch-mode release:clean release:prepare -Dtag=2.0.0 -DreleaseVersion=2.0.0 -DdevelopmentVersion=2.0.1-SNAPSHOT -Dusername=Personal%20Access%20Token -Dpassword=xxxxxGIT PATxxxxx
虽然 运行 构建管道,maven 构建因抛出以下错误而失败。
似乎使用提供的命令我无法连接到 git 存储库并将更改推送到存储库。
在 devops 中使用 maven 发布插件时,我还需要添加什么吗?
感谢任何线索!
你需要在Maven调用中添加参数-B
以避免交互模式。
[ERROR] The git-commit command failed. ....
您好像还没有通过认证信息
您可以尝试在 pom.xml 文件中添加 project.scm.id
。
<properties>
<project.scm.id>my-scm-server</project.scm.id>
</properties>
然后你可以添加一个Settings.xml文件来通过认证。
<settings>
<servers>
<server>
<id>my-scm-server</id>
<username>myUser</username>
<password>myPassword</password>
</server>
</servers>
</settings>
这里是a doc,你可以参考一下
或者您可以尝试在命令中传递身份验证信息(不推荐)。
release:prepare -Dusername=[username] -Dpassword=[password]
您可以参考this ticket了解更多信息。
According to the value in pom.xml rather than hard coding..Is there
any way?
为了达到这个目的,需要使用powershell脚本获取对应位置的值,并将其设置为管道变量。
例如:
$filePath = "filepath/pom.xml"
[xml]$pomXml = Get-Content $filePath
$version = $pomXml.project.version
Write-Host "##vso[task.setvariable variable=version]$version"
此时可以得到json文件所在位置对应的参数值
然后你可以使用变量(例如$(version)
)来代替硬编码。
更新:
您可以尝试在 Maven 任务之前添加额外的命令行任务到 运行 git 配置命令。
git config --global user.email "you@example.com"
git config --global user.name "PAT"
我正在尝试在 maven 工具中构建的 scala 项目上实施 azure devops。
我必须在项目中使用发布管理,以便我使用下面的 scm 连接和 maven-release pom.xml 文件中如下所示的插件。
...
...
<groupId>com.group.id</groupId>
<artifactId>engineering-parsers</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
....
....
....
<scm>
<connection>scm:git:git@git.org.com:data-layer/engineering-parser.git</connection>
<developerConnection>scm:git:git@git.org.com:data-layer/engineering-parser.git</developerConnection>
<url>https://git.org.com/data-layer/engineering-parser</url>
<tag>v1.0.0</tag>
</scm>
...
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<checkModificationExcludes>
<checkModificationExclude>pom.xml</checkModificationExclude>
</checkModificationExcludes>
</configuration>
</plugin>
</plugins>
</build>
...
...
我在 azure 构建管道中添加了一个 Maven 任务,如下所示,并提供了命令 release:prepare 并尝试使用 --batch-mode release:clean release:prepare -Dtag=2.0.0 -DreleaseVersion=2.0.0 -DdevelopmentVersion=2.0.1-SNAPSHOT -Dusername=Personal%20Access%20Token -Dpassword=xxxxxGIT PATxxxxx
虽然 运行 构建管道,maven 构建因抛出以下错误而失败。
似乎使用提供的命令我无法连接到 git 存储库并将更改推送到存储库。
在 devops 中使用 maven 发布插件时,我还需要添加什么吗?
感谢任何线索!
你需要在Maven调用中添加参数-B
以避免交互模式。
[ERROR] The git-commit command failed. ....
您好像还没有通过认证信息
您可以尝试在 pom.xml 文件中添加 project.scm.id
。
<properties>
<project.scm.id>my-scm-server</project.scm.id>
</properties>
然后你可以添加一个Settings.xml文件来通过认证。
<settings>
<servers>
<server>
<id>my-scm-server</id>
<username>myUser</username>
<password>myPassword</password>
</server>
</servers>
</settings>
这里是a doc,你可以参考一下
或者您可以尝试在命令中传递身份验证信息(不推荐)。
release:prepare -Dusername=[username] -Dpassword=[password]
您可以参考this ticket了解更多信息。
According to the value in pom.xml rather than hard coding..Is there any way?
为了达到这个目的,需要使用powershell脚本获取对应位置的值,并将其设置为管道变量。
例如:
$filePath = "filepath/pom.xml"
[xml]$pomXml = Get-Content $filePath
$version = $pomXml.project.version
Write-Host "##vso[task.setvariable variable=version]$version"
此时可以得到json文件所在位置对应的参数值
然后你可以使用变量(例如$(version)
)来代替硬编码。
更新:
您可以尝试在 Maven 任务之前添加额外的命令行任务到 运行 git 配置命令。
git config --global user.email "you@example.com"
git config --global user.name "PAT"