Skip to content

Commit a53bb3f

Browse files
committed
Support Spigot
* download and install Spigot BuildTools * build Spigot and symlink release * customize service templates for Minecraft/Spigot * add test suite for Spigot * add Spigot to Travis build matrix
1 parent 507b99a commit a53bb3f

File tree

18 files changed

+192
-13
lines changed

18 files changed

+192
-13
lines changed

.travis.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@ env:
88
- DOCKER_VERSION=1.10.2-0~trusty
99
- DOCKER_COMPOSE_VERSION=1.6.2
1010
matrix:
11-
- OS=jessie64 PROCESS_CONTROL=systemd
12-
- OS=jessie64 PROCESS_CONTROL=supervisor
13-
- OS=trusty64 PROCESS_CONTROL=supervisor
14-
- OS=centos7 PROCESS_CONTROL=systemd
11+
- OS=jessie64 SERVER=minecraft PROCESS_CONTROL=systemd
12+
- OS=jessie64 SERVER=minecraft PROCESS_CONTROL=supervisor
13+
- OS=trusty64 SERVER=minecraft PROCESS_CONTROL=supervisor
14+
- OS=centos7 SERVER=minecraft PROCESS_CONTROL=systemd
15+
- OS=jessie64 SERVER=spigot PROCESS_CONTROL=systemd
16+
- OS=jessie64 SERVER=spigot PROCESS_CONTROL=supervisor
17+
- OS=trusty64 SERVER=spigot PROCESS_CONTROL=supervisor
18+
- OS=centos7 SERVER=spigot PROCESS_CONTROL=systemd
1519
before_install:
1620
- sudo -E ./scripts/install-docker.sh
1721
install: true

Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
BOXES := $(notdir $(wildcard docker/*))
22

33
PROCESS_CONTROL ?= systemd
4+
SERVER ?= minecraft
45

56
define USAGE
67
targets:
@@ -22,6 +23,7 @@ machines:
2223
variables:
2324

2425
PROCESS_CONTROL Choose from 'supervisor' or 'systemd'. Default: 'systemd'.
26+
SERVER Choose from 'minecraft' or 'spigot'. Default: 'minecraft'.
2527
endef
2628

2729
is_machine_target = $(if $(findstring $(firstword $(MAKECMDGOALS)),$(BOXES)),true,false)
@@ -41,7 +43,7 @@ help:
4143

4244
test:
4345
ifeq (true,$(call is_machine_target))
44-
./scripts/ci.sh $(firstword $(MAKECMDGOALS)) $(PROCESS_CONTROL)
46+
./scripts/ci.sh $(firstword $(MAKECMDGOALS)) $(PROCESS_CONTROL) $(SERVER)
4547
else
4648
$(error `test` requires a machine name, see `make help`)
4749
endif

defaults/main.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,5 @@ minecraft_console_fifo: /run/{{ minecraft_service_name }}/console
1717
minecraft_console_fifo_mode: '0666'
1818
minecraft_process_control: systemd
1919
minecraft_server_properties: {}
20+
21+
minecraft_spigot_url: https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

scripts/ci.sh

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ IFS=$'\n\t'
44

55
declare -r OS=${1:-${OS}}
66
declare -r PROCESS_CONTROL=${2:-${PROCESS_CONTROL}}
7+
declare -r SERVER=${3:-${SERVER}}
78
declare -r WORKSPACE=${WORKSPACE:-/tmp/ansible-minecraft}
89

910
function cleanup() {
@@ -24,23 +25,23 @@ function main() {
2425
-i "${WORKSPACE}/tests/inventory" \
2526
--syntax-check \
2627
-v \
27-
--extra-vars="minecraft_process_control=${PROCESS_CONTROL}" \
28-
"${WORKSPACE}/tests/site.yml"
28+
--extra-vars="minecraft_process_control=${PROCESS_CONTROL} minecraft_server=${SERVER}" \
29+
"${WORKSPACE}/tests/${SERVER}.yml"
2930

3031
# Install Minecraft.
3132
docker exec -t "${container}" ansible-playbook \
3233
-i "${WORKSPACE}/tests/inventory" \
3334
-c local \
3435
-v \
35-
--extra-vars="minecraft_process_control=${PROCESS_CONTROL}" \
36-
"${WORKSPACE}/tests/site.yml"
36+
--extra-vars="minecraft_process_control=${PROCESS_CONTROL} minecraft_server=${SERVER}" \
37+
"${WORKSPACE}/tests/${SERVER}.yml"
3738

3839
# Sleep to allow Minecraft to boot.
3940
# FIXME: A retry loop checking if it has launched yet would be better.
4041
sleep 10
4142

4243
# Run tests.
43-
docker exec -t "${container}" rspec "${WORKSPACE}/tests/spec/minecraft_spec.rb"
44+
docker exec -t "${container}" rspec "${WORKSPACE}/tests/spec/${SERVER}_spec.rb"
4445
}
4546

4647
trap cleanup EXIT

tasks/configure.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# We send the stop command to the stdin to stop the server right after it
33
# starts.
44
- name: generate server.properties
5-
shell: echo "/stop" | java -jar minecraft_server.jar nogui
5+
shell: echo "/stop" | java -jar {{ minecraft_jar }} nogui
66
args:
77
creates: server.properties
88
chdir: "{{ minecraft_home }}"

tasks/download/main.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
- include: minecraft.yml
22
when: minecraft_server == 'minecraft'
3+
4+
- include: spigot.yml
5+
when: minecraft_server == 'spigot'

tasks/download/spigot.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
- name: create Spigot build directory
2+
file:
3+
path: "{{ minecraft_home }}/build"
4+
state: directory
5+
mode: 0755
6+
owner: "{{ minecraft_user }}"
7+
group: "{{ minecraft_group }}"
8+
9+
- name: download Spigot build tools
10+
get_url:
11+
url: "{{ minecraft_spigot_url }}"
12+
dest: "{{ minecraft_home }}/build"
13+
owner: "{{ minecraft_user }}"
14+
group: "{{ minecraft_group }}"
15+
mode: 0755

tasks/install/main.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
- include: minecraft.yml
22
when: minecraft_server == 'minecraft'
3+
4+
- include: spigot.yml
5+
when: minecraft_server == 'spigot'

tasks/install/spigot.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
- include: latest.yml
2+
when: minecraft_version == 'latest'
3+
4+
- name: build Spigot server
5+
command: java -jar BuildTools.jar --rev "{{ minecraft_version_latest | default(minecraft_version) }}"
6+
args:
7+
creates: spigot-{{ minecraft_version_latest | default(minecraft_version) }}.jar
8+
chdir: "{{ minecraft_home }}/build"
9+
become: true
10+
become_user: "{{ minecraft_user }}"
11+
12+
- name: symlink Spigot server
13+
file:
14+
src: "{{ minecraft_home }}/build/spigot-{{ minecraft_version_latest | default(minecraft_version) }}.jar"
15+
path: "{{ minecraft_home }}/spigot.jar"
16+
owner: "{{ minecraft_user }}"
17+
group: "{{ minecraft_group }}"
18+
state: link
19+
notify:
20+
- restart Minecraft
21+
22+
- name: agree to EULA
23+
copy:
24+
src: eula.txt
25+
dest: "{{ minecraft_home }}/eula.txt"
26+
mode: 0644
27+
owner: "{{ minecraft_user }}"
28+
group: "{{ minecraft_group }}"
29+
notify:
30+
- enable service

tasks/setup/Debian.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,11 @@
44
state=present
55
install_recommends=no
66
with_items: "{{ dependencies }}"
7+
8+
- name: install Spigot dependencies
9+
apt:
10+
name: "{{ item }}"
11+
with_items:
12+
- git
13+
- tar
14+
when: minecraft_server == 'spigot'

0 commit comments

Comments
 (0)