Skip to content
This repository has been archived by the owner on Jan 30, 2025. It is now read-only.

Commit

Permalink
Remove bundled minetest_game
Browse files Browse the repository at this point in the history
  • Loading branch information
thespad committed Dec 7, 2023
1 parent 26812c5 commit 95b46ae
Show file tree
Hide file tree
Showing 5 changed files with 152 additions and 104 deletions.
14 changes: 0 additions & 14 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -119,20 +119,6 @@ RUN \
mkdir -p \
/defaults/games && \
cp -pr /tmp/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 && \
Expand Down
14 changes: 0 additions & 14 deletions Dockerfile.aarch64
Original file line number Diff line number Diff line change
Expand Up @@ -119,20 +119,6 @@ RUN \
mkdir -p \
/defaults/games && \
cp -pr /tmp/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 && \
Expand Down
77 changes: 41 additions & 36 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ pipeline {
GITHUB_TOKEN=credentials('498b4638-2d02-4ce5-832d-8a57d01d97ab')
GITLAB_TOKEN=credentials('b6f0f1dd-6952-4cf6-95d1-9c06380283f0')
GITLAB_NAMESPACE=credentials('gitlab-namespace-id')
SCARF_TOKEN=credentials('scarf_api_key')
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'
Expand Down Expand Up @@ -331,12 +330,12 @@ pipeline {
else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
fi
mkdir -p ${TEMPDIR}/gitbook
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/gitbook/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/gitbook/docker-documentation/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/gitbook/docker-documentation/images/
cd ${TEMPDIR}/gitbook/docker-documentation/
git add images/docker-${CONTAINER_NAME}.md
mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ ("${BRANCH_NAME}" == "master") || ("${BRANCH_NAME}" == "main") ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation
git add docs/images/docker-${CONTAINER_NAME}.md
git commit -m 'Bot Updating Documentation'
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git --all
fi
Expand Down Expand Up @@ -427,35 +426,6 @@ pipeline {
"visibility":"public"}' '''
}
}
/* #######################
Scarf.sh package registry
####################### */
// Add package to Scarf.sh and set permissions
stage("Scarf.sh package registry"){
when {
branch "master"
environment name: 'EXIT_STATUS', value: ''
}
steps{
sh '''#! /bin/bash
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"
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",\
"shortDescription":"example description",\
"libraryType":"docker",\
"website":"https://github.com/linuxserver/docker-minetest",\
"backendUrl":"https://ghcr.io/linuxserver/minetest",\
"publicUrl":"https://lscr.io/linuxserver/minetest"}' || :
else
echo "Package already exists on Scarf.sh"
fi
'''
}
}
/* ###############
Build Container
############### */
Expand Down Expand Up @@ -851,6 +821,41 @@ pipeline {
curl -H "Authorization: token ${GITHUB_TOKEN}" -X POST https://api.github.com/repos/${LS_USER}/${LS_REPO}/releases -d @releasebody.json.done'''
}
}
// Add protection to the release branch
stage('Github-Release-Branch-Protection') {
when {
branch "master"
environment name: 'CHANGE_ID', value: ''
environment name: 'EXIT_STATUS', value: ''
}
steps {
echo "Setting up protection for release branch master"
sh '''#! /bin/bash
curl -H "Authorization: token ${GITHUB_TOKEN}" -X PUT https://api.github.com/repos/${LS_USER}/${LS_REPO}/branches/master/protection \
-d $(jq -c . << EOF
{
"required_status_checks": null,
"enforce_admins": false,
"required_pull_request_reviews": {
"dismiss_stale_reviews": false,
"require_code_owner_reviews": false,
"require_last_push_approval": false,
"required_approving_review_count": 1
},
"restrictions": null,
"required_linear_history": false,
"allow_force_pushes": false,
"allow_deletions": false,
"block_creations": false,
"required_conversation_resolution": true,
"lock_branch": false,
"allow_fork_syncing": false,
"required_signatures": false
}
EOF
) '''
}
}
// Use helper container to sync the current README on master to the dockerhub endpoint
stage('Sync-README') {
when {
Expand Down
144 changes: 106 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-minetest/blob/master/.github/CONTRIBUTING.md -->

<!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read https://github.com/linuxserver/docker-minetest/blob/master/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)

[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
Expand Down Expand Up @@ -46,7 +45,7 @@ Find us at:

## Supported Architectures

We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).

Simply pulling `lscr.io/linuxserver/minetest:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

Expand All @@ -65,14 +64,17 @@ You can find the world maps, mods folder and config files in /config/.minetest.
If you want to override the advertised port, ensure you add --port in your CLI_ARGS AND ensure the internal port reflects the change, ie;
if you set your advertised port to 40000 with --port 40000 then your ports declaration should be 40000:40000/udp


Client and server must be the same version, please browse the tags here to pull the appropriate version for your server:

https://hub.docker.com/r/linuxserver/minetest/tags

### Bundled Games

As per [upstream request](https://github.com/minetest/minetest/releases/tag/5.8.0) this image no longer includes [minetest_game](https://github.com/minetest/minetest_game), so if required you will need to either install via ContentDB or download it from their repo and copy to `/config/.minetest/games/minetest`

## Usage

Here are some example snippets to help you get started creating a container.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.

### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))

Expand Down Expand Up @@ -108,12 +110,11 @@ docker run -d \
-v /path/to/data:/config/.minetest \
--restart unless-stopped \
lscr.io/linuxserver/minetest:latest

```

## Parameters

Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.

| Parameter | Function |
| :----: | --- |
Expand All @@ -131,10 +132,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example:

```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword
-e FILE__MYVAR=/run/secrets/mysecretvariable
```

Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file.
Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.

## Umask for running applications

Expand All @@ -143,15 +144,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu

## User / Group Identifiers

When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below:
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:

```bash
$ id username
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)
id your_user
```

Example output:

```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
```

## Docker Mods
Expand All @@ -162,12 +168,29 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to

## Support Info

* Shell access whilst the container is running: `docker exec -it minetest /bin/bash`
* To monitor the logs of the container in realtime: `docker logs -f minetest`
* container version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' minetest`
* image version number
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/minetest:latest`
* Shell access whilst the container is running:

```bash
docker exec -it minetest /bin/bash
```

* To monitor the logs of the container in realtime:

```bash
docker logs -f minetest
```

* Container version number:

```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' minetest
```

* Image version number:

```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/minetest:latest
```

## Updating Info

Expand All @@ -177,38 +200,83 @@ Below are the instructions for updating containers:

### Via Docker Compose

* Update all images: `docker-compose pull`
* or update a single image: `docker-compose pull minetest`
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d minetest`
* You can also remove the old dangling images: `docker image prune`
* Update images:
* All images:

```bash
docker-compose pull
```

* Single image:

```bash
docker-compose pull minetest
```

* Update containers:
* All containers:

```bash
docker-compose up -d
```

* Single container:

```bash
docker-compose up -d minetest
```

* You can also remove the old dangling images:

```bash
docker image prune
```

### Via Docker Run

* Update the image: `docker pull lscr.io/linuxserver/minetest:latest`
* Stop the running container: `docker stop minetest`
* Delete the container: `docker rm minetest`
* Update the image:

```bash
docker pull lscr.io/linuxserver/minetest:latest
```

* Stop the running container:

```bash
docker stop minetest
```

* Delete the container:

```bash
docker rm minetest
```

* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune`
* You can also remove the old dangling images:

```bash
docker image prune
```

### Via Watchtower auto-updater (only use if you don't remember the original parameters)

* Pull the latest image at its tag and replace it with the same env variables in one run:

```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once minetest
```
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once minetest
```

* You can also remove the old dangling images: `docker image prune`

**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
**warning**: We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).

### Image Update Notifications - Diun (Docker Image Update Notifier)

* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
**tip**: We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

## Building locally

Expand All @@ -233,7 +301,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64

## Versions

* **12.07.23:** - Rebase to Alpine 3.18.
* **12.07.23:** - Rebase to Alpine 3.18, remove minetest_game.
* **06.07.23:** - Deprecate armhf. As announced [here](https://www.linuxserver.io/blog/a-farewell-to-arm-hf)
* **09.04.23:** - Build logic changes to copy devtest to default games.
* **17.03.23:** - Fix CLI_ARGS example in readme.
Expand Down
Loading

0 comments on commit 95b46ae

Please sign in to comment.