Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 25 additions & 3 deletions .github/workflows/reusable-terragrunt-deploy-aws.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,11 @@ on:
description: "Commands to run after both Terragrunt plan and apply. These are applied after after_plan_commands and after_deploy_commands."
required: false
type: string
default: ""
default: ''
outputs:
terraform_outputs:
description: 'JSON string containing all Terraform outputs from the deployment (base64 encoded)'
value: ${{ jobs.deploy.outputs.terraform_outputs }}

permissions:
id-token: write
Expand All @@ -78,6 +82,8 @@ jobs:
name: "Plan & Deploy ${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}"
runs-on: ubuntu-latest
environment: ${{ inputs.gh_environment || inputs.environment }}
outputs:
terraform_outputs: ${{ steps.set-outputs.outputs.terraform_outputs }}
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493
Expand Down Expand Up @@ -150,5 +156,21 @@ jobs:
with:
tf_version: ${{ inputs.tf_version }}
tg_version: ${{ inputs.tg_version }}
tg_dir: "${{ inputs.environments_root }}/${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}"
tg_command: "apply ${{ inputs.environment }}-${{ inputs.region }}-${{ inputs.env_id }}.tfplan"
tg_dir: '${{ inputs.environments_root }}/${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}'
tg_command: 'apply ${{ inputs.environment }}-${{ inputs.region }}-${{ inputs.env_id }}.tfplan'

- name: Get Terraform Outputs
id: set-outputs
working-directory: '${{ inputs.environments_root }}/${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}'
env:
AWS_REGION: ${{ inputs.region }}
run: |
echo "=== Getting Terraform outputs ==="
TF_OUTPUTS=$(terragrunt output -json 2>/dev/null || echo '{}')
echo "Raw outputs:"
echo "$TF_OUTPUTS" | jq '.'

# Base64 encode for safe transfer
ENCODED_OUTPUTS=$(echo "$TF_OUTPUTS" | base64 -w 0)
echo "terraform_outputs=$ENCODED_OUTPUTS" >> "$GITHUB_OUTPUT"
echo "=== Outputs captured and encoded ==="
31 changes: 28 additions & 3 deletions .github/workflows/reusable-terragrunt-deploy-azure.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,11 @@ on:
description: "Commands to run after both Terragrunt plan and apply. These are applied after after_plan_commands and after_deploy_commands."
required: false
type: string
default: ""
default: ''
outputs:
terraform_outputs:
description: 'JSON string containing all Terraform outputs from the deployment (base64 encoded)'
value: ${{ jobs.deploy.outputs.terraform_outputs }}
secrets:
TERRAGRUNT_DEPLOY_AZURE_CLIENT_ID:
required: true
Expand All @@ -80,6 +84,8 @@ jobs:
deploy:
name: "Plan & Deploy ${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}"
runs-on: ubuntu-latest
outputs:
terraform_outputs: ${{ steps.set-outputs.outputs.terraform_outputs }}
steps:
- name: Checkout
uses: actions/checkout@ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493
Expand Down Expand Up @@ -149,5 +155,24 @@ jobs:
ARM_USE_OIDC: true
TF_VAR_system_tags: ${{ steps.set-tags.outputs.SYSTEM_TAGS }}
with:
tg_dir: "${{ inputs.environments_root }}/${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}"
tg_command: "apply ${{ inputs.environment }}-${{ inputs.region }}-${{ inputs.env_id }}.tfplan"
tg_dir: '${{ inputs.environments_root }}/${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}'
tg_command: 'apply ${{ inputs.environment }}-${{ inputs.region }}-${{ inputs.env_id }}.tfplan'

- name: Get Terraform Outputs
id: set-outputs
working-directory: '${{ inputs.environments_root }}/${{ inputs.environment }}/${{ inputs.region }}/${{ inputs.env_id }}'
env:
ARM_CLIENT_ID: ${{ secrets.TERRAGRUNT_DEPLOY_AZURE_CLIENT_ID }}
ARM_SUBSCRIPTION_ID: ${{ secrets.TERRAGRUNT_DEPLOY_AZURE_SUBSCRIPTION_ID }}
ARM_TENANT_ID: ${{ secrets.TERRAGRUNT_DEPLOY_AZURE_TENANT_ID }}
ARM_USE_OIDC: true
run: |
echo "=== Getting Terraform outputs ==="
TF_OUTPUTS=$(terragrunt output -json 2>/dev/null || echo '{}')
echo "Raw outputs:"
echo "$TF_OUTPUTS" | jq '.'

# Base64 encode for safe transfer
ENCODED_OUTPUTS=$(echo "$TF_OUTPUTS" | base64 -w 0)
echo "terraform_outputs=$ENCODED_OUTPUTS" >> "$GITHUB_OUTPUT"
echo "=== Outputs captured and encoded ==="
29 changes: 26 additions & 3 deletions .github/workflows/reusable-terragrunt-deploy-ephemeral-aws.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ on:
description: "Commands to run prior to executing Terragrunt plan."
required: false
type: string
default: ""
default: ''
before_deploy_commands:
description: "Commands to run prior to executing Terragrunt apply."
required: false
Expand All @@ -63,6 +63,11 @@ on:
required: false
type: string
default: ""
outputs:
terraform_outputs:
description: 'JSON string containing all Terraform outputs from the deployment (base64 encoded)'
value: ${{ jobs.deploy.outputs.terraform_outputs }}

permissions:
id-token: write
contents: read
Expand All @@ -71,6 +76,8 @@ jobs:
deploy:
name: "Plan & Deploy ephemeral/${{ inputs.region }}/${{ inputs.env_id }}"
runs-on: ubuntu-latest
outputs:
terraform_outputs: ${{ steps.set-outputs.outputs.terraform_outputs }}
steps:
- name: Checkout
uses: actions/checkout@8edcb1bdb4e267140fa742c62e395cd74f332709
Expand Down Expand Up @@ -140,5 +147,21 @@ jobs:
with:
tf_version: ${{ inputs.tf_version }}
tg_version: ${{ inputs.tg_version }}
tg_dir: "${{ inputs.environments_root }}/sandbox/${{ inputs.region }}/${{ inputs.env_id }}"
tg_command: "apply ephemeral-${{ inputs.region }}-${{ inputs.env_id }}.tfplan"
tg_dir: '${{ inputs.environments_root }}/sandbox/${{ inputs.region }}/${{ inputs.env_id }}'
tg_command: 'apply ephemeral-${{ inputs.region }}-${{ inputs.env_id }}.tfplan'

- name: Get Terraform Outputs
id: set-outputs
working-directory: '${{ inputs.environments_root }}/sandbox/${{ inputs.region }}/${{ inputs.env_id }}'
env:
AWS_REGION: ${{ inputs.region }}
run: |
echo "=== Getting Terraform outputs ==="
TF_OUTPUTS=$(terragrunt output -json 2>/dev/null || echo '{}')
echo "Raw outputs:"
echo "$TF_OUTPUTS" | jq '.'

# Base64 encode for safe transfer
ENCODED_OUTPUTS=$(echo "$TF_OUTPUTS" | base64 -w 0)
echo "terraform_outputs=$ENCODED_OUTPUTS" >> "$GITHUB_OUTPUT"
echo "=== Outputs captured and encoded ==="
Loading