alz/github/actions/bicep/templates/workflows/cd-template.yaml (143 lines of code) (raw):

--- name: Continuous Delivery on: workflow_call: inputs: skip_what_if: default: false type: boolean %{ for script_file in script_files ~} ${script_file.name}: type: boolean default: true %{ endfor ~} destroy: default: false type: boolean jobs: whatif: name: What If runs-on: ${runner_name} concurrency: ${backend_azure_storage_account_container_name} environment: ${environment_name_plan} permissions: id-token: write contents: read if: $${{ !inputs.skip_what_if }} env: PARAMETERS_FILE_NAME: parameters.json steps: - name: Checkout Bicep Module uses: actions/checkout@v4 - name: Get Bicep Variables uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-variables@main with: parameters_file_name: $${{ env.PARAMETERS_FILE_NAME }} %{ for on_demand_folder in on_demand_folders ~} - name: Get On Demand Folder ${on_demand_folder.target} uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-on-demand-folder@main with: repository: "${on_demand_folder_repository}" releaseArtifactName: "${on_demand_folder_artifact_name}" releaseVersion: "$${{ env.RELEASE_VERSION }}" sourcePath: "${on_demand_folder.source}" targetPath: "${on_demand_folder.target}" %{ endfor ~} - name: Install Bicep and Update Az Module uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-installer@main - name: OIDC Login to Tenant uses: azure/login@v2 with: client-id: $${{ vars.AZURE_CLIENT_ID }} tenant-id: $${{ vars.AZURE_TENANT_ID }} subscription-id: $${{ vars.AZURE_SUBSCRIPTION_ID }} enable-AzPSSession: true - name: First Deployment Check id: firstDeploymentCheck uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-first-deployment-check@main if: $${{ !inputs.destroy }} with: managementGroupId: $${{ env.MANAGEMENT_GROUP_ID }} %{ for script_file in script_files ~} - name: 'What If: ${script_file.displayName}' uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-deploy@main if: $${{ inputs.${script_file.name} && !inputs.destroy }} with: displayName: '${script_file.displayName}' templateFilePath: '${script_file.templateFilePath}' templateParametersFilePath: '${script_file.templateParametersFilePath}' managementGroupId: '${script_file.managementGroupIdVariable}' subscriptionId: '${script_file.subscriptionIdVariable}' resourceGroupName: '${script_file.resourceGroupNameVariable}' location: '$${{ env.LOCATION }}' deploymentType: '${script_file.deploymentType}' firstRunWhatIf: '${script_file.firstRunWhatIf}' firstDeployment: '$${{ env.firstDeployment }}' whatIfEnabled: 'true' %{ endfor ~} - name: Run Bicep Destroy What If uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-destroy@main if: $${{ inputs.destroy }} with: whatIfEnabled: 'true' deploy: name: Deploy needs: whatif if: $${{ always() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }} runs-on: ${runner_name} concurrency: ${backend_azure_storage_account_container_name} environment: ${environment_name_apply} permissions: id-token: write contents: read env: PARAMETERS_FILE_NAME: parameters.json steps: - name: Checkout Bicep Module uses: actions/checkout@v4 - name: Get Bicep Variables uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-variables@main with: parameters_file_name: $${{ env.PARAMETERS_FILE_NAME }} %{ for on_demand_folder in on_demand_folders ~} - name: Get On Demand Folder ${on_demand_folder.target} uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-on-demand-folder@main with: repository: "${on_demand_folder_repository}" releaseArtifactName: "${on_demand_folder_artifact_name}" releaseVersion: "$${{ env.RELEASE_VERSION }}" sourcePath: "${on_demand_folder.source}" targetPath: "${on_demand_folder.target}" %{ endfor ~} - name: Install Bicep and Update Az Module uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-installer@main - name: OIDC Login to Tenant uses: azure/login@v2 with: client-id: $${{ vars.AZURE_CLIENT_ID }} tenant-id: $${{ vars.AZURE_TENANT_ID }} subscription-id: $${{ vars.AZURE_SUBSCRIPTION_ID }} enable-AzPSSession: true %{ for script_file in script_files ~} - name: 'Deploy: ${script_file.displayName}' uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-deploy@main if: $${{ inputs.${script_file.name} && !inputs.destroy }} with: displayName: '${script_file.displayName}' templateFilePath: '${script_file.templateFilePath}' templateParametersFilePath: '${script_file.templateParametersFilePath}' managementGroupId: '${script_file.managementGroupIdVariable}' subscriptionId: '${script_file.subscriptionIdVariable}' resourceGroupName: '${script_file.resourceGroupNameVariable}' location: '$${{ env.LOCATION }}' deploymentType: '${script_file.deploymentType}' firstRunWhatIf: '${script_file.firstRunWhatIf}' whatIfEnabled: 'false' %{ endfor ~} - name: Run Bicep Destroy uses: ${organization_name}/${repository_name_templates}/.github/actions/bicep-destroy@main if: $${{ inputs.destroy }} with: whatIfEnabled: 'false'