首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从azure-pipelines中的pom.xml读取yaml文件中的项目版本

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

Stack Overflow用户
提问于 2019-05-06 16:42:10
回答 2查看 3.1K关注 0票数 3

我有一个包含项目版本的pom.xml文件,如下所示

代码语言:javascript
复制
 <version> 1.14.0 </version>

我还有一个YAML文件,当测试通过时,它会自动生成一个GitHub标记,如下所示

代码语言:javascript
复制
- 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处更改它,并在任何地方更改它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-08 19:04:13

因此,我想出了一个解决问题的脚本,并读取所有pom.xml中的<version>1.14.1</version>

这是一个powershell脚本

代码语言:javascript
复制
[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脚本的情况下,任何人想要它

代码语言:javascript
复制
#!/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
EN

Stack Overflow用户

发布于 2019-05-06 19:52:59

您可以创建从pom.xml文件读取变量并设置管道变量的PowerShell脚本。在tag:中使用此变量。

例如:

代码语言:javascript
复制
$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"

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

代码语言:javascript
复制
[xml]$pomXml = Get-Content $filePath
$version = $pomXml.project.version

GitHubRelease@任务中,使用变量:

代码语言:javascript
复制
tag: $(version)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56001645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档