Skip to content

feat: generate dependency chart #63

feat: generate dependency chart

feat: generate dependency chart #63

Workflow file for this run

name: Infrastructure
concurrency:
cancel-in-progress: false
group: '${{ github.workflow }}'
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
contents: read
env:
terragrunt_version: '0.53.4'
jobs:
check_secrets:
name: Check secrets
runs-on: ubuntu-latest
strategy:
matrix:
secretName:
- GH_ADMIN_TOKEN
- PG_CONN_STR
- ELEPHANTSQL_APIKEY
- GANDI_KEY
- IMPROVMX_API_TOKEN
steps:
- uses: actions/checkout@v3
- name: "Check: ${matrix.secretName}"
uses: ./.github/actions/check-env-var
with:
env_var: ${{ secrets[matrix.secretName] }}
plan:
name: "Terragrunt: Plan"
needs: [check_secrets]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: opentofu/setup-opentofu@v1
with:
tofu_wrapper: false
- uses: ./.github/actions/install-terragrunt
with:
version: ${{ env.terragrunt_version }}
- name: Plan
working-directory: stages
env:
GH_ADMIN_TOKEN: ${{ secrets.GH_ADMIN_TOKEN }}
PG_CONN_STR: ${{ secrets.PG_CONN_STR }}
ELEPHANTSQL_APIKEY: ${{ secrets.ELEPHANTSQL_APIKEY }}
GANDI_KEY: ${{ secrets.GANDI_KEY }}
IMPROVMX_API_TOKEN: ${{ secrets.IMPROVMX_API_TOKEN }}
run: terragrunt run-all plan --terragrunt-non-interactive
graph:
name: "Terragrunt: Graph"
needs: [plan]
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install graphvix
run: sudo apt install graphviz
- uses: opentofu/setup-opentofu@v1
with:
tofu_wrapper: false
- uses: ./.github/actions/install-terragrunt
with:
version: ${{ env.terragrunt_version }}
- name: Generate graph
working-directory: stages
env:
GH_ADMIN_TOKEN: ${{ secrets.GH_ADMIN_TOKEN }}
PG_CONN_STR: ${{ secrets.PG_CONN_STR }}
ELEPHANTSQL_APIKEY: ${{ secrets.ELEPHANTSQL_APIKEY }}
GANDI_KEY: ${{ secrets.GANDI_KEY }}
IMPROVMX_API_TOKEN: ${{ secrets.IMPROVMX_API_TOKEN }}
run: terragrunt graph-dependencies | sed '2d' | dot -T png > "$GITHUB_WORKSPACE/graph.png"
- name: Configure Git
run: |
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
- name: Commit updated graph
env:
GITHUB_TOKEN: ${{ secrets.GH_ADMIN_TOKEN }}
run: |
git add "$GITHUB_WORKSPACE/graph.png"
git commit -m "chore(graph): update graph dependencies"
- name: Push commit
env:
GITHUB_TOKEN: ${{ secrets.GH_ADMIN_TOKEN }}
run: |
git push origin "HEAD:$GITHUB_REF"
apply:
name: "Terragrunt: Apply"
needs: [plan]
if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main'
environment: live
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: opentofu/setup-opentofu@v1
with:
tofu_wrapper: false
- uses: ./.github/actions/install-terragrunt
with:
version: ${{ env.terragrunt_version }}
- name: Apply
working-directory: stages
env:
GH_ADMIN_TOKEN: ${{ secrets.GH_ADMIN_TOKEN }}
PG_CONN_STR: ${{ secrets.PG_CONN_STR }}
ELEPHANTSQL_APIKEY: ${{ secrets.ELEPHANTSQL_APIKEY }}
GANDI_KEY: ${{ secrets.GANDI_KEY }}
IMPROVMX_API_TOKEN: ${{ secrets.IMPROVMX_API_TOKEN }}
run: terragrunt run-all apply -auto-approve --terragrunt-non-interactive