从azure-pipelines中的pom.xml读取yaml文件中的项目版本

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

我有一个

pom.xml
文件,其中包含我的项目版本,如下所示

 <version> 1.14.0 </version>

我还有一个 YAML 文件,当测试通过时它会自动生成 GitHub 标签,就像这样

- job: createTag
    dependsOn: ifBranchIsMaster
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')
    steps:
      - task: GitHubRelease@0
        displayName: ‘Create GitHub Release’
        inputs:
          gitHubConnection: $(GITHUB_CONNECTION)
          repositoryName: $(GITHUB_REPO)
          action: create
          tag: 1.14.0

并且我想从我的 YAML 文件中删除硬编码版本标签并立即从

pom.xml
读取它是否有可能发生我尝试将硬编码版本最小化为 1。我想在 1 中更改它到处放置和改变。

xml azure-devops pom.xml azure-pipelines
3个回答
6
投票

所以我想出了一个脚本来解决我的问题并读取所有pom.xml中的

<version>1.14.1</version>

这是一个 powershell 脚本

[xml]$pomXml = Get-Content .\pom.xml
# version
Write-Host $pomXml.project.version
$version=$pomXml.project.version
Write-Host "##vso[task.setvariable variable=version]$version"

我还会提供 bash 脚本,以防有人需要

#!/usr/bin/env bash
version=$(grep version pom.xml | grep -v '<?xml' | grep '<version>'|head -n 1|awk '{print $1}'| cut -d'>' -f 2 | cut -d'<' -f 1)
echo "##vso[task.setvariable variable=version]$version"

这就是我发现可以从 pom.xml 获取版本的方法


2
投票

您可以创建一个 PowerShell 脚本,从

pom.xml
文件中读取变量并设置管道变量。在
tag:
使用此变量。

例如:

$filePath = "path/to/pom.xml"
$version = (Select-String -Path $filePath -Pattern "<version>").Line
$version = $version.Split(" ")[1]
Write-Host "##vso[task.setvariable variable=version]$version"

阅读版本的另一个选项是:

[xml]$pomXml = Get-Content $filePath
$version = $pomXml.project.version

GitHubRelease@
任务中使用变量:

tag: $(version)

0
投票

这将获取不带 -SNAPSHOT 的版本并将其保存在变量中

versionFromPom
:

steps:
  - bash: echo "##vso[task.setvariable variable=versionFromPom]$(cat ./pom.xml | grep -m 1 "<version>" | grep -Po '<version>\K\d{1,}\.\d{1,}\.\d{1,}')" 
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.