如何在Azure DevOps运行时打印pipeline或stage的lockBehavior参数
Azure DevOps 打印lockBehavior配置值的实现方法
原因说明
lockBehavior 是Azure DevOps流水线的YAML配置属性,不属于默认暴露给任务运行环境的内置环境变量,所以直接打印全量环境变量无法获取该值。
实现方案
方案1:自定义变量绑定(最推荐)
将lockBehavior的值预先定义为自定义变量,再通过模板表达式绑定到对应配置项,后续可直接在任务中调用变量打印:
# 根级自定义变量,存储全局lockBehavior值 variables: - name: globalLockBehavior value: runLatest # 根级lockBehavior绑定自定义变量 lockBehavior: ${{ variables.globalLockBehavior }} stages: - stage: A variables: # Stage级自定义变量,存储当前Stage的lockBehavior值 - name: stageALockBehavior value: sequential # Stage级lockBehavior绑定自定义变量 lockBehavior: ${{ variables.stageALockBehavior }} jobs: - job: printLockConfig steps: - bash: | echo "全局lockBehavior值:$(globalLockBehavior)" echo "Stage A的lockBehavior值:$(stageALockBehavior)" displayName: 打印lockBehavior配置
该方法无需额外权限,性能最优,也便于后续统一修改配置。
方案2:调用Azure DevOps REST API获取
如果不想调整现有配置结构,可以在任务中调用官方REST接口拉取当前流水线运行的配置信息:
jobs: - job: getLockViaAPI # 配置OAuth令牌权限,允许访问当前流水线资源 authorization: resources: pipelines: [ self ] steps: - bash: | # 调用接口拉取当前运行实例的配置 runInfo=$(curl -s -H "Authorization: Bearer $(System.AccessToken)" \ "$(System.CollectionUri)$(System.TeamProject)/_apis/pipelines/$(Build.DefinitionId)/runs/$(Build.BuildId)?api-version=7.1-preview.1") # 解析输出lockBehavior值,托管代理默认预装jq工具 echo $runInfo | jq '.lockBehavior' displayName: 通过API获取lockBehavior值
内容的提问来源于stack exchange,提问作者Hydromast
相关产品推荐
相关产品推荐

