在Azure管道中调用shell脚本时未引用变量

iyzzxitl  于 2022-12-23  发布在  Shell
关注(0)|答案(2)|浏览(140)

这是我第一次使用azure管道,我开始创建azure-pipeline. yml。我尝试执行azure DevOps管道。但是,我遇到了变量未按声明引用的错误。

deploy.sh deploy_azr ${{ variables.subPref }} ${{ variables.rgType }} ${{ variables.location }} ${{ variables.config }}

这是我的模板的开始

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
  branches:
    include:
    - main
  paths:
   include:
     - 'bicep/*'
     - 'azure-pipelines.yml'
   exclude:
     - '*'

pool:
  vmImage: ubuntu-latest

variables:
  ${{ if eq(variables['Build.SourceBranchName'], 'test_branch') }}:
    deployTarget: tst
    subscription: testsubscription
    subscriptionId: 26455-trt31-******
    rgType: tstrg
    subPref: *****
    config: tstjson
    location: eastus2
  ${{ if eq(variables['Build.SourceBranchName'], 'main') }}:
    deployTarget: prd
    subscription: prdsub
    subscriptionId: ***********************
    rgType: prdrg
    subPref: ******
    config: prd.json
    location: eastus2

stages:
  - stage: Deploylib
    jobs:
      - deployment: lib
        environment: ${{ variables.subscription }}
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
                - task: AzureCLI@2
                  inputs:
                    azureSubscription: ${{ variables.subscription }}
                    scriptType: 'bash'
                    scriptLocation: 'inlineScript'
                    inlineScript: |
                      set -e
                      set -x
                      sudo apt install -y gridsite-clients
                      cd 'bicep'
                      echo "starting the lib deployment"
                      deploy.sh deploy_azr ${{ variables.subPref }} ${{ variables.rgType }} ${{ variables.location }} ${{ variables.config }}

任何帮助都将不胜感激。

ws51t4hk

ws51t4hk1#

我认为问题在于您需要在这一行中指定正确的环境名称,

jobs:
  - deployment: lib
    environment: <environment name>

您可以在DevOps页面上创建一个环境,参见参考here,然后将名称复制到上面的YAML。
这里environment的概念代表了你将要部署代码的资源集合,一旦你运行了一个部署,你应该能够看到目标环境中的部署历史。

dw1jzc5e

dw1jzc5e2#

/azure-pipelines. yml(行:42,第22栏):意外值""
测试相同的YAML样本并重现相同的问题。

问题的原因是您使用的格式为:YAML样本中的${{ variables.subscription }}
变量将在编译时处理。
要解决此问题,可以更改为使用以下格式:$(subscription)
例如:

jobs:
  - deployment: lib
    environment: $(subscription)
    • 结果:**

有关更多详细信息,请参阅此文档:运行时表达式语法

相关问题