alz/azuredevops/pipelines/bicep/templates/ci-template.yaml (84 lines of code) (raw):
---
stages:
- stage: validate
displayName: Validation Bicep
variables:
- group: ${variable_group_name}
- name: parametersFileName
value: parameters.json
jobs:
- job: validate
displayName: Validate Bicep
pool:
${agent_pool_configuration}
steps:
- checkout: self
displayName: Checkout Repo
- template: helpers/bicep-installer.yaml
parameters:
serviceConnection: '${service_connection_name_plan}'
- pwsh: |
if (Test-Path -Path ./custom-modules/*)
{
echo "##vso[task.setvariable variable=CUSTOM_MODULES;]true"
echo "Set CUSTOM_MODULES to true"
}
else
{
echo "Set CUSTOM_MODULES to false"
}
workingDirectory: config
displayName: Check for Custom Modules
- pwsh: |
$output = @()
Get-ChildItem -Recurse -Filter '*.bicep' | ForEach-Object {
Write-Information "==> Attempting Bicep Build For File: $_" -InformationAction Continue
$bicepOutput = bicep build $_.FullName 2>&1
if ($LastExitCode -ne 0)
{
foreach ($item in $bicepOutput) {
$output += "$($item) `r`n"
}
}
else
{
echo "Bicep Build Successful for File: $_"
}
}
if ($output.length -gt 0) {
throw $output
}
workingDirectory: config/custom-modules
condition: eq(variables['CUSTOM_MODULES'], 'true')
displayName: Bicep Build & Lint All Custom Modules
- deployment: whatif
displayName: What If Deploy with Bicep
pool:
${agent_pool_configuration}
environment: ${environment_name_plan}
timeoutInMinutes: 0
strategy:
runOnce:
deploy:
steps:
- checkout: self
displayName: Checkout Bicep Module
- template: helpers/bicep-installer.yaml
parameters:
serviceConnection: '${service_connection_name_plan}'
- template: helpers/bicep-variables.yaml
parameters:
parametersFileName: $(parametersFileName)
%{ for on_demand_folder in on_demand_folders ~}
- template: helpers/bicep-on-demand-folder.yaml
parameters:
repository: "${on_demand_folder_repository}"
releaseArtifactName: "${on_demand_folder_artifact_name}"
releaseVersion: "$(RELEASE_VERSION)"
sourcePath: "${on_demand_folder.source}"
targetPath: "${on_demand_folder.target}"
%{ endfor ~}
- template: helpers/bicep-templates.yaml
parameters:
serviceConnection: '${service_connection_name_plan}'
whatIfEnabled: true