Creating your Pipeline with GitHub
GitHub Actions
Add Actions secrets
There are multiple ways to configure the {terraform-provider-link}[Terraform {terraform-provider} provider]. You could commit the credentials in your code, with a high potential risk of leakage, or another simple solution is to define the required environment variables as Actions secrets.
In your project settings in Secrets Actions, create secrets for these variables:
Unresolved directive in pipelines_github.adoc - include::partial$variables-{ci-variables}.adoc[]
Create GitHub Actions workflow for your project
Unfortunately, composite Actions have some limitations right now,
so we can’t provide a single Action to declare in your workflow
(as we do for GitLab pipeline).
Hence, you have to create a .github/workflows/terraform.yml
file with this content:
---
name: 'Terraform'
on:
push:
branches:
- main
pull_request:
jobs:
terraform:
name: Terraform
runs-on: ubuntu-latest
env:
Unresolved directive in pipelines_github.adoc - include::partial$variables-{ci-variables}-github.adoc[]
TF_ROOT: terraform
defaults:
run:
working-directory: ${{ env.TF_ROOT }}
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Terraform
uses: hashicorp/setup-terraform@v1
with:
terraform_version: 0.14.10
- name: Terraform Format
run: terraform fmt -check -diff -recursive
- name: Terraform Init
run: terraform init
- name: Terraform Validate
run: terraform validate -no-color
- name: Terraform Plan
if: github.event_name == 'pull_request'
run: terraform plan -no-color -out plan
- name: Install aws-iam-authenticator
if: github.event_name == 'push'
run: |
mkdir -p ${{ github.workspace }}/bin
curl -o ${{ github.workspace }}/bin/aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator
chmod +x ${{ github.workspace }}/bin/aws-iam-authenticator
echo "PATH=${{ github.workspace }}/bin:$PATH" >> $GITHUB_ENV
- name: Terraform Apply
if: github.event_name == 'push'
run: terraform apply --auto-approve
- name: Terraform Plan
if: github.event_name == 'push'
run: terraform plan --detailed-exitcode -no-color