Azure Bicep (ARM templates) og Azure Devops CICD pipeline

Les hele artikkelen

Hei, 

 

Jeg er både ny til IaC og CICD pipelines i Azure devops. 

 

Jeg har en main.bicep fil som deployer en sql-server, database og en keyvault i samme prosess. Når jeg deployer via VSCode så fungerer dette smertefritt. Når jeg derimot kjører dette via Azure devops, så feiler pipelinen med: 

keyvault-xxxxxx could not be found. Det virker på meg som om at keyvault og sql-server forsøkes å deployes parallelt. Selv om jeg i main.bicep spesifiserer at sql-server dependsOn keyvault. 

 

Virker som dette blir ignorert i Azure devops. Noen som har en løsning? Jeg har prøvd å google dette i et par timer nå, uten at jeg kommer stort lengre. 

 

 

Yaml-fila ser slik ut: 

 

trigger:
master

 

pool:
  vmImage: ‘ubuntu-latest’

 

stages:
stage: Build
  jobs:
  – job: Build
    steps:

 

    – script: echo Hello, world!
      displayName: ‘Run Build steps’

 

    – task: CopyFiles@2
      displayName: ‘Include templates in the artifact’
      inputs:
        Contents: |
          main.bicep
          parametersparameters.dev.json
          moduleswebApp.bicep
          modulesappServicePlan.bicep
          modulessqlServer.bicep
          modulessqlDB.bicep
          moduleskeyvault.bicep
         
        TargetFolder: ‘$(Build.ArtifactStagingDirectory)’

 

    – task: PublishBuildArtifacts@1
      displayName: ‘Publish artifact’
      inputs:
        PathtoPublish: ‘$(Build.ArtifactStagingDirectory)’
        ArtifactName: ‘drop’
        publishLocation: ‘Container’

 

stage: DEV
  jobs:
  – job: Deploy
    steps:
    – script: |
        echo «Structure of work folder of this pipeline:»
        tree $(Pipeline.Workspace)
    – task: DownloadBuildArtifacts@0
      displayName: ‘Download artifact’
      inputs:
        buildType: ‘current’
        downloadType: ‘single’
        artifactName: ‘drop’
        downloadPath: ‘$(System.ArtifactsDirectory)’
       
   
    – task: AzureCLI@2
      displayName: ‘Deploy Bicep file’
      inputs:
        azureSubscription: ‘subscription’
        scriptType: ‘bash’
        scriptLocation: ‘inlineScript’
        inlineScript: |
          # Creating a resource group
          az group create
            –name $(resourceGroupName)
            –location norwayeast
          # Deploying Bicep file
          az deployment sub create
            –location=’norwayeast’
            –name $(Build.BuildNumber)
            –template-file $(Pipeline.Workspace)/s/main.bicep
            –parameters @$(Pipeline.Workspace)/s/parameters/parameters.dev.json