title |
---|
Github Actions + AWS |
In this tutorial, you will set up Digger to automate terraform pull requests using Github Actions and AWS
- A GitHub repository with valid terraform code. Here's a demo repo
- Your AWS credentials. See Hashicorp's AWS tutorial
- Digger GitHub App installed
You can also self-host Digger orchestrator with a private GiHub app and issue your own token
Create Action Secrets with AWS credentials (you can also use OIDC)
In GitHub repository settings, go to Secrets and Variables - Actions. Create the following secrets:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
This file contains Digger configuration and needs to be placed at the root level of your repository. Assuming your terraform code is in the prod
directory:
projects:
- name: production
dir: prod
Place it at .github/workflows/digger_workflow.yml
(name is important!)
name: Digger Workflow
on:
workflow_dispatch:
inputs:
spec:
required: true
run_name:
required: false
run-name: '${{inputs.run_name}}'
jobs:
digger-job:
runs-on: ubuntu-latest
permissions:
contents: write # required to merge PRs
actions: write # required for plan persistence
id-token: write # required for workload-identity-federation
pull-requests: write # required to post PR comments
issues: read # required to check if PR number is an issue or not
statuses: write # required to validate combined PR status
steps:
- uses: actions/checkout@v4
- name: ${{ fromJSON(github.event.inputs.spec).job_id }}
run: echo "job id ${{ fromJSON(github.event.inputs.spec).job_id }}"
- uses: diggerhq/digger@vLatest
with:
digger-spec: ${{ inputs.spec }}
setup-aws: true
setup-terraform: true
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Terraform will run an existing plan against your code.
Make any change to your terraform code e.g. add a blank line. An action run should start (you can see log output in Actions). After some time you should see output of Terraform Plan added as a comment to your PR.
Then you can add a comment like digger apply
and shortly after apply output will be added as comment too.