Skip to content

Commit 42ba1c4

Browse files
committed
ci: support prepare test
1 parent a1567e9 commit 42ba1c4

File tree

2 files changed

+62
-9
lines changed

2 files changed

+62
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ TestRecordImport
1818
TestRecordTfer
1919
terraform.tfstate
2020
terraform.tfstate.backup
21+
**/terraform.tfvars
2122
quickstarts/**/header.md
2223
quickstarts/**/footer.md
2324
quickstarts/**/plan.tftest.hcl

scripts/terraform-test.sh

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,47 @@
22

33
f=$1
44
success=true
5+
exitCode=0
56

67
f=$(echo $f | xargs echo -n)
8+
f="${f%/}"
79

8-
exitCode=0
910
echo ""
1011
echo "====> Terraform testing in" $f
12+
13+
# set up prerequisite resources
14+
varfile=""
15+
if [ -d "$f/prepare" ]; then
16+
echo ""
17+
echo " ====> Found prepare directory. Creating prerequisite resources in $f/prepare"
18+
terraform -chdir=$f/prepare init -upgrade >/dev/null
19+
if [[ $? -ne 0 ]]; then
20+
success=false
21+
exitCode=1
22+
echo -e "\033[31m[ERROR]\033[0m: running terraform init in prepare directory failed."
23+
bash scripts/generate-test-record.sh $f "Prepare Init: running terraform init in prepare directory failed."
24+
else
25+
terraform -chdir=$f/prepare apply -auto-approve >/dev/null
26+
if [[ $? -ne 0 ]]; then
27+
success=false
28+
exitCode=3
29+
echo -e "\033[31m[ERROR]\033[0m: running terraform apply in prepare directory failed."
30+
bash scripts/generate-test-record.sh $f "Prepare Apply: running terraform apply in prepare directory failed."
31+
terraform -chdir=$f/prepare destroy -auto-approve >/dev/null
32+
else
33+
echo -e "\033[32m - prepare apply: success\033[0m"
34+
terraform -chdir=$f/prepare output > $f/prepare/terraform.tfvars
35+
varfile="-var-file=./prepare/terraform.tfvars"
36+
fi
37+
fi
38+
fi
39+
if [[ $success == "false" ]]; then
40+
rm -rf $f/prepare/.terraform
41+
rm -rf $f/prepare/.terraform.lock.hcl
42+
exit $exitCode
43+
fi
44+
45+
1146
terraform -chdir=$f init -upgrade >/dev/null
1247
if [[ $? -ne 0 ]]; then
1348
success=false
@@ -17,7 +52,7 @@ if [[ $? -ne 0 ]]; then
1752
else
1853
echo ""
1954
echo " ----> Plan Testing"
20-
terraform -chdir=$f plan >/dev/null
55+
terraform -chdir=$f plan $varfile >/dev/null
2156
if [[ $? -ne 0 ]]; then
2257
success=false
2358
exitCode=2
@@ -27,7 +62,7 @@ else
2762
echo -e "\033[32m - plan check: success\033[0m"
2863
echo ""
2964
echo " ----> Apply Testing"
30-
terraform -chdir=$f apply -auto-approve >/dev/null
65+
terraform -chdir=$f apply -auto-approve $varfile >/dev/null
3166
if [[ $? -ne 0 ]]; then
3267
success=false
3368
exitCode=3
@@ -37,7 +72,7 @@ else
3772
echo -e "\033[32m - apply check: success\033[0m"
3873
echo ""
3974
echo -e " ----> Apply Diff Checking\n"
40-
terraform -chdir=$f plan -detailed-exitcode
75+
terraform -chdir=$f plan $varfile -detailed-exitcode
4176
if [[ $? -ne 0 ]]; then
4277
success=false
4378
exitCode=4
@@ -53,7 +88,7 @@ else
5388
fi
5489
echo ""
5590
echo " ----> Destroying"
56-
terraform -chdir=$f destroy -auto-approve >/dev/null
91+
terraform -chdir=$f destroy $varfile -auto-approve >/dev/null
5792
if [[ $? -ne 0 ]]; then
5893
success=false
5994
if [[ $exitCode -eq 0 ]]; then
@@ -66,14 +101,31 @@ else
66101
fi
67102
fi
68103

69-
if [[ $success == "true" ]]; then
70-
bash scripts/generate-test-record.sh $f
71-
fi
72-
73104
rm -rf $f/.terraform
74105
rm -rf $f/.terraform.lock.hcl
75106
fi
76107

108+
# destroy prerequisite resources
109+
if [ -d "$f/prepare" ]; then
110+
echo ""
111+
echo " ====> Destroying prerequisite resources in $f/prepare"
112+
terraform -chdir=$f/prepare destroy -auto-approve >/dev/null
113+
if [[ $? -ne 0 ]]; then
114+
success=false
115+
exitCode=5
116+
echo -e "\033[31m[ERROR]\033[0m: running terraform destroy in prepare directory failed."
117+
bash scripts/generate-test-record.sh $f "Prepare Destroy: running terraform destroy in prepare directory failed."
118+
else
119+
echo -e "\033[32m - prepare destroy: success\033[0m"
120+
fi
121+
rm -rf $f/prepare/.terraform
122+
rm -rf $f/prepare/.terraform.lock.hcl
123+
fi
124+
125+
126+
if [[ $success == "true" ]]; then
127+
bash scripts/generate-test-record.sh $f
128+
fi
77129
echo -e "\n"
78130

79131
exit $exitCode

0 commit comments

Comments
 (0)