我有一个包含项目版本的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处更改它,并在任何地方更改它。
发布于 2019-05-08 19:04:13
因此,我想出了一个解决问题的脚本,并读取所有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获取版本的方法
发布于 2019-05-06 19:52:59
您可以创建从pom.xml文件读取变量并设置管道变量的PowerShell脚本。在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)https://stackoverflow.com/questions/56001645
复制相似问题