Skip to content

APIM Infra Plan

APIM Infra Plan #7

Workflow file for this run

name: APIM Infra Plan
on:
pull_request:
branches:
- main
- releases/**
types:
- opened
- edited
- synchronize
- reopened
- ready_for_review
paths:
- ./src/infra/apim_v2/**
- ./.github/workflows/apim_infra_plan.yml
workflow_dispatch:
inputs:
environment:
required: true
type: choice
description: "Select the Environment"
default: dev
options:
- dev
- uat
- prod
dir:
required: true
type: string
description: "Path of the terraform code to be planned"
default: infra/apim_v2
self-hosted-agent:
required: false
type: choice
description: "Is agent self-hosted"
default: "false"
options:
- "true"
- "false"
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
permissions:
id-token: write
contents: read
jobs:
setup:
name: Setup Environment
runs-on: 'ubuntu-latest'
outputs:
environ: ${{ steps.set-env.outputs.environ }}
steps:
- name: Set Environment Variable
id: set-env
run: |
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
echo "environ=${{ github.event.inputs.environment }}" >> $GITHUB_OUTPUT
else
if [ "${{ github.ref }}" == "refs/heads/main" ]; then
echo "environ=dev" >> $GITHUB_OUTPUT
else
echo "environ=uat" >> $GITHUB_OUTPUT
fi
fi
plan:
name: Terraform Plan
runs-on: ${{ inputs.self-hosted-agent == 'true' && 'self-hosted' || 'ubuntu-latest' }}
environment: ${{ needs.setup.outputs.environ }}-ci
needs: setup
env:
ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
ARM_TENANT_ID: ${{ vars.ARM_TENANT_ID }}
ARM_SUBSCRIPTION_ID: ${{ vars.ARM_SUBSCRIPTION_ID }}
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
name: Checkout
- name: Azure Login
uses: azure/login@cb79c773a3cfa27f31f25eb3f677781210c9ce3d # v1.6.1
with:
client-id: ${{ env.ARM_CLIENT_ID }}
tenant-id: ${{ env.ARM_TENANT_ID }}
subscription-id: ${{ env.ARM_SUBSCRIPTION_ID }}
- name: Set Terraform Version
id: set-terraform-version
run: |
echo "terraform_version=$(cat .terraform-version)" >> $GITHUB_OUTPUT
- uses: hashicorp/setup-terraform@a1502cd9e758c50496cc9ac5308c4843bcd56d36 # v3.0.0
name: Setup Terraform
with:
terraform_version: ${{ steps.set-terraform-version.outputs.terraform_version }}
terraform_wrapper: true
- name: Terraform Init
working-directory: ${{ github.event.inputs.dir || 'infra/apim_v2' }}
run: |
bash ./terraform.sh init ${{ needs.setup.outputs.environ }}
- name: Terraform Plan
working-directory: ${{ github.event.inputs.dir || 'infra/apim_v2' }}
continue-on-error: true
run: |
bash ./terraform.sh plan ${{ needs.setup.outputs.environ }} | tee plan_output.txt
echo "plan terminated"
OUTPUT="$(cat plan_output.txt | grep -v "Refreshing state" | tail -c 60000)"
echo "$OUTPUT" > plan_output_multiline.txt