Skip to content

Commit f5fb49a

Browse files
authored
Merge pull request #14 from devops-coop/feature-indempotence
Feature - idempotence
2 parents 38aee41 + 6090eef commit f5fb49a

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-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

tasks/setup/systemd.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
- minecraft.socket
1515
notify:
1616
- restart Minecraft
17+
register: systemd_service_config
1718

1819
- name: reload systemd
1920
command: systemctl daemon-reload
2021
become: true
22+
when: systemd_service_config.changed
2123

2224
- name: configure console directory
2325
template:
@@ -27,6 +29,12 @@
2729
group: root
2830
mode: '0644'
2931

32+
- name: check if tmpfile exists
33+
stat:
34+
path: /etc/tmpfiles.d/{{ minecraft_service_name }}.conf
35+
register: minecraft_tmpfile
36+
3037
- name: create console directory
3138
command: systemd-tmpfiles --create /etc/tmpfiles.d/{{ minecraft_service_name }}.conf
3239
become: true
40+
when: minecraft_tmpfile.stat.islnk

0 commit comments

Comments
 (0)