-
Notifications
You must be signed in to change notification settings - Fork 0
76 lines (66 loc) · 2.46 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
64
65
66
67
68
69
70
71
72
73
74
75
76
name: Terraform
on:
push:
branches:
- "**"
pull_request:
branches:
- "**"
permissions:
contents: read
env:
TERRAFORM_VERSION: 1.4.6
DEFAULT_BRANCH_CONFIG: |
{
"TERRAFORM_DIR": ".",
"BRANCHES": [
{
"WORKSPACE": "default",
"VARFILES": [
"terraform.tfvars"
],
"SHOULD_PLAN": true,
"SHOULD_APPLY": true
}
]
}
jobs:
setup:
runs-on: ubuntu-latest
outputs:
workspace: ${{ steps.parse-config.outputs.workspace }}
varfile: ${{ steps.parse-config.outputs.varfile }}
should_plan: ${{ steps.parse-config.outputs.should_plan }}
should_apply: ${{ steps.parse-config.outputs.should_apply }}
terraform_dir: ${{ steps.parse-config.outputs.terraform_dir }}
steps:
- name: Parse Configuration
id: parse-config
run: |
BRANCH_NAME="${{ github.head_ref || github.ref_name }}"
if [ -f "tf-cfg.yaml" ]; then
TERRAFORM_DIR=$(cat tf-cfg.yaml | yq eval '.TERRAFORM_DIR')
BRANCH_CONFIG=$(cat tf-cfg.yaml | yq eval '.BRANCHES[] | select(.BRANCH == env(BRANCH_NAME))')
elif [ -f "tf-cfg.json" ]; then
TERRAFORM_DIR=$(cat tf-cfg.json | yq eval '.TERRAFORM_DIR')
BRANCH_CONFIG=$(cat tf-cfg.json | yq eval '.BRANCHES[] | select(.BRANCH == env(BRANCH_NAME))')
else
TERRAFORM_DIR=$(echo "${{ env.DEFAULT_BRANCH_CONFIG }}" | yq eval '.TERRAFORM_DIR')
BRANCH_CONFIG=$(echo "${{ env.DEFAULT_BRANCH_CONFIG }}" | yq eval '.BRANCHES[0]')
fi
echo "$(echo BRANCH_CONFIG | yq)"
#echo BRANCH_CONFIG | jq
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"
echo "varfile: $VARFILE"
echo "should_plan: $SHOULD_PLAN"
echo "should_apply: $SHOULD_APPLY"
echo "terraform_dir: $TERRAFORM_DIR"
echo "workspace=$WORKSPACE" >> $GITHUB_OUTPUT
echo "varfile=$VARFILE" >> $GITHUB_OUTPUT
echo "should_plan=$SHOULD_PLAN" >> $GITHUB_OUTPUT
echo "should_apply=$SHOULD_APPLY" >> $GITHUB_OUTPUT
echo "terraform_dir=$TERRAFORM_DIR" >> $GITHUB_OUTPUT