From 6314a7bab0249e4f85d76fa66c0e02d581a15a58 Mon Sep 17 00:00:00 2001 From: aptalca Date: Wed, 19 Jan 2022 14:23:20 -0500 Subject: [PATCH 1/2] rebase to alpine 3.15, fix ci trigger --- .github/workflows/external_trigger.yml | 2 +- Dockerfile | 15 ++-- Dockerfile.aarch64 | 15 ++-- Dockerfile.armhf | 15 ++-- Jenkinsfile | 112 +++++++++++++------------ README.md | 6 +- jenkins-vars.yml | 7 +- readme-vars.yml | 3 +- 8 files changed, 86 insertions(+), 89 deletions(-) diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index c712c62..37a51e3 100755 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -18,7 +18,7 @@ jobs: fi echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_MINETEST_MASTER\". ****" echo "**** Retrieving external version ****" - EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/minetest/minetest/releases/latest" | jq -r '. | .tag_name') + EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/minetest/minetest/releases" | jq -r '. | first(.[] | select(.tag_name | contains("android") | not)) | .tag_name') if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then echo "**** Can't retrieve external version, exiting ****" FAILURE_REASON="Can't retrieve external version for minetest branch master" diff --git a/Dockerfile b/Dockerfile index 4740247..cf7e7d5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ -FROM ghcr.io/linuxserver/baseimage-alpine:3.12 +FROM ghcr.io/linuxserver/baseimage-alpine:3.15 # set version label ARG BUILD_DATE ARG VERSION ARG MINETEST_RELEASE LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="sparklyballs" +LABEL maintainer="aptalca" # environment variables ENV HOME="/config" \ @@ -29,6 +29,8 @@ RUN \ hiredis-dev \ icu-dev \ irrlicht-dev \ + jq \ + leveldb-dev \ libjpeg-turbo-dev \ libogg-dev \ libpng-dev \ @@ -42,9 +44,6 @@ RUN \ openal-soft-dev \ python3-dev \ sqlite-dev && \ - apk add --no-cache --virtual=build-dependencies-2 \ - --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ - leveldb-dev && \ echo "**** install runtime packages ****" && \ apk add --no-cache \ curl \ @@ -69,8 +68,8 @@ RUN \ make install && \ echo "**** compile minetestserver ****" && \ if [ -z ${MINETEST_RELEASE+x} ]; then \ - MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]'); \ + MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ + | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ fi && \ mkdir -p \ /tmp/minetest && \ @@ -122,8 +121,6 @@ RUN \ echo "**** cleanup ****" && \ apk del --purge \ build-dependencies && \ - apk del --purge \ - build-dependencies-2 && \ rm -rf \ /tmp/* diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 7be7e24..c49e23a 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,11 +1,11 @@ -FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.12 +FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.15 # set version label ARG BUILD_DATE ARG VERSION ARG MINETEST_RELEASE LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="sparklyballs" +LABEL maintainer="aptalca" # environment variables ENV HOME="/config" \ @@ -29,6 +29,8 @@ RUN \ hiredis-dev \ icu-dev \ irrlicht-dev \ + jq \ + leveldb-dev \ libjpeg-turbo-dev \ libogg-dev \ libpng-dev \ @@ -42,9 +44,6 @@ RUN \ openal-soft-dev \ python3-dev \ sqlite-dev && \ - apk add --no-cache --virtual=build-dependencies-2 \ - --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ - leveldb-dev && \ echo "**** install runtime packages ****" && \ apk add --no-cache \ curl \ @@ -69,8 +68,8 @@ RUN \ make install && \ echo "**** compile minetestserver ****" && \ if [ -z ${MINETEST_RELEASE+x} ]; then \ - MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]'); \ + MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ + | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ fi && \ mkdir -p \ /tmp/minetest && \ @@ -122,8 +121,6 @@ RUN \ echo "**** cleanup ****" && \ apk del --purge \ build-dependencies && \ - apk del --purge \ - build-dependencies-2 && \ rm -rf \ /tmp/* diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 20a8d5d..10a9398 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -1,11 +1,11 @@ -FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.12 +FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.15 # set version label ARG BUILD_DATE ARG VERSION ARG MINETEST_RELEASE LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="sparklyballs" +LABEL maintainer="aptalca" # environment variables ENV HOME="/config" \ @@ -29,6 +29,8 @@ RUN \ hiredis-dev \ icu-dev \ irrlicht-dev \ + jq \ + leveldb-dev \ libjpeg-turbo-dev \ libogg-dev \ libpng-dev \ @@ -42,9 +44,6 @@ RUN \ openal-soft-dev \ python3-dev \ sqlite-dev && \ - apk add --no-cache --virtual=build-dependencies-2 \ - --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ - leveldb-dev && \ echo "**** install runtime packages ****" && \ apk add --no-cache \ curl \ @@ -69,8 +68,8 @@ RUN \ make install && \ echo "**** compile minetestserver ****" && \ if [ -z ${MINETEST_RELEASE+x} ]; then \ - MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]'); \ + MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ + | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ fi && \ mkdir -p \ /tmp/minetest && \ @@ -122,8 +121,6 @@ RUN \ echo "**** cleanup ****" && \ apk del --purge \ build-dependencies && \ - apk del --purge \ - build-dependencies-2 && \ rm -rf \ /tmp/* diff --git a/Jenkinsfile b/Jenkinsfile index 2b4711e..8b0f4ef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -17,9 +17,8 @@ pipeline { GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0') GITLAB_NAMESPACE=credentials('gitlab-namespace-id') SCARF_TOKEN=credentials('scarf_api_key') - EXT_GIT_BRANCH = 'master' - EXT_USER = 'minetest' - EXT_REPO = 'minetest' + JSON_URL = 'https://api.github.com/repos/minetest/minetest/releases' + JSON_PATH = 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name' BUILD_VERSION_ARG = 'MINETEST_RELEASE' LS_USER = 'linuxserver' LS_REPO = 'docker-minetest' @@ -102,21 +101,14 @@ pipeline { /* ######################## External Release Tagging ######################## */ - // If this is a stable github release use the latest endpoint from github to determine the ext tag - stage("Set ENV github_stable"){ + // If this is a custom json endpoint parse the return to get external tag + stage("Set ENV custom_json"){ steps{ script{ env.EXT_RELEASE = sh( - script: '''curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq -r '. | .tag_name' ''', + script: '''curl -s ${JSON_URL} | jq -r ". | ${JSON_PATH}" ''', returnStdout: true).trim() - } - } - } - // If this is a stable or devel github release generate the link for the build message - stage("Set ENV github_link"){ - steps{ - script{ - env.RELEASE_LINK = 'https://github.com/' + env.EXT_USER + '/' + env.EXT_REPO + '/releases/tag/' + env.EXT_RELEASE + env.RELEASE_LINK = env.JSON_URL } } } @@ -128,12 +120,11 @@ pipeline { script: '''echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g' ''', returnStdout: true).trim() - env.SEMVER = (new Date()).format('YYYY.MM.dd') - def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)$/ + def semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)\.(\d+)/ if (semver.find()) { env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}" } else { - semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)$/ + semver = env.EXT_RELEASE_CLEAN =~ /(\d+)\.(\d+)(?:\.(\d+))?(.*)/ if (semver.find()) { if (semver[0][3]) { env.SEMVER = "${semver[0][1]}.${semver[0][2]}.${semver[0][3]}" @@ -143,7 +134,15 @@ pipeline { } } - println("SEMVER: ${env.SEMVER}") + if (env.SEMVER != null) { + if (BRANCH_NAME != "master" && BRANCH_NAME != "main") { + env.SEMVER = "${env.SEMVER}-${BRANCH_NAME}" + } + println("SEMVER: ${env.SEMVER}") + } else { + println("No SEMVER detected") + } + } } } @@ -412,10 +411,10 @@ pipeline { steps{ sh '''#! /bin/bash set -e - PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/packages | jq -r '.[] | select(.name=="linuxserver/minetest") | .uuid') + PACKAGE_UUID=$(curl -X GET -H "Authorization: Bearer ${SCARF_TOKEN}" https://scarf.sh/api/v1/organizations/linuxserver-ci/packages | jq -r '.[] | select(.name=="linuxserver/minetest") | .uuid') if [ -z "${PACKAGE_UUID}" ]; then echo "Adding package to Scarf.sh" - PACKAGE_UUID=$(curl -sX POST https://scarf.sh/api/v1/packages \ + curl -sX POST https://scarf.sh/api/v1/organizations/linuxserver-ci/packages \ -H "Authorization: Bearer ${SCARF_TOKEN}" \ -H "Content-Type: application/json" \ -d '{"name":"linuxserver/minetest",\ @@ -423,22 +422,10 @@ pipeline { "libraryType":"docker",\ "website":"https://github.com/linuxserver/docker-minetest",\ "backendUrl":"https://ghcr.io/linuxserver/minetest",\ - "publicUrl":"https://lscr.io/linuxserver/minetest"}' \ - | jq -r .uuid) + "publicUrl":"https://lscr.io/linuxserver/minetest"}' || : else echo "Package already exists on Scarf.sh" fi - echo "Setting permissions on Scarf.sh for package ${PACKAGE_UUID}" - curl -X POST https://scarf.sh/api/v1/packages/${PACKAGE_UUID}/permissions \ - -H "Authorization: Bearer ${SCARF_TOKEN}" \ - -H "Content-Type: application/json" \ - -d '[{"userQuery":"Spad","permissionLevel":"admin"},\ - {"userQuery":"roxedus","permissionLevel":"admin"},\ - {"userQuery":"nemchik","permissionLevel":"admin"},\ - {"userQuery":"driz","permissionLevel":"admin"},\ - {"userQuery":"aptalca","permissionLevel":"admin"},\ - {"userQuery":"saarg","permissionLevel":"admin"},\ - {"userQuery":"Stark","permissionLevel":"admin"}]' ''' } } @@ -762,11 +749,15 @@ pipeline { docker tag ${IMAGE}:${META_TAG} ${PUSHIMAGE}:${META_TAG} docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:latest docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${EXT_RELEASE_TAG} - docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER} + if [ -n "${SEMVER}" ]; then + docker tag ${PUSHIMAGE}:${META_TAG} ${PUSHIMAGE}:${SEMVER} + fi docker push ${PUSHIMAGE}:latest docker push ${PUSHIMAGE}:${META_TAG} docker push ${PUSHIMAGE}:${EXT_RELEASE_TAG} - docker push ${PUSHIMAGE}:${SEMVER} + if [ -n "${SEMVER}" ]; then + docker push ${PUSHIMAGE}:${SEMVER} + fi done ''' } @@ -775,8 +766,10 @@ pipeline { docker rmi \ ${DELETEIMAGE}:${META_TAG} \ ${DELETEIMAGE}:${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:latest \ - ${DELETEIMAGE}:${SEMVER} || : + ${DELETEIMAGE}:latest || : + if [ -n "${SEMVER}" ]; then + docker rmi ${DELETEIMAGE}:${SEMVER} || : + fi done ''' } @@ -826,9 +819,11 @@ pipeline { docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} - docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER} - docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} + if [ -n "${SEMVER}" ]; then + docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} + docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER} + docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} + fi docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} @@ -838,9 +833,11 @@ pipeline { docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} - docker push ${MANIFESTIMAGE}:amd64-${SEMVER} - docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER} - docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} + if [ -n "${SEMVER}" ]; then + docker push ${MANIFESTIMAGE}:amd64-${SEMVER} + docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER} + docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} + fi docker manifest push --purge ${MANIFESTIMAGE}:latest || : docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm @@ -853,14 +850,18 @@ pipeline { docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 - docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : - docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} - docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm - docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 + if [ -n "${SEMVER}" ]; then + docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : + docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} + docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm + docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 + fi docker manifest push --purge ${MANIFESTIMAGE}:latest docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} - docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} + if [ -n "${SEMVER}" ]; then + docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} + fi done ''' } @@ -870,15 +871,18 @@ pipeline { ${DELETEIMAGE}:amd64-${META_TAG} \ ${DELETEIMAGE}:amd64-latest \ ${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:amd64-${SEMVER} \ ${DELETEIMAGE}:arm32v7-${META_TAG} \ ${DELETEIMAGE}:arm32v7-latest \ ${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:arm32v7-${SEMVER} \ ${DELETEIMAGE}:arm64v8-${META_TAG} \ ${DELETEIMAGE}:arm64v8-latest \ - ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:arm64v8-${SEMVER} || : + ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || : + if [ -n "${SEMVER}" ]; then + docker rmi \ + ${DELETEIMAGE}:amd64-${SEMVER} \ + ${DELETEIMAGE}:arm32v7-${SEMVER} \ + ${DELETEIMAGE}:arm64v8-${SEMVER} || : + fi done docker rmi \ ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \ @@ -907,11 +911,11 @@ pipeline { "tagger": {"name": "LinuxServer Jenkins","email": "jenkins@linuxserver.io","date": "'${GITHUB_DATE}'"}}' ''' echo "Pushing New release for Tag" sh '''#! /bin/bash - curl -H "Authorization: token ${GITHUB_TOKEN}" -s https://api.github.com/repos/${EXT_USER}/${EXT_REPO}/releases/latest | jq '. |.body' | sed 's:^.\\(.*\\).$:\\1:' > releasebody.json + echo "Data change at JSON endpoint ${JSON_URL}" > releasebody.json echo '{"tag_name":"'${META_TAG}'",\ "target_commitish": "master",\ "name": "'${META_TAG}'",\ - "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**'${EXT_REPO}' Changes:**\\n\\n' > start + "body": "**LinuxServer Changes:**\\n\\n'${LS_RELEASE_NOTES}'\\n\\n**Remote Changes:**\\n\\n' > start printf '","draft": false,"prerelease": false}' >> releasebody.json paste -d'\\0' start releasebody.json > releasebody.json.done curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done''' diff --git a/README.md b/README.md index 4a47364..966768a 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ Find us at: # [linuxserver/minetest](https://github.com/linuxserver/docker-minetest) +[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fminetest?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fminetest) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-minetest.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-minetest) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-minetest.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-minetest/releases) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-minetest/packages) @@ -84,7 +85,7 @@ services: - TZ=Europe/London - CLI_ARGS="--gameid minetest" #optional volumes: - - :/config/.minetest + - /path/to/data:/config/.minetest ports: - 30000:30000/udp restart: unless-stopped @@ -100,7 +101,7 @@ docker run -d \ -e TZ=Europe/London \ -e CLI_ARGS="--gameid minetest" `#optional` \ -p 30000:30000/udp \ - -v :/config/.minetest \ + -v /path/to/data:/config/.minetest \ --restart unless-stopped \ lscr.io/linuxserver/minetest ``` @@ -227,6 +228,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **19.01.21:** - Rebasing to alpine 3.15. * **02.06.20:** - Rebasing to alpine 3.12. * **19.12.19:** - Rebasing to alpine 3.11. * **12.07.19:** - Bugfix to support multiple CLI variables. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 22d3a41..2b065ce 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -2,14 +2,13 @@ # jenkins variables project_name: docker-minetest -external_type: github_stable +external_type: custom_json release_type: stable release_tag: latest ls_branch: master repo_vars: - - EXT_GIT_BRANCH = 'master' - - EXT_USER = 'minetest' - - EXT_REPO = 'minetest' + - JSON_URL = 'https://api.github.com/repos/minetest/minetest/releases' + - JSON_PATH = 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name' - BUILD_VERSION_ARG = 'MINETEST_RELEASE' - LS_USER = 'linuxserver' - LS_REPO = 'docker-minetest' diff --git a/readme-vars.yml b/readme-vars.yml index 0ab6a53..fa04860 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -26,7 +26,7 @@ param_env_vars: - { env_var: "TZ", env_value: "Europe/London", desc: "Specify a timezone to use EG Europe/London." } param_usage_include_vols: true param_volumes: - - { vol_path: "/config/.minetest", vol_host_path: "", desc: "Where minetest stores config files and maps etc." } + - { vol_path: "/config/.minetest", vol_host_path: "/path/to/data", desc: "Where minetest stores config files and maps etc." } param_usage_include_ports: true param_ports: - { external_port: "30000", internal_port: "30000/udp", port_desc: "Port Minetest listens on." } @@ -49,6 +49,7 @@ app_setup_block: | https://hub.docker.com/r/linuxserver/{{ project_name }}/tags # changelog changelogs: + - { date: "19.01.21:", desc: "Rebasing to alpine 3.15." } - { date: "02.06.20:", desc: "Rebasing to alpine 3.12." } - { date: "19.12.19:", desc: "Rebasing to alpine 3.11." } - { date: "12.07.19:", desc: "Bugfix to support multiple CLI variables." } From 599bfba93d9ceff69eba1fda9d2c8dcb14d992ee Mon Sep 17 00:00:00 2001 From: aptalca Date: Wed, 19 Jan 2022 14:31:09 -0500 Subject: [PATCH 2/2] update formatting --- Dockerfile | 215 +++++++++++++++---------------- Dockerfile.aarch64 | 215 +++++++++++++++---------------- Dockerfile.armhf | 215 +++++++++++++++---------------- root/etc/cont-init.d/30-config | 12 +- root/etc/services.d/minetest/run | 4 +- 5 files changed, 326 insertions(+), 335 deletions(-) diff --git a/Dockerfile b/Dockerfile index cf7e7d5..996bd65 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,120 +9,117 @@ LABEL maintainer="aptalca" # environment variables ENV HOME="/config" \ -MINETEST_SUBGAME_PATH="/config/.minetest/games" + MINETEST_SUBGAME_PATH="/config/.minetest/games" # build variables ARG LDFLAGS="-lintl" RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - bzip2-dev \ - cmake \ - curl-dev \ - doxygen \ - g++ \ - gcc \ - gettext-dev \ - git \ - gmp-dev \ - hiredis-dev \ - icu-dev \ - irrlicht-dev \ - jq \ - leveldb-dev \ - libjpeg-turbo-dev \ - libogg-dev \ - libpng-dev \ - libressl-dev \ - libtool \ - libvorbis-dev \ - luajit-dev \ - make \ - mesa-dev \ - ncurses-dev \ - openal-soft-dev \ - python3-dev \ - sqlite-dev && \ - echo "**** install runtime packages ****" && \ - apk add --no-cache \ - curl \ - gmp \ - hiredis \ - libgcc \ - libintl \ - libstdc++ \ - luajit \ - lua-socket \ - sqlite \ - sqlite-libs && \ - apk add --no-cache \ - --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ - leveldb && \ - echo "**** compile spatialindex ****" && \ - git clone https://github.com/libspatialindex/libspatialindex /tmp/spatialindex && \ - cd /tmp/spatialindex && \ - cmake . \ - -DCMAKE_INSTALL_PREFIX=/usr && \ - make -j 2 && \ - make install && \ - echo "**** compile minetestserver ****" && \ - if [ -z ${MINETEST_RELEASE+x} ]; then \ - MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ - | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ - fi && \ - mkdir -p \ - /tmp/minetest && \ - curl -o \ - /tmp/minetest-src.tar.gz -L \ - "https://github.com/minetest/minetest/archive/${MINETEST_RELEASE}.tar.gz" && \ - tar xf \ - /tmp/minetest-src.tar.gz -C \ - /tmp/minetest --strip-components=1 && \ - cp /tmp/minetest/minetest.conf.example /defaults/minetest.conf && \ - cd /tmp/minetest && \ - cmake . \ - -DBUILD_CLIENT=0 \ - -DBUILD_SERVER=1 \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCUSTOM_BINDIR=/usr/bin \ - -DCUSTOM_DOCDIR="/usr/share/doc/minetest" \ - -DCUSTOM_SHAREDIR="/usr/share/minetest" \ - -DENABLE_CURL=1 \ - -DENABLE_FREETYPE=1 \ - -DENABLE_GETTEXT=0 \ - -DENABLE_LEVELDB=1 \ - -DENABLE_LUAJIT=1 \ - -DENABLE_REDIS=1 \ - -DENABLE_SOUND=0 \ - -DENABLE_SYSTEM_GMP=1 \ - -DRUN_IN_PLACE=0 && \ - make -j 2 && \ - make install && \ - echo "**** copy games to temporary folder ****" && \ - mkdir -p \ - /defaults/games && \ - cp -pr /usr/share/minetest/games/* /defaults/games/ && \ - echo "**** split after 3rd dot if it exists in minetest tag variable ****" && \ - echo "**** so we fetch game version x.x.x etc ****" && \ - if \ - [ $(echo "$MINETEST_RELEASE" | tr -cd '.' | wc -c) = 3 ] ; \ - then MINETEST_RELEASE=${MINETEST_RELEASE%.*}; \ - fi && \ - echo "**** fetch additional game ****" && \ - mkdir -p \ - /defaults/games/minetest && \ - curl -o \ - /tmp/minetest-game.tar.gz -L \ - "https://github.com/minetest/minetest_game/archive/${MINETEST_RELEASE}.tar.gz" && \ - tar xf \ - /tmp/minetest-game.tar.gz -C \ - /defaults/games/minetest --strip-components=1 && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* + echo "**** install build packages ****" && \ + apk add --no-cache --virtual=build-dependencies \ + bzip2-dev \ + cmake \ + curl-dev \ + doxygen \ + g++ \ + gcc \ + gettext-dev \ + git \ + gmp-dev \ + hiredis-dev \ + icu-dev \ + irrlicht-dev \ + jq \ + leveldb-dev \ + libjpeg-turbo-dev \ + libogg-dev \ + libpng-dev \ + libressl-dev \ + libtool \ + libvorbis-dev \ + luajit-dev \ + make \ + mesa-dev \ + ncurses-dev \ + openal-soft-dev \ + python3-dev \ + sqlite-dev && \ + echo "**** install runtime packages ****" && \ + apk add --no-cache \ + curl \ + gmp \ + hiredis \ + leveldb \ + libgcc \ + libintl \ + libstdc++ \ + luajit \ + lua-socket \ + sqlite \ + sqlite-libs && \ + echo "**** compile spatialindex ****" && \ + git clone https://github.com/libspatialindex/libspatialindex /tmp/spatialindex && \ + cd /tmp/spatialindex && \ + cmake . \ + -DCMAKE_INSTALL_PREFIX=/usr && \ + make -j 2 && \ + make install && \ + echo "**** compile minetestserver ****" && \ + if [ -z ${MINETEST_RELEASE+x} ]; then \ + MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ + | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ + fi && \ + mkdir -p \ + /tmp/minetest && \ + curl -o \ + /tmp/minetest-src.tar.gz -L \ + "https://github.com/minetest/minetest/archive/${MINETEST_RELEASE}.tar.gz" && \ + tar xf \ + /tmp/minetest-src.tar.gz -C \ + /tmp/minetest --strip-components=1 && \ + cp /tmp/minetest/minetest.conf.example /defaults/minetest.conf && \ + cd /tmp/minetest && \ + cmake . \ + -DBUILD_CLIENT=0 \ + -DBUILD_SERVER=1 \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCUSTOM_BINDIR=/usr/bin \ + -DCUSTOM_DOCDIR="/usr/share/doc/minetest" \ + -DCUSTOM_SHAREDIR="/usr/share/minetest" \ + -DENABLE_CURL=1 \ + -DENABLE_FREETYPE=1 \ + -DENABLE_GETTEXT=0 \ + -DENABLE_LEVELDB=1 \ + -DENABLE_LUAJIT=1 \ + -DENABLE_REDIS=1 \ + -DENABLE_SOUND=0 \ + -DENABLE_SYSTEM_GMP=1 \ + -DRUN_IN_PLACE=0 && \ + make -j 2 && \ + make install && \ + echo "**** copy games to temporary folder ****" && \ + mkdir -p \ + /defaults/games && \ + cp -pr /usr/share/minetest/games/* /defaults/games/ && \ + echo "**** split after 3rd dot if it exists in minetest tag variable ****" && \ + echo "**** so we fetch game version x.x.x etc ****" && \ + if [ $(echo "$MINETEST_RELEASE" | tr -cd '.' | wc -c) = 3 ]; then \ + MINETEST_RELEASE=${MINETEST_RELEASE%.*}; \ + fi && \ + echo "**** fetch additional game ****" && \ + mkdir -p \ + /defaults/games/minetest && \ + curl -o \ + /tmp/minetest-game.tar.gz -L \ + "https://github.com/minetest/minetest_game/archive/${MINETEST_RELEASE}.tar.gz" && \ + tar xf \ + /tmp/minetest-game.tar.gz -C \ + /defaults/games/minetest --strip-components=1 && \ + echo "**** cleanup ****" && \ + apk del --purge \ + build-dependencies && \ + rm -rf \ + /tmp/* # add local files COPY root / diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index c49e23a..2c9f82a 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -9,120 +9,117 @@ LABEL maintainer="aptalca" # environment variables ENV HOME="/config" \ -MINETEST_SUBGAME_PATH="/config/.minetest/games" + MINETEST_SUBGAME_PATH="/config/.minetest/games" # build variables ARG LDFLAGS="-lintl" RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - bzip2-dev \ - cmake \ - curl-dev \ - doxygen \ - g++ \ - gcc \ - gettext-dev \ - git \ - gmp-dev \ - hiredis-dev \ - icu-dev \ - irrlicht-dev \ - jq \ - leveldb-dev \ - libjpeg-turbo-dev \ - libogg-dev \ - libpng-dev \ - libressl-dev \ - libtool \ - libvorbis-dev \ - luajit-dev \ - make \ - mesa-dev \ - ncurses-dev \ - openal-soft-dev \ - python3-dev \ - sqlite-dev && \ - echo "**** install runtime packages ****" && \ - apk add --no-cache \ - curl \ - gmp \ - hiredis \ - libgcc \ - libintl \ - libstdc++ \ - luajit \ - lua-socket \ - sqlite \ - sqlite-libs && \ - apk add --no-cache \ - --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ - leveldb && \ - echo "**** compile spatialindex ****" && \ - git clone https://github.com/libspatialindex/libspatialindex /tmp/spatialindex && \ - cd /tmp/spatialindex && \ - cmake . \ - -DCMAKE_INSTALL_PREFIX=/usr && \ - make -j 2 && \ - make install && \ - echo "**** compile minetestserver ****" && \ - if [ -z ${MINETEST_RELEASE+x} ]; then \ - MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ - | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ - fi && \ - mkdir -p \ - /tmp/minetest && \ - curl -o \ - /tmp/minetest-src.tar.gz -L \ - "https://github.com/minetest/minetest/archive/${MINETEST_RELEASE}.tar.gz" && \ - tar xf \ - /tmp/minetest-src.tar.gz -C \ - /tmp/minetest --strip-components=1 && \ - cp /tmp/minetest/minetest.conf.example /defaults/minetest.conf && \ - cd /tmp/minetest && \ - cmake . \ - -DBUILD_CLIENT=0 \ - -DBUILD_SERVER=1 \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCUSTOM_BINDIR=/usr/bin \ - -DCUSTOM_DOCDIR="/usr/share/doc/minetest" \ - -DCUSTOM_SHAREDIR="/usr/share/minetest" \ - -DENABLE_CURL=1 \ - -DENABLE_FREETYPE=1 \ - -DENABLE_GETTEXT=0 \ - -DENABLE_LEVELDB=1 \ - -DENABLE_LUAJIT=1 \ - -DENABLE_REDIS=1 \ - -DENABLE_SOUND=0 \ - -DENABLE_SYSTEM_GMP=1 \ - -DRUN_IN_PLACE=0 && \ - make -j 2 && \ - make install && \ - echo "**** copy games to temporary folder ****" && \ - mkdir -p \ - /defaults/games && \ - cp -pr /usr/share/minetest/games/* /defaults/games/ && \ - echo "**** split after 3rd dot if it exists in minetest tag variable ****" && \ - echo "**** so we fetch game version x.x.x etc ****" && \ - if \ - [ $(echo "$MINETEST_RELEASE" | tr -cd '.' | wc -c) = 3 ] ; \ - then MINETEST_RELEASE=${MINETEST_RELEASE%.*}; \ - fi && \ - echo "**** fetch additional game ****" && \ - mkdir -p \ - /defaults/games/minetest && \ - curl -o \ - /tmp/minetest-game.tar.gz -L \ - "https://github.com/minetest/minetest_game/archive/${MINETEST_RELEASE}.tar.gz" && \ - tar xf \ - /tmp/minetest-game.tar.gz -C \ - /defaults/games/minetest --strip-components=1 && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* + echo "**** install build packages ****" && \ + apk add --no-cache --virtual=build-dependencies \ + bzip2-dev \ + cmake \ + curl-dev \ + doxygen \ + g++ \ + gcc \ + gettext-dev \ + git \ + gmp-dev \ + hiredis-dev \ + icu-dev \ + irrlicht-dev \ + jq \ + leveldb-dev \ + libjpeg-turbo-dev \ + libogg-dev \ + libpng-dev \ + libressl-dev \ + libtool \ + libvorbis-dev \ + luajit-dev \ + make \ + mesa-dev \ + ncurses-dev \ + openal-soft-dev \ + python3-dev \ + sqlite-dev && \ + echo "**** install runtime packages ****" && \ + apk add --no-cache \ + curl \ + gmp \ + hiredis \ + leveldb \ + libgcc \ + libintl \ + libstdc++ \ + luajit \ + lua-socket \ + sqlite \ + sqlite-libs && \ + echo "**** compile spatialindex ****" && \ + git clone https://github.com/libspatialindex/libspatialindex /tmp/spatialindex && \ + cd /tmp/spatialindex && \ + cmake . \ + -DCMAKE_INSTALL_PREFIX=/usr && \ + make -j 2 && \ + make install && \ + echo "**** compile minetestserver ****" && \ + if [ -z ${MINETEST_RELEASE+x} ]; then \ + MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ + | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ + fi && \ + mkdir -p \ + /tmp/minetest && \ + curl -o \ + /tmp/minetest-src.tar.gz -L \ + "https://github.com/minetest/minetest/archive/${MINETEST_RELEASE}.tar.gz" && \ + tar xf \ + /tmp/minetest-src.tar.gz -C \ + /tmp/minetest --strip-components=1 && \ + cp /tmp/minetest/minetest.conf.example /defaults/minetest.conf && \ + cd /tmp/minetest && \ + cmake . \ + -DBUILD_CLIENT=0 \ + -DBUILD_SERVER=1 \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCUSTOM_BINDIR=/usr/bin \ + -DCUSTOM_DOCDIR="/usr/share/doc/minetest" \ + -DCUSTOM_SHAREDIR="/usr/share/minetest" \ + -DENABLE_CURL=1 \ + -DENABLE_FREETYPE=1 \ + -DENABLE_GETTEXT=0 \ + -DENABLE_LEVELDB=1 \ + -DENABLE_LUAJIT=1 \ + -DENABLE_REDIS=1 \ + -DENABLE_SOUND=0 \ + -DENABLE_SYSTEM_GMP=1 \ + -DRUN_IN_PLACE=0 && \ + make -j 2 && \ + make install && \ + echo "**** copy games to temporary folder ****" && \ + mkdir -p \ + /defaults/games && \ + cp -pr /usr/share/minetest/games/* /defaults/games/ && \ + echo "**** split after 3rd dot if it exists in minetest tag variable ****" && \ + echo "**** so we fetch game version x.x.x etc ****" && \ + if [ $(echo "$MINETEST_RELEASE" | tr -cd '.' | wc -c) = 3 ]; then \ + MINETEST_RELEASE=${MINETEST_RELEASE%.*}; \ + fi && \ + echo "**** fetch additional game ****" && \ + mkdir -p \ + /defaults/games/minetest && \ + curl -o \ + /tmp/minetest-game.tar.gz -L \ + "https://github.com/minetest/minetest_game/archive/${MINETEST_RELEASE}.tar.gz" && \ + tar xf \ + /tmp/minetest-game.tar.gz -C \ + /defaults/games/minetest --strip-components=1 && \ + echo "**** cleanup ****" && \ + apk del --purge \ + build-dependencies && \ + rm -rf \ + /tmp/* # add local files COPY root / diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 10a9398..76f1459 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -9,120 +9,117 @@ LABEL maintainer="aptalca" # environment variables ENV HOME="/config" \ -MINETEST_SUBGAME_PATH="/config/.minetest/games" + MINETEST_SUBGAME_PATH="/config/.minetest/games" # build variables ARG LDFLAGS="-lintl" RUN \ - echo "**** install build packages ****" && \ - apk add --no-cache --virtual=build-dependencies \ - bzip2-dev \ - cmake \ - curl-dev \ - doxygen \ - g++ \ - gcc \ - gettext-dev \ - git \ - gmp-dev \ - hiredis-dev \ - icu-dev \ - irrlicht-dev \ - jq \ - leveldb-dev \ - libjpeg-turbo-dev \ - libogg-dev \ - libpng-dev \ - libressl-dev \ - libtool \ - libvorbis-dev \ - luajit-dev \ - make \ - mesa-dev \ - ncurses-dev \ - openal-soft-dev \ - python3-dev \ - sqlite-dev && \ - echo "**** install runtime packages ****" && \ - apk add --no-cache \ - curl \ - gmp \ - hiredis \ - libgcc \ - libintl \ - libstdc++ \ - luajit \ - lua-socket \ - sqlite \ - sqlite-libs && \ - apk add --no-cache \ - --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ - leveldb && \ - echo "**** compile spatialindex ****" && \ - git clone https://github.com/libspatialindex/libspatialindex /tmp/spatialindex && \ - cd /tmp/spatialindex && \ - cmake . \ - -DCMAKE_INSTALL_PREFIX=/usr && \ - make -j 2 && \ - make install && \ - echo "**** compile minetestserver ****" && \ - if [ -z ${MINETEST_RELEASE+x} ]; then \ - MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ - | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ - fi && \ - mkdir -p \ - /tmp/minetest && \ - curl -o \ - /tmp/minetest-src.tar.gz -L \ - "https://github.com/minetest/minetest/archive/${MINETEST_RELEASE}.tar.gz" && \ - tar xf \ - /tmp/minetest-src.tar.gz -C \ - /tmp/minetest --strip-components=1 && \ - cp /tmp/minetest/minetest.conf.example /defaults/minetest.conf && \ - cd /tmp/minetest && \ - cmake . \ - -DBUILD_CLIENT=0 \ - -DBUILD_SERVER=1 \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCUSTOM_BINDIR=/usr/bin \ - -DCUSTOM_DOCDIR="/usr/share/doc/minetest" \ - -DCUSTOM_SHAREDIR="/usr/share/minetest" \ - -DENABLE_CURL=1 \ - -DENABLE_FREETYPE=1 \ - -DENABLE_GETTEXT=0 \ - -DENABLE_LEVELDB=1 \ - -DENABLE_LUAJIT=1 \ - -DENABLE_REDIS=1 \ - -DENABLE_SOUND=0 \ - -DENABLE_SYSTEM_GMP=1 \ - -DRUN_IN_PLACE=0 && \ - make -j 2 && \ - make install && \ - echo "**** copy games to temporary folder ****" && \ - mkdir -p \ - /defaults/games && \ - cp -pr /usr/share/minetest/games/* /defaults/games/ && \ - echo "**** split after 3rd dot if it exists in minetest tag variable ****" && \ - echo "**** so we fetch game version x.x.x etc ****" && \ - if \ - [ $(echo "$MINETEST_RELEASE" | tr -cd '.' | wc -c) = 3 ] ; \ - then MINETEST_RELEASE=${MINETEST_RELEASE%.*}; \ - fi && \ - echo "**** fetch additional game ****" && \ - mkdir -p \ - /defaults/games/minetest && \ - curl -o \ - /tmp/minetest-game.tar.gz -L \ - "https://github.com/minetest/minetest_game/archive/${MINETEST_RELEASE}.tar.gz" && \ - tar xf \ - /tmp/minetest-game.tar.gz -C \ - /defaults/games/minetest --strip-components=1 && \ - echo "**** cleanup ****" && \ - apk del --purge \ - build-dependencies && \ - rm -rf \ - /tmp/* + echo "**** install build packages ****" && \ + apk add --no-cache --virtual=build-dependencies \ + bzip2-dev \ + cmake \ + curl-dev \ + doxygen \ + g++ \ + gcc \ + gettext-dev \ + git \ + gmp-dev \ + hiredis-dev \ + icu-dev \ + irrlicht-dev \ + jq \ + leveldb-dev \ + libjpeg-turbo-dev \ + libogg-dev \ + libpng-dev \ + libressl-dev \ + libtool \ + libvorbis-dev \ + luajit-dev \ + make \ + mesa-dev \ + ncurses-dev \ + openal-soft-dev \ + python3-dev \ + sqlite-dev && \ + echo "**** install runtime packages ****" && \ + apk add --no-cache \ + curl \ + gmp \ + hiredis \ + leveldb \ + libgcc \ + libintl \ + libstdc++ \ + luajit \ + lua-socket \ + sqlite \ + sqlite-libs && \ + echo "**** compile spatialindex ****" && \ + git clone https://github.com/libspatialindex/libspatialindex /tmp/spatialindex && \ + cd /tmp/spatialindex && \ + cmake . \ + -DCMAKE_INSTALL_PREFIX=/usr && \ + make -j 2 && \ + make install && \ + echo "**** compile minetestserver ****" && \ + if [ -z ${MINETEST_RELEASE+x} ]; then \ + MINETEST_RELEASE=$(curl -sX GET "https://api.github.com/repos/minetest/minetest/releases" \ + | jq -r 'first(.[] | select(.tag_name | contains("android") | not)) | .tag_name'); \ + fi && \ + mkdir -p \ + /tmp/minetest && \ + curl -o \ + /tmp/minetest-src.tar.gz -L \ + "https://github.com/minetest/minetest/archive/${MINETEST_RELEASE}.tar.gz" && \ + tar xf \ + /tmp/minetest-src.tar.gz -C \ + /tmp/minetest --strip-components=1 && \ + cp /tmp/minetest/minetest.conf.example /defaults/minetest.conf && \ + cd /tmp/minetest && \ + cmake . \ + -DBUILD_CLIENT=0 \ + -DBUILD_SERVER=1 \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCUSTOM_BINDIR=/usr/bin \ + -DCUSTOM_DOCDIR="/usr/share/doc/minetest" \ + -DCUSTOM_SHAREDIR="/usr/share/minetest" \ + -DENABLE_CURL=1 \ + -DENABLE_FREETYPE=1 \ + -DENABLE_GETTEXT=0 \ + -DENABLE_LEVELDB=1 \ + -DENABLE_LUAJIT=1 \ + -DENABLE_REDIS=1 \ + -DENABLE_SOUND=0 \ + -DENABLE_SYSTEM_GMP=1 \ + -DRUN_IN_PLACE=0 && \ + make -j 2 && \ + make install && \ + echo "**** copy games to temporary folder ****" && \ + mkdir -p \ + /defaults/games && \ + cp -pr /usr/share/minetest/games/* /defaults/games/ && \ + echo "**** split after 3rd dot if it exists in minetest tag variable ****" && \ + echo "**** so we fetch game version x.x.x etc ****" && \ + if [ $(echo "$MINETEST_RELEASE" | tr -cd '.' | wc -c) = 3 ]; then \ + MINETEST_RELEASE=${MINETEST_RELEASE%.*}; \ + fi && \ + echo "**** fetch additional game ****" && \ + mkdir -p \ + /defaults/games/minetest && \ + curl -o \ + /tmp/minetest-game.tar.gz -L \ + "https://github.com/minetest/minetest_game/archive/${MINETEST_RELEASE}.tar.gz" && \ + tar xf \ + /tmp/minetest-game.tar.gz -C \ + /defaults/games/minetest --strip-components=1 && \ + echo "**** cleanup ****" && \ + apk del --purge \ + build-dependencies && \ + rm -rf \ + /tmp/* # add local files COPY root / diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config index bef8dab..85c49d3 100644 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/cont-init.d/30-config @@ -2,18 +2,18 @@ # make our folders mkdir -p \ - /config/.minetest/games \ - /config/.minetest/mods \ - /config/.minetest/main-config + /config/.minetest/games \ + /config/.minetest/mods \ + /config/.minetest/main-config if [ ! -f "/config/.minetest/main-config/minetest.conf" ]; then -cp /defaults/minetest.conf /config/.minetest/main-config/minetest.conf + cp /defaults/minetest.conf /config/.minetest/main-config/minetest.conf fi if [ ! -d "/config/.minetest/games/minimal" ]; then -cp -pr /defaults/games/* /config/.minetest/games/ + cp -pr /defaults/games/* /config/.minetest/games/ fi # permissions chown -R abc:abc \ - /config + /config diff --git a/root/etc/services.d/minetest/run b/root/etc/services.d/minetest/run index 5865d2a..b842bc6 100644 --- a/root/etc/services.d/minetest/run +++ b/root/etc/services.d/minetest/run @@ -1,5 +1,5 @@ #!/usr/bin/with-contenv bash exec \ - s6-setuidgid abc minetestserver ${CLI_ARGS} \ - --config /config/.minetest/main-config/minetest.conf --port 30000 + s6-setuidgid abc minetestserver ${CLI_ARGS} \ + --config /config/.minetest/main-config/minetest.conf --port 30000