Kam*_*nov 9 azure azure-devops
我有一个内部版本号格式“ $(BuildDefinitionName)-$(Rev:.r)”,可以将其放入可视设计器选项中,并且效果很好。但是,现在我想开始使用新的YAML构建管道,但是我无法弄清楚如何将这种自定义内部版本号格式与“替换令牌”任务一起使用。
jfa*_*eyx 22
除了选择的答案,您还可以使用以下函数来应用自定义版本号
steps:
- script: echo "##vso[build.updatebuildnumber]$(CustomValue)"
Run Code Online (Sandbox Code Playgroud)
如此处所述:Azure DevOps Logging Commands
我发现这在我的情况下很有帮助,我想从我的二进制文件中读取语义版本并将其应用于构建的名称。
编辑 2020-02-12:
为了进一步详细说明如何利用该updatebuildnumber函数,以下是从 NodeJS API 中的 package.json 文件中提取 SemVer 并使用它来更新 Azure DevOps 内部版本号的示例。此示例使用 Azure DevOps 中的 yaml 样式构建。
例子:
DevOps yaml 脚本...
- job: GetSemVer
displayName: Get Semantic Version from Application
timeoutInMinutes: 3
continueOnError: false
steps:
- task: NodeTool@0
inputs:
versionSpec: '12.13.0'
displayName: Install Node
continueOnError: false
- bash: |
APPSEMVER=$(node -pe "require('./package.json').version")
echo "##vso[task.setvariable variable=version;isOutput=true]$APPSEMVER"
name: App
- job: CreateBuildVersion
displayName: Create Build Identifier
dependsOn: GetSemVer
timeoutInMinutes: 2
continueOnError: false
variables:
appVersion: $[ dependencies.GetSemVer.outputs['App.version'] ]
buildIncrement: $[counter(variables['appVersion'], 0)] # create a counter that is used to increment build run for same app version
buildVersion: "$(appVersion)$(optionalBuildTag)-$(buildIncrement)"
steps:
- bash: echo "##vso[build.updatebuildnumber]$(buildVersion)" # Update build number in Pipeline UI
Run Code Online (Sandbox Code Playgroud)
首先,在 中job: GetSemVer,我从 package.json 中提取语义版本并创建一个将传递给下一个作业的变量...
- bash: |
APPSEMVER=$(node -pe "require('./package.json').version")
echo "##vso[task.setvariable variable=version;isOutput=true]$APPSEMVER"
name: App
Run Code Online (Sandbox Code Playgroud)
接下来,job: CreateBuildVersion我使用GetSemVerjob 中的应用程序版本创建一个局部变量 titled appVersion,一个构建运行计数器, titled buildIncrement。每次为同一应用程序 semver 运行构建时,构建运行计数器都会增加。计数器将包含在我们将提供给 Azure DevOps 的内部版本号中,如果我们为同一应用程序版本多次执行内部版本,则有助于避免命名冲突。
appVersion: $[ dependencies.GetSemVer.outputs['App.version'] ]
buildIncrement: $[counter(variables['appVersion'], 0)] # create a counter that is used to increment build run count for same app version
Run Code Online (Sandbox Code Playgroud)
然后,我构造了一个buildVersion变量,它由应用程序的 semver、一个可选的构建标记(例如,用于开发环境的“-alpha”)(从 DevOps 中的环境变量注入)和构建运行计数组成。例如“1.1.6-alpha-0”
buildVersion: "$(appVersion)$(optionalBuildTag)-$(buildIncrement)"
Run Code Online (Sandbox Code Playgroud)
最后,我通过build.updatebuildnumber用我的新buildVersion变量调用函数来更新 azure 中的内部版本号。
- bash: echo "##vso[build.updatebuildnumber]$(buildVersion)" # Update build number in Pipeline UI
Run Code Online (Sandbox Code Playgroud)
注意:您可以根据自己的喜好组织上述步骤。我们将获取 SemVer 与构建 buildVersion 分开,因为我们使用不同的语言和框架,这使得从一个应用程序到下一个应用程序获取 SemVer 是不同的。所以,这一步对我们来说经常改变。但是,您可以在一项“工作”中完成所有这些步骤。
似乎是“系统自动插入了一些变量”。这些预定义的变量可以从https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=vsts找到。就我而言,我可以使用
name: $(BuildDefinitionName)-$(Rev:.r)
resources:
- repo: self
queue:
name: Hosted VS2017
variables:
testing: $(Build.BuildNumber)
steps:
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: testing'
inputs:
PathtoPublish: Testing
ArtifactName: Testing
Run Code Online (Sandbox Code Playgroud)
作为我的构建 YAML。
| 归档时间: |
|
| 查看次数: |
6432 次 |
| 最近记录: |