From 5cfb9e9089f791d9440f20211af2637253737d20 Mon Sep 17 00:00:00 2001 From: Marvin Buss Date: Mon, 15 Apr 2024 11:12:28 +0200 Subject: [PATCH 1/5] Add Concurrency in Workflow & TF Unlock --- .../workflows/_functionAppDeployTemplate.yml | 3 +++ .../_terraformEnvironmentTemplate.yml | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/.github/workflows/_functionAppDeployTemplate.yml b/.github/workflows/_functionAppDeployTemplate.yml index cc83ef6..1112dda 100644 --- a/.github/workflows/_functionAppDeployTemplate.yml +++ b/.github/workflows/_functionAppDeployTemplate.yml @@ -43,6 +43,9 @@ jobs: runs-on: [self-hosted] continue-on-error: false environment: ${{ inputs.environment }} + concurrency: + group: function-${{ inputs.function_name }}-${{ inputs.environment }} + cancel-in-progress: false steps: # Check Out Repository diff --git a/.github/workflows/_terraformEnvironmentTemplate.yml b/.github/workflows/_terraformEnvironmentTemplate.yml index 819451c..2c0c495 100644 --- a/.github/workflows/_terraformEnvironmentTemplate.yml +++ b/.github/workflows/_terraformEnvironmentTemplate.yml @@ -100,6 +100,9 @@ jobs: continue-on-error: false environment: ${{ inputs.environment }} needs: [lint] + concurrency: + group: terraform-${{ inputs.config }}-${{ inputs.environment }} + cancel-in-progress: false env: ARM_TENANT_ID: ${{ inputs.tenant_id }} @@ -188,6 +191,15 @@ jobs: body: output }) + # Terraform State Unlock + - name: Terraform State Unlock + working-directory: ${{ inputs.working_directory }} + if: cancelled() + run: | + LOCK_ID=`jq -r '.ID' .terraform.tfstate.lock.info` + echo $LOCK_ID + terraform force-unlock -force $LOCK_ID + apply: name: Terraform Apply runs-on: [self-hosted] @@ -195,6 +207,9 @@ jobs: environment: ${{ inputs.environment }} if: github.event_name == 'push' || github.event_name == 'release' needs: [plan] + concurrency: + group: terraform-${{ inputs.config }}-${{ inputs.environment }} + cancel-in-progress: false env: ARM_TENANT_ID: ${{ inputs.tenant_id }} @@ -240,3 +255,12 @@ jobs: env: CONFIG: ${{ inputs.config }} TF_VAR_my_secret: ${{ secrets.MY_SAMPLE_SECRET }} + + # Terraform State Unlock + - name: Terraform State Unlock + working-directory: ${{ inputs.working_directory }} + if: cancelled() + run: | + LOCK_ID=`jq -r '.ID' .terraform.tfstate.lock.info` + echo $LOCK_ID + terraform force-unlock -force $LOCK_ID From 6477de31c5be99878445c0c3916775c01f99e88a Mon Sep 17 00:00:00 2001 From: Marvin Buss Date: Mon, 15 Apr 2024 11:16:36 +0200 Subject: [PATCH 2/5] Update trigger --- .github/workflows/terraform.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/terraform.yml b/.github/workflows/terraform.yml index 0c17548..6f3f479 100644 --- a/.github/workflows/terraform.yml +++ b/.github/workflows/terraform.yml @@ -8,6 +8,7 @@ on: - "code/infra/**" - "config/**" - ".github/workflows/terraform.yml" + - ".github/workflows/_terraformEnvironmentTemplate.yml" pull_request: branches: @@ -17,6 +18,7 @@ on: - "code/infra/**" - "config/**" - ".github/workflows/terraform.yml" + - ".github/workflows/_terraformEnvironmentTemplate.yml" jobs: terraform_dev: From 030b547556bb8a12ef341ce81fdbefb121003350 Mon Sep 17 00:00:00 2001 From: Marvin Buss Date: Mon, 15 Apr 2024 12:57:28 +0200 Subject: [PATCH 3/5] Remove state unlock --- .../_terraformEnvironmentTemplate.yml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/.github/workflows/_terraformEnvironmentTemplate.yml b/.github/workflows/_terraformEnvironmentTemplate.yml index 2c0c495..ec0ca81 100644 --- a/.github/workflows/_terraformEnvironmentTemplate.yml +++ b/.github/workflows/_terraformEnvironmentTemplate.yml @@ -191,15 +191,6 @@ jobs: body: output }) - # Terraform State Unlock - - name: Terraform State Unlock - working-directory: ${{ inputs.working_directory }} - if: cancelled() - run: | - LOCK_ID=`jq -r '.ID' .terraform.tfstate.lock.info` - echo $LOCK_ID - terraform force-unlock -force $LOCK_ID - apply: name: Terraform Apply runs-on: [self-hosted] @@ -255,12 +246,3 @@ jobs: env: CONFIG: ${{ inputs.config }} TF_VAR_my_secret: ${{ secrets.MY_SAMPLE_SECRET }} - - # Terraform State Unlock - - name: Terraform State Unlock - working-directory: ${{ inputs.working_directory }} - if: cancelled() - run: | - LOCK_ID=`jq -r '.ID' .terraform.tfstate.lock.info` - echo $LOCK_ID - terraform force-unlock -force $LOCK_ID From f73c32027943576f390ccc18cb103dca84879fd3 Mon Sep 17 00:00:00 2001 From: Marvin Buss Date: Mon, 15 Apr 2024 13:58:20 +0200 Subject: [PATCH 4/5] Update group for concurrency --- .github/workflows/_terraformEnvironmentTemplate.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/_terraformEnvironmentTemplate.yml b/.github/workflows/_terraformEnvironmentTemplate.yml index ec0ca81..5952411 100644 --- a/.github/workflows/_terraformEnvironmentTemplate.yml +++ b/.github/workflows/_terraformEnvironmentTemplate.yml @@ -101,7 +101,7 @@ jobs: environment: ${{ inputs.environment }} needs: [lint] concurrency: - group: terraform-${{ inputs.config }}-${{ inputs.environment }} + group: terraform-${{ inputs.config }}-${{ inputs.environment }}-${{ github.event_name == 'schedule' || github.event_name == 'release' }} cancel-in-progress: false env: @@ -199,7 +199,7 @@ jobs: if: github.event_name == 'push' || github.event_name == 'release' needs: [plan] concurrency: - group: terraform-${{ inputs.config }}-${{ inputs.environment }} + group: terraform-${{ inputs.config }}-${{ inputs.environment }}-${{ github.event_name == 'schedule' || github.event_name == 'release' }} cancel-in-progress: false env: From a6a3d2890202b1eeb3b9e75ccb556eba7acf79c7 Mon Sep 17 00:00:00 2001 From: Marvin Buss Date: Mon, 15 Apr 2024 14:20:04 +0200 Subject: [PATCH 5/5] Revert group name --- .github/workflows/_terraformEnvironmentTemplate.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/_terraformEnvironmentTemplate.yml b/.github/workflows/_terraformEnvironmentTemplate.yml index 5952411..4e15156 100644 --- a/.github/workflows/_terraformEnvironmentTemplate.yml +++ b/.github/workflows/_terraformEnvironmentTemplate.yml @@ -101,7 +101,7 @@ jobs: environment: ${{ inputs.environment }} needs: [lint] concurrency: - group: terraform-${{ inputs.config }}-${{ inputs.environment }}-${{ github.event_name == 'schedule' || github.event_name == 'release' }} + group: terraform-apply-${{ inputs.config }}-${{ inputs.environment }} cancel-in-progress: false env: @@ -199,7 +199,7 @@ jobs: if: github.event_name == 'push' || github.event_name == 'release' needs: [plan] concurrency: - group: terraform-${{ inputs.config }}-${{ inputs.environment }}-${{ github.event_name == 'schedule' || github.event_name == 'release' }} + group: terraform-apply-${{ inputs.config }}-${{ inputs.environment }} cancel-in-progress: false env: