Skip to content

Update github actions jobs (#11) #31

Update github actions jobs (#11)

Update github actions jobs (#11) #31

Workflow file for this run

name: "Preflight"
on:
pull_request:
jobs:
extract-changed-directories:
name: "extract-changed-directories"
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install GitHub CLI
run: sudo apt-get install gh
- name: Get unique changed files in PR
id: changed-dirs
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=${{ github.event.pull_request.number }}
echo $PR_NUMBER
FILES=$(gh pr view $PR_NUMBER --json files -q '.files[].path')
echo "$FILES" | grep '^projects/.*\.tf$' | sed 's|/[^/]*$||' | sort -u | jq -R -s -c 'split("\n") | map(select(length > 0))' > changed_dirs.json
cat changed_dirs.json
echo "dirs=$(cat changed_dirs.json)" >> $GITHUB_OUTPUT
- name: Confirm Output
run: |
echo "Changes directories: ${{ steps.changed-dirs.outputs.dirs }}"
outputs:
dirs: ${{ steps.changed-dirs.outputs.dirs }}
terraform-preflight:
name: "terraform-preflight"
runs-on: ubuntu-latest
permissions:
pull-requests: write
needs: extract-changed-directories
if: needs.extract-changed-directories.outputs.dirs != '[]' && needs.extract-changed-directories.outputs.dirs != ''
strategy:
matrix:
dir: ${{ fromJson(needs.extract-changed-directories.outputs.dirs) }}
defaults:
run:
working-directory: ${{ matrix.dir }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install GitHub CLI
run: sudo apt-get install gh
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
with:
cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Validate
id: validate
run: terraform validate -no-color
- name: Terraform Plan
id: plan
env:
TF_VAR_hcp_client_id: ${{ secrets.HCP_CLIENT_ID }}
TF_VAR_hcp_client_secret: ${{ secrets.HCP_CLIENT_SECRET }}
run: terraform plan -no-color -input=false
continue-on-error: true
- name: Add a comment to the PR
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=${{ github.event.pull_request.number }}
COMMENT="#### Terraform Initialization ⚙️ \`${{ steps.init.outcome }}\`
#### Terraform Validation 🤖 \`${{ steps.validate.outcome }}\`
#### Terraform Plan 📖 \`${{ steps.plan.outcome }}\`
<details><summary>Show Plan</summary>
\`\`\`terraform
${{ steps.plan.outputs.stdout }}
\`\`\`
</details>
*Pushed by: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*"
gh pr comment "$PR_NUMBER" --body "$COMMENT"
- name: Terraform Plan Status
if: steps.plan.outcome == 'failure'
run: exit 1