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

The*_*is 6 xml pom.xml azure-devops azure-pipelines

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

\n\n
 <version> 1.14.0 </version>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
- job: createTag\n    dependsOn: ifBranchIsMaster\n    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master')\n    steps:\n      - task: GitHubRelease@0\n        displayName: \xe2\x80\x98Create GitHub Release\xe2\x80\x99\n        inputs:\n          gitHubConnection: $(GITHUB_CONNECTION)\n          repositoryName: $(GITHUB_REPO)\n          action: create\n          tag: 1.14.0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想从我的 YAML 文件中删除硬编码版本标签并从中读取它pom.xml立即读取它是否有可能发生我尝试将硬编码版本最小化为 1。我想在 1 个地方更改它并在任何地方更改。

\n

The*_*is 6

所以我想出了一个脚本来解决我的问题并读取<version>1.14.1</version>所有 pom.xml 内部

那是一个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"
Run Code Online (Sandbox Code Playgroud)

我还会提供 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"
Run Code Online (Sandbox Code Playgroud)

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