Home > database >  Variables not getting referenced while calling the shell script in the azure pipelines
Variables not getting referenced while calling the shell script in the azure pipelines

Time:12-22

This is my first time working with azure pipelines, I started creating my azure-pipeline.yml. I am trying to execute the azure DevOps pipeline. However I am getting to errors where the variable are not referenced as declared.

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

Here is the start of my template


# 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 }}
         


any help would be appreciated.

CodePudding user response:

I think the problem is that you need to specify the correct environment name on this line,

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

You can create an environment on the DevOps page, see the reference enter image description here

The cause of the issue is that you are using the format: ${{ variables.subscription }} in YAML sample.

The variable will be processed at compile time.

To solve this issue, you can change to use the format: $(subscription)

For example:

jobs:
  - deployment: lib
    environment: $(subscription)

Result:

enter image description here

For more detailed info, you can refer to this doc: Runtime expression syntax

  • Related