From 65d528e2ff2939e0188dfb5f130851c68b3543fc Mon Sep 17 00:00:00 2001 From: Ulises Gascon Date: Tue, 20 Jun 2023 14:20:35 +0200 Subject: [PATCH] feat: added dedicated pipeline for Terraform --- .github/workflows/terraform.yml | 58 +++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/terraform.yml diff --git a/.github/workflows/terraform.yml b/.github/workflows/terraform.yml new file mode 100644 index 000000000..6dbd67891 --- /dev/null +++ b/.github/workflows/terraform.yml @@ -0,0 +1,58 @@ +name: 'Terraform' + +on: + push: + branches: [ "main" ] + paths: + - terraform/** + pull_request: + paths: + - terraform/** + +permissions: + contents: read + +jobs: + terraform: + name: 'Terraform' + runs-on: ubuntu-latest + env: + working-directory: ./terraform + + # Use the Bash shell regardless whether the GitHub Actions runner is ubuntu-latest, macos-latest, or windows-latest + defaults: + run: + shell: bash + + steps: + # Checkout the repository to the GitHub Actions runner + - name: Checkout + uses: actions/checkout@v3 + + # Install the latest version of Terraform CLI and configure the Terraform CLI configuration file with a Terraform Cloud user API token + - name: Setup Terraform + uses: hashicorp/setup-terraform@v2 + with: + cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }} + + # Initialize a new or existing Terraform working directory by creating initial files, loading any remote state, downloading modules, etc. + - name: Terraform Init + run: terraform init + working-directory: ${{ env.working-directory }} + + # Checks that all Terraform configuration files adhere to a canonical format + - name: Terraform Format + run: terraform fmt -check + working-directory: ${{ env.working-directory }} + + # Generates an execution plan for Terraform + - name: Terraform Plan + run: terraform plan -input=false + working-directory: ${{ env.working-directory }} + + # On push to "main", build or change infrastructure according to Terraform configuration files + # Note: It is recommended to set up a required "strict" status check in your repository for "Terraform Cloud". See the documentation on "strict" required status checks for more information: https://help.github.com/en/github/administering-a-repository/types-of-required-status-checks + - name: Terraform Apply + if: github.ref == 'refs/heads/main' && github.event_name == 'push' + run: terraform apply -auto-approve -input=false + working-directory: ${{ env.working-directory }}