Skip to content

Commit a60d045

Browse files
committed
Added idempotence test and colors
1 parent 38aee41 commit a60d045

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

scripts/ci.sh

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
set -euxo pipefail
33
IFS=$'\n\t'
44

5+
# Pretty colors.
6+
red='\033[0;31m'
7+
green='\033[0;32m'
8+
neutral='\033[0m'
9+
510
declare -r OS=${1:-${OS}}
611
declare -r PROCESS_CONTROL=${2:-${PROCESS_CONTROL}}
712
declare -r SERVER=${3:-${SERVER}}
@@ -25,25 +30,38 @@ function main() {
2530
# Install role.
2631
docker cp . "${container}:${WORKSPACE}"
2732

28-
docker exec -t "${container}" mkdir "${WORKSPACE}/tests/roles"
29-
docker exec -t "${container}" ln -s "${WORKSPACE}/" "${WORKSPACE}/tests/roles/devops-coop.minecraft"
30-
33+
docker exec -t "${container}" mkdir "${WORKSPACE}/tests/roles"
34+
docker exec -t "${container}" ln -s "${WORKSPACE}/" "${WORKSPACE}/tests/roles/devops-coop.minecraft"
35+
3136
# Validate syntax
32-
docker exec -t "${container}" ansible-playbook \
37+
docker exec -t "${container}" env ANSIBLE_FORCE_COLOR=1 ansible-playbook \
3338
-i "${WORKSPACE}/tests/inventory" \
3439
--syntax-check \
3540
-v \
3641
--extra-vars="minecraft_process_control=${PROCESS_CONTROL} minecraft_server=${SERVER}" \
3742
"${WORKSPACE}/tests/${SERVER}.yml"
3843

3944
# Install Minecraft.
40-
docker exec -t "${container}" ansible-playbook \
45+
docker exec -t "${container}" env ANSIBLE_FORCE_COLOR=1 ansible-playbook \
4146
-i "${WORKSPACE}/tests/inventory" \
4247
-c local \
4348
-v \
4449
--extra-vars="minecraft_process_control=${PROCESS_CONTROL} minecraft_server=${SERVER}" \
4550
"${WORKSPACE}/tests/${SERVER}.yml"
4651

52+
# Run Ansible playbook again (idempotence test).
53+
idempotence=$(mktemp)
54+
docker exec -t "${container}" env ANSIBLE_FORCE_COLOR=1 ansible-playbook \
55+
-i "${WORKSPACE}/tests/inventory" \
56+
-c local \
57+
-v \
58+
--extra-vars="minecraft_process_control=${PROCESS_CONTROL} minecraft_server=${SERVER}" \
59+
"${WORKSPACE}/tests/${SERVER}.yml" | tee -a $idempotence
60+
tail $idempotence \
61+
| grep -q 'changed=0.*failed=0' \
62+
&& (printf ${green}'Idempotence test: pass'${neutral}"\n") \
63+
|| (printf ${red}'Idempotence test: fail'${neutral}"\n" && exit 1)
64+
4765
# Sleep to allow Minecraft to boot.
4866
# FIXME: A retry loop checking if it has launched yet would be better.
4967
sleep 30

0 commit comments

Comments
 (0)