gpt4 book ai didi

azure-devops - YAML 管道 - 设置变量并在模板表达式中使用

转载 作者:行者123 更新时间:2023-12-02 08:36:17 24 4
gpt4 key购买 nike

我正在尝试在一个任务中动态设置一个变量,并在下一个任务的条件中使用它。我完全可以让它发挥作用。正在设置 var,但模板未执行。

powershell 步骤设置变量,以下步骤旨在有条件地在此变量上运行

variables:
- group: Global

trigger:
branches:
include:
- master
paths:
include:
- blah1/*.csv
- blah2/*.csv

resources:
repositories:
- repository: Templates
name: Templates/Templates
type: git

pool:
vmImage: vs2017-win2016
demands: azureps

steps:
- powershell: |
$CSV_File = Get-ChildItem -Recurse -Include "*.csv" | sort LastWriteTime | select -last 1
$Subscription = [regex]::Matches(($CSV_File | select -ExpandProperty DirectoryName), "([^\\]+)$").Value

#Set Variable for Pipeline
Write-Host "##vso[task.setvariable variable=Subscription]$Subscription"

displayName: 'PowerShell - Set Subscription'
name: 'SetSubscription'

- ${{ if eq(variables['SetSubscription.Subscription'], 'DEV1') }}:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'DEV1 (GUID)'

- ${{ if eq(variables.Subscription, 'PROD1') }}:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'PROD1 (GUID)'

- ${{ if eq(variables['Subscription'], 'DEV2') }}:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'DEV2 (GUID)'

- ${{ if eq(variables['SetSubscription.Subscription'], 'PROD2') }}:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'PROD2 (GUID)'

最佳答案

编辑:我找到了一种在同一个构建中执行此操作的方法

方法 1 - 相同构建

jobs:
- job: PreTasks
steps:
- powershell: |
$Subscription = Get Var Command here

#Set Variable for Pipeline
Write-Host "##vso[task.setvariable variable=Subscription;isOutput=true]$Subscription"
name: SetSubscription
displayName: 'PowerShell - Set Subscription'
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

- job: 1
dependsOn: PreTasks
condition: eq(dependencies.PreTasks.outputs['SetSubscription.Subscription'], 'DEV1')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'DEV1 (GUID)'

- job: 2
dependsOn: PreTasks
condition: eq(dependencies.PreTasks.outputs['SetSubscription.Subscription'], 'PROD1')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'PROD1 (GUID)'

- job: 3
dependsOn: PreTasks
condition: eq(dependencies.PreTasks.outputs['SetSubscription.Subscription'], 'DEV2')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'DEV2 (GUID)'

- job: 4
dependsOn: PreTasks
condition: eq(dependencies.PreTasks.outputs['SetSubscription.Subscription'], 'PROD2')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'PROD2 (GUID)'

方法 2 - 单独构建谢谢@4c74356b41。我最终不得不将任务分成 2 个单独的构建,并将上述过程转换为作业而不是任务。我将变量组绑定(bind)到两个构建,构建 1 更新变量组中的变量,构建 2 从构建 1 触发。

构建 1

- powershell: |
echo $env:AZURE_DEVOPS_EXT_PAT | az devops login
az devops configure -d organization=https://dev.azure.com/<Organisation>/project=<project>

az pipelines variable-group variable update --id <VariableGroupID> --name Subscription --value $Subscription

displayName: 'PowerShell - Set Subscription'
env:
AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

构建 2 - 从构建 1 触发

jobs:
- job: 1
condition: eq(variables.Subscription, 'DEV1')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'DEV1 (GUID)'
- job: 2
condition: eq(variables.Subscription, 'PROD1')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'PROD1 (GUID)'
- job: 3
condition: eq(variables.Subscription, 'DEV2')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'DEV2 (GUID)'
- job: 4
condition: eq(variables.Subscription, 'PROD2')
steps:
- template: Template/Template.yml@Templates
parameters:
AzureSubscription: 'PROD2 (GUID)'

关于azure-devops - YAML 管道 - 设置变量并在模板表达式中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58199843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com