gpt4 book ai didi

azure - 如何在每个阶段引用不同的变量组 - 环境中每个环境的阶段 - Azure Devops、模板、变量组

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

当我运行下面的管道时,我在 jobs.yml 中收到错误 - 它提示环境参数的“意外值”...以及在 stage.yml 中“意外值:参数” - 我做错了什么这里?这个想法是获取环境和关联的变量组 - 循环遍历 Stages.yml 中的环境数组并为每个环境创建一个阶段...每个阶段插入正确的变量组...使用变量组值在 jobs.yml 中执行作业 - 每个变量组包含相同的变量..但具有不同的值。

这是main.yml

#main.yml
trigger: none

extends:
template: /Build/Stages.yml
parameters:
environments:
- environment: Dev
variableGroup: Project-Dev-VarGrp
- environment: QA
variableGroup: Project-QA-VarGrp
dependsOn: Dev
- environment: UAT
variableGroup: Project-UAT-VarGrp
dependsOn: QA
- environment: UAT2
variableGroup: Project-UAT2-VarGrp
dependsOn: UAT

然后这是下一点...Stages.yml

parameters:
- name: dataFolder
displayName: 'Data folder to process'
type: string
default: '/DataMigrations/Master_Data/'
- name: dataFiles
displayName: List of Data Files or Folder names
type: string
default: 'Dev_Data.zip'
- name: environments
type: object
default: []

stages:
- ${{ each environment in parameters.environments }}:
- stage: '${{ parameters.environment }}'
jobs:
- template: ./jobs.yml
variables:
- group: ${{ parameters.variableGroup }}
parameters:
environment: '${{ parameters.environment }}'
crmURL: $(crmURL)
oauthAppId: $(ClientID)
ClientPass: $(ClientPass)
dataFolder: '${{ parameters.dataFolder }}'
env: '${{ parameters.environment }}'

这是 jobs.yml

    jobs:
- deployment: DeployData
displayName: 'Deploying Data to ${{ parameters.environment }}'
environment: ${{ parameters.environment }}
pool:
vmImage: 'windows-latest'
strategy:
runOnce:
deploy:
steps:
- checkout: self
clean: false
- powershell: |
Write-Host "##vso[task.setvariable variable=crmConnectionString]'AuthType=ClientSecret;Url=$(crmURL);ClientId=$(ClientID);ClientSecret=$(ClientPass)'"
displayName: 'PreDeploy configuration'
- task: PowerShell@2
displayName: 'Powershell: Run update-data.ps1'
inputs:
targetType: 'filePath'
filePath: $(System.DefaultWorkingDirectory)/DataMigrations/Scripts/update-data.ps1
arguments: -folderName '${{ parameters.dataFolder }}' -environment '${{ parameters.env }}'
workingDirectory: $(System.DefaultWorkingDirectory)/DataMigrations
- task: PowerShell@2
displayName: 'Powershell: Run zip-import-data.ps1'
inputs:
targetType: 'filePath'
filePath: $(System.DefaultWorkingDirectory)/DataMigrations/Scripts/zip-import-data.ps1
arguments: -folderName '${{ parameters.dataFolder }}' -dataMigrationFilenames '${{ parameters.dataFiles }}' -connectionString $(crmConnectionString)
workingDirectory: $(System.DefaultWorkingDirectory)/DataMigrations

最佳答案

这里有一些事情:

  1. 当您使用 ${{parameters.environments 中的每个环境}} 时,嵌套的 environmentvariableGroup 是使用此语法 ${{environment.environment }}${{environment.variableGroup}}

  2. 在您的 Stages.yml 文件中,您尝试调用 ./jobs.yml 模板,但关联的参数是在 >- 组:${{parameters.variableGroup}}。有效的语法应如下所示:

    stages:
    - ${{ each environment in parameters.environments }}:
    - stage: '${{ environment.environment }}'
    variables:
    - group: ${{ environment.variableGroup }}
    jobs:
    - template: ./jobs.yml
    parameters:
    environment: '${{ environment.environment }}'
    crmURL: $(crmURL)
    oauthAppId: $(ClientID)
    ClientPass: $(ClientPass)
    dataFolder: '${{ parameters.dataFolder }}'
    env: '${{ environment.environment }}'

您也有一些空格拼写错误。我知道这很烦人,但您需要具有精确的 yaml 语法,否则无法解析文件。

关于azure - 如何在每个阶段引用不同的变量组 - 环境中每个环境的阶段 - Azure Devops、模板、变量组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71856680/

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