add terraform deploy action

This commit is contained in:
zowoq 2022-10-21 13:52:37 +10:00
parent 4297a0369c
commit 9e78bac1b9
4 changed files with 53 additions and 7 deletions
.github/workflows
bors.toml
terraform

45
.github/workflows/terraform.yml vendored Normal file
View file

@ -0,0 +1,45 @@
name: "terraform"
# for security should only run on push to bors branches (staging/trying)
on:
push:
branches:
- staging
- trying
jobs:
terraform-deploy:
if: github.repository == 'nix-community/infra'
runs-on: ubuntu-latest
env:
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
TF_IN_AUTOMATION: true
steps:
- uses: actions/checkout@v3
- uses: dorny/paths-filter@v2
id: changes
with:
filters: |
terraform:
- 'terraform/**'
- uses: cachix/install-nix-action@v18
if: steps.changes.outputs.terraform == 'true'
with:
extra_nix_config: |
experimental-features = nix-command flakes
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
- name: init
if: steps.changes.outputs.terraform == 'true'
run: nix develop -c ./terraform/deploy terraform init -input=false
- name: validate
if: steps.changes.outputs.terraform == 'true'
run: nix develop -c ./terraform/deploy terraform validate
- name: fmt
if: steps.changes.outputs.terraform == 'true'
run: nix develop -c ./terraform/deploy terraform fmt -check
- name: plan
if: steps.changes.outputs.terraform == 'true' && github.ref == 'refs/heads/trying'
run: nix develop -c ./terraform/deploy terraform plan -input=false
- name: apply
if: steps.changes.outputs.terraform == 'true' && github.ref == 'refs/heads/staging'
run: nix develop -c ./terraform/deploy terraform apply -auto-approve -input=false

View file

@ -3,4 +3,6 @@ status = [
"ci/hercules/derivations",
"ci/hercules/effects",
"ci/hercules/evaluation",
# not a required status check
"terraform-deploy",
]

View file

@ -1,5 +0,0 @@
source_up
# terraform cloud without the remote execution part
export TF_FORCE_LOCAL_BACKEND="1";
eval "$("$direnv" dotenv bash <(sops -d --output-type dotenv secrets.yaml))"

View file

@ -1,5 +1,9 @@
#!/usr/bin/env bash
set -euo pipefail
terraform init
terraform apply
pushd "$(dirname "$0")" >/dev/null
# terraform cloud without the remote execution part
TF_FORCE_LOCAL_BACKEND="1" sops exec-env secrets.yaml "${*}"
popd >/dev/null