powershell - Azure DevOps - 多个应用程序的 SemVer
问题描述
我有一个包含多个可执行项目的解决方案,我需要实现版本控制。主要和次要编号存储在 json 文件中,应生成补丁编号(递增)我想使用计数器功能:
$[counter(variables['version.MajorMinor'], 0)]
所以我想到了这样的事情(只是一个例子):
- job: GetVer
displayName: 'Get Version'
steps:
- task: PowerShell@2
displayName: 'Get version'
inputs:
targetType: 'inline'
script: |
$arrayOfApps = @()
foreach($file in Get-ChildItem $(System.DefaultWorkingDirectory) -Filter settings.json -Recurse | % { $_.DirectoryName })
{
$settingsJson = Get-Content ($file + '/settings.json') | Out-String | ConvertFrom-Json
$arrayOfApps += $settingsJson
}
# So I have an array of objects (with a field called "Version") and it will be output variable
Write-Host "##vso[task.setvariable variable=MyArray;isOutput=true]$arrayOfApps"
name: result
如果我在下一份工作中只有一个版本,我可以这样做:
- job: SecondJob
dependsOn: GetVer
displayName: 'Try to increase version'
variables:
appVersion: $[ dependencies.GetVer.outputs['result.JUST_ONE_VERSION'] ]
patch: $[counter(variables['appVersion'], 0)]
但我有一个版本数组:result.MyArray,所以不能使用上面的构造。如何根据计数器为 MyArray 中的每个项目创建 appVersion 和补丁?我想使用模板来解决问题:
- template : azure-pipelines-mytemplate.yml
parameters:
Apps: MyArray
在模板中我会:
- ${{ each foundApp in parameters.Apps}}:
- job: SecondJob
dependsOn: GetVer
displayName: 'Try to increase version'
variables:
appVersion: foundApp.Version
patch: $[counter(variables['appVersion'], 0)]
我不能使用模板,因为我们不能将包含动态数据的数组发送到模板。"result.MyArray" 只是一个字符串,所以这个:
- ${{ each foundApp in parameters.Apps}}:
不管用。
有没有办法处理这个?当然,我可以按日期等生成补丁号,但我希望它增加 +1。
十分感谢!
解决方案
推荐阅读
- amazon-web-services - 具有 IAM 角色的 EC2 实例仍然可以执行 AssumeRole 吗?
- pytorch - 注意力加权聚合
- android - Android:允许用户选择网络安全配置/动态网络安全配置
- ubuntu - 在窗口 ubuntu (ZSH) 中找不到“打开”命令
- javascript - 尝试使用 Postman、cosmosDB 和 NodeJs 处理 POST 请求
- java - 在调用方法之前,这个 Java 泛型符号是什么?
- postgresql - IoT - Postgres 数据库 - 每个客户端的单个表和数据库与所有客户端共享
- mysql - 在插入触发器创建失败之前 MariaDB
- javascript - TextInput 在文本后面放置一个自动黄色“突出显示”
- java - 值中的属性实例