天蓝色构建管道中的 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"