Skip to content

Load the minecraft server.jar by dynamic url from mainfests files #27

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ before_install:
- sudo -E ./scripts/install-docker.sh
install: true
script:
- make "${OS}" test
- travis_wait 60 make "${OS}" test
notifications:
email: false
webhooks: https://galaxy.ansible.com/api/v1/notifications/
2 changes: 1 addition & 1 deletion defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
minecraft_server: minecraft
minecraft_version: latest
minecraft_url: https://s3.amazonaws.com/Minecraft.Download/versions
minecraft_url: https://launcher.mojang.com/v1/objects
minecraft_user: "{{ minecraft_server }}"
minecraft_group: "{{ minecraft_server }}"
minecraft_home: /srv/{{ minecraft_server }}
Expand Down
30 changes: 30 additions & 0 deletions tasks/download/fetch_version_download-curl.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
- name: retrieve versions manifest
local_action: command curl {{ minecraft_version_manifest_url }}
register: minecraft_versions

- name: find latest release version
set_fact:
minecraft_version: "{{(minecraft_versions.stdout | from_json).latest.release}}"
when: minecraft_version == "latest"

- name: use the configured minecraft version number
set_fact:
minecraft_version: "{{minecraft_version}}"
when: minecraft_version != "latest"

- name: extract version specific mainfest file
set_fact:
minecraft_version_manifest_url: "{{ (minecraft_versions.stdout | from_json).versions | selectattr('id','match', (minecraft_version|string) ) | map(attribute='url') | list | first }}"

- debug: var=minecraft_version_manifest_url

- name: retrieve version manifest
local_action: command curl {{ minecraft_version_manifest_url }}
register: minecraft_version_info


- name: "extract the download url from version manifest"
set_fact:
minecraft_server_download_url: "{{(minecraft_version_info.stdout | from_json).downloads.server.url}}"
minecraft_server_download_checksum: "sha1:{{(minecraft_version_info.stdout | from_json).downloads.server.sha1}}"
31 changes: 31 additions & 0 deletions tasks/download/fetch_version_download-uri.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
- name: load version informations
uri:
url: "{{minecraft_version_manifest_url}}"
return_content: yes
register: minecraft_versions

- name: find latest release version
set_fact:
minecraft_version: "{{minecraft_versions.json.latest.release}}"
when: minecraft_version == "latest"

- name: use the configured minecraft version number
set_fact:
minecraft_version: "{{minecraft_version}}"
when: minecraft_version != "latest"

- name: extract version specific mainfest file
set_fact:
minecraft_version_manifest_url: "{{ minecraft_versions.json.versions | selectattr('id','match', (minecraft_version|string) ) | map(attribute='url') | list | first }}"

- name: Download the version specific mainfest file
uri:
url: "{{minecraft_version_manifest_url}}"
return_content: yes
register: minecraft_version_info

- name: "extract the download url from version manifest"
set_fact:
minecraft_server_download_url: "{{minecraft_version_info.json.downloads.server.url}}"
minecraft_server_download_checksum: "sha1:{{minecraft_version_info.json.downloads.server.sha1}}"
8 changes: 8 additions & 0 deletions tasks/download/fetch_version_download.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- name: fetch latest version using uri module
include: fetch_version_download-uri.yml
when: ansible_version.full is version_compare('2.0.2', '>=')

- name: fetch latest version using curl
include: fetch_version_download-curl.yml
when: minecraft_server_download_url is not defined
7 changes: 0 additions & 7 deletions tasks/download/latest-curl.yml

This file was deleted.

10 changes: 0 additions & 10 deletions tasks/download/latest-uri.yml

This file was deleted.

8 changes: 0 additions & 8 deletions tasks/download/latest.yml

This file was deleted.

7 changes: 4 additions & 3 deletions tasks/download/minecraft.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
- include: latest.yml
when: minecraft_version == 'latest'
- include: fetch_version_download.yml
when: minecraft_server_download_url is undefined

- name: download Minecraft server
get_url:
url: "{{ minecraft_url }}/{{ minecraft_version_latest | default(minecraft_version) }}/minecraft_server.{{ minecraft_version_latest | default(minecraft_version) }}.jar"
url: "{{ minecraft_server_download_url }}"
dest: "{{ minecraft_home }}/minecraft_server.{{ minecraft_version_latest | default(minecraft_version) }}.jar"
owner: "{{ minecraft_user }}"
group: "{{ minecraft_group }}"
checksum: "{{minecraft_server_download_checksum}}"
mode: '0755'
2 changes: 1 addition & 1 deletion tests/minecraft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
- hosts: all
roles:
- role: devops-coop.minecraft
minecraft_version: 1.9
minecraft_version: "1.9"
minecraft_server_properties:
server-port: 25565
rcon.port: 25564
Expand Down