-
Notifications
You must be signed in to change notification settings - Fork 0
63 lines (56 loc) · 1.88 KB
/
terrraform.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
name: Terraform
on:
push:
branches:
- "**"
pull_request:
branches:
- "**"
permissions:
contents: read
env:
TERRAFORM_VERSION: 1.4.6
DEFAULT_BRANCH_CONFIG: |
{
"TERRAFORM_DIR": ".",
"BRANCHES": [
{
"BRANCH": "default",
"WORKSPACE": "default",
"VARFILES": [
"terraform.tfvars"
],
"SHOULD_PLAN": true,
"SHOULD_APPLY": true
}
]
}
jobs:
setup:
runs-on: ubuntu-latest
outputs:
varfile: ${{ steps.branch-check.outputs.varfile }}
workspace: ${{ steps.branch-check.outputs.workspace }}
terraform_dir: ${{ steps.branch-check.outputs.terraform_dir }}
should_plan: ${{ steps.branch-check.outputs.should_plan }}
should_apply: ${{ steps.branch-check.outputs.should_apply }}
steps:
- name: Parse Configuration
id: parse-config
run: |
BRANCH_NAME="${{ github.head_ref || github.ref_name }}"
if [ -f "tf-cfg.yaml" ]; then
BRANCH_CONFIG=$(cat tf-cfg.yaml | yq eval '.BRANCHES[] | select(.BRANCH == env(BRANCH_NAME))')
elif [ -f "tf-cfg.json" ]; then
BRANCH_CONFIG=$(cat tf-cfg.json | yq eval '.BRANCHES[] | select(.BRANCH == env(BRANCH_NAME))')
else
BRANCH_CONFIG="${{ env.DEFAULT_BRANCH_CONFIG }}"
fi
WORKSPACE=$(echo "$BRANCH_CONFIG" | yq eval ".WORKSPACE" -)
VARFILE=$(echo "$BRANCH_CONFIG" | yq eval ".VARFILE" -)
SHOULD_PLAN=$(echo "BRANCH_$CONFIG" | yq eval ".SHOULD_PLAN" -)
SHOULD_APPLY=$(echo "BRANCH_$CONFIG" | yq eval ".SHOULD_APPLY" -)
echo "workspace=$WORKSPACE" >> $GITHUB_OUTPUT
echo "varfile=$VARFILE" >> $GITHUB_OUTPUT
echo "should_plan=$SHOULD_PLAN" >> $GITHUB_OUTPUT
echo "should_apply=$SHOULD_APPLY" >> $GITHUB_OUTPUT