Compare commits

...

24 Commits

Author SHA1 Message Date
4e261043cd CI: simplify logic 2020-05-18 02:43:06 +02:00
4c47dbc4ee CI: Also disable docker push for branches 2020-05-18 02:42:55 +02:00
07264e626f Update all base images to alpine 3.11 2020-05-18 02:42:35 +02:00
64a1f8d9bf Replace symlinks with config option write-data
Closes #311
2020-05-18 02:36:26 +02:00
15a2d493f8 apply shellcheck suggestions 2020-05-18 02:34:53 +02:00
3777041d3e CI: disable branch tagging to fix dependabot 2020-05-18 02:21:47 +02:00
ccd0707d21 update alpine-glibc image to 3.11 (#312) 2020-05-18 01:25:03 +02:00
a5b03e6625 Update to Factorio 0.18.24 2020-05-12 13:45:50 +00:00
03b4d9eb5e Update to Factorio 0.18.23 2020-05-12 12:10:51 +00:00
af48272100 Fix shellcheck warnings, change shebang to bash 2020-05-07 22:31:20 +02:00
cc63e10cd1 Vendor docker hub update script 2020-05-07 22:30:58 +02:00
f90cd27bcd Update to Factorio 0.18.22 2020-04-30 12:05:50 +00:00
1ab01d0277 Fix save file environment variables in README.md. (#309) 2020-04-26 11:12:11 +02:00
66c11b1a82 Update to Factorio 0.18.21 2020-04-24 09:33:13 +00:00
49055cfe1b Update to Factorio 0.18.20 2020-04-24 06:43:20 +00:00
ab818efda4 Update to Factorio 0.18.19 2020-04-20 11:53:15 +00:00
6da1250b5b Update to Factorio 0.18.18 2020-04-08 16:02:54 +00:00
deaaf83967 Do not stop updating process on incompatible version
Closes #308
2020-04-05 11:09:01 +02:00
9691472b84 Backport #307 to 0.17 2020-04-05 11:07:18 +02:00
236b27d94e Update to Factorio 0.18.17 2020-03-27 17:58:41 +00:00
457ab79b5b Update to Factorio 0.18.16 2020-03-25 16:00:10 +00:00
Kai
235a2abb60 Fixes #306 by skipping custom mods (#307) 2020-03-21 12:54:27 +01:00
c52f649b35 Update to Factorio 0.18.15 2020-03-20 15:25:07 +00:00
52167abffa Update to Factorio 0.18.14 2020-03-18 17:20:08 +00:00
11 changed files with 84 additions and 37 deletions

View File

@ -31,4 +31,4 @@ jobs:
- <<: *build
if: branch = master AND type != pull_request
env:
script: docker run -v $PWD:/workspace -e DOCKERHUB_USERNAME=$DOCKER_USERNAME -e DOCKERHUB_PASSWORD=$DOCKER_PASSWORD -e DOCKERHUB_REPOSITORY='factoriotools/factorio' -e README_FILEPATH='/workspace/README.md' peterevans/dockerhub-description:2.1.0
script: DOCKERHUB_USERNAME=$DOCKER_USERNAME DOCKERHUB_PASSWORD=$DOCKER_PASSWORD DOCKERHUB_REPOSITORY='factoriotools/factorio' README_FILEPATH='./README.md' ./update-dockerhub-description.sh

View File

@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:alpine-3.9
FROM frolvlad/alpine-glibc:alpine-3.11
LABEL maintainer="https://github.com/factoriotools/factorio-docker"

View File

@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:alpine-3.9
FROM frolvlad/alpine-glibc:alpine-3.11
LABEL maintainer="https://github.com/factoriotools/factorio-docker"

View File

@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:alpine-3.9
FROM frolvlad/alpine-glibc:alpine-3.11
LABEL maintainer="https://github.com/factoriotools/factorio-docker"

View File

@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:alpine-3.9
FROM frolvlad/alpine-glibc:alpine-3.11
LABEL maintainer="https://github.com/factoriotools/factorio-docker"
@ -19,6 +19,7 @@ ENV PORT=34197 \
PUID="$PUID" \
PGID="$PGID"
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
RUN set -ox pipefail \
&& archive="/tmp/factorio_headless_x64_$VERSION.tar.xz" \
&& mkdir -p /opt /factorio \
@ -29,10 +30,12 @@ RUN set -ox pipefail \
&& tar xf "$archive" --directory /opt \
&& chmod ugo=rwx /opt/factorio \
&& rm "$archive" \
&& ln -s "$SAVES" /opt/factorio/saves \
&& ln -s "$MODS" /opt/factorio/mods \
&& ln -s "$SCENARIOS" /opt/factorio/scenarios \
&& ln -s "$SCRIPTOUTPUT" /opt/factorio/script-output \
&& mkdir -p /opt/factorio/config/ \
&& printf "\
[path]\n\
read-data=__PATH__executable__/../../data\n\
write-data=/factorio\n\
" >> /opt/factorio/config/config.ini \
&& addgroup -g "$PGID" -S "$GROUP" \
&& adduser -u "$PUID" -G "$GROUP" -s /bin/sh -SDH "$USER" \
&& chown -R "$USER":"$GROUP" /opt/factorio /factorio

View File

@ -32,19 +32,20 @@ update_mod()
MOD_INFO_URL="$MOD_BASE_URL/api/mods/$MOD_NAME"
MOD_INFO_JSON=$(curl --silent "$MOD_INFO_URL")
if ! echo "$MOD_INFO_JSON" | jq -e .name >/dev/null; then
print_success " Custom mod not on $MOD_BASE_URL, skipped."
return 0
fi
MOD_INFO=$(echo "$MOD_INFO_JSON" | jq -j --arg version "$FACTORIO_VERSION" ".releases|reverse|map(select(.info_json.factorio_version as \$mod_version | \$version | startswith(\$mod_version)))[0]|.file_name, \";\", .download_url, \";\", .sha1")
MOD_FILENAME=$(echo "$MOD_INFO" | cut -f1 -d";")
MOD_URL=$(echo "$MOD_INFO" | cut -f2 -d";")
MOD_SHA1=$(echo "$MOD_INFO" | cut -f3 -d";")
if [[ -z $MOD_URL ]]; then
return 1
fi
if [[ $MOD_FILENAME == null ]]; then
print_failure " Not compatible with version"
return 1
return 0
fi
if [[ -f $MOD_DIR/$MOD_FILENAME ]]; then

View File

@ -1,4 +1,4 @@
FROM frolvlad/alpine-glibc:alpine-3.9
FROM frolvlad/alpine-glibc:alpine-3.11
LABEL maintainer="https://github.com/factoriotools/factorio-docker"
@ -9,8 +9,8 @@ ARG PGID=845
ENV PORT=34197 \
RCON_PORT=27015 \
VERSION=0.18.13 \
SHA1=1a150af3ca749c2707287ff0c733c00eb999f702 \
VERSION=0.18.24 \
SHA1=04f9aa9b93eaf220d55447201cb10f96e325e073 \
SAVES=/factorio/saves \
CONFIG=/factorio/config \
MODS=/factorio/mods \
@ -19,6 +19,7 @@ ENV PORT=34197 \
PUID="$PUID" \
PGID="$PGID"
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
RUN set -ox pipefail \
&& archive="/tmp/factorio_headless_x64_$VERSION.tar.xz" \
&& mkdir -p /opt /factorio \
@ -29,10 +30,12 @@ RUN set -ox pipefail \
&& tar xf "$archive" --directory /opt \
&& chmod ugo=rwx /opt/factorio \
&& rm "$archive" \
&& ln -s "$SAVES" /opt/factorio/saves \
&& ln -s "$MODS" /opt/factorio/mods \
&& ln -s "$SCENARIOS" /opt/factorio/scenarios \
&& ln -s "$SCRIPTOUTPUT" /opt/factorio/script-output \
&& mkdir -p /opt/factorio/config/ \
&& printf "\
[path]\n\
read-data=__PATH__executable__/../../data\n\
write-data=/factorio\n\
" >> /opt/factorio/config/config.ini \
&& addgroup -g "$PGID" -S "$GROUP" \
&& adduser -u "$PUID" -G "$GROUP" -s /bin/sh -SDH "$USER" \
&& chown -R "$USER":"$GROUP" /opt/factorio /factorio

View File

@ -32,19 +32,20 @@ update_mod()
MOD_INFO_URL="$MOD_BASE_URL/api/mods/$MOD_NAME"
MOD_INFO_JSON=$(curl --silent "$MOD_INFO_URL")
if ! echo "$MOD_INFO_JSON" | jq -e .name >/dev/null; then
print_success " Custom mod not on $MOD_BASE_URL, skipped."
return 0
fi
MOD_INFO=$(echo "$MOD_INFO_JSON" | jq -j --arg version "$FACTORIO_VERSION" ".releases|reverse|map(select(.info_json.factorio_version as \$mod_version | \$version | startswith(\$mod_version)))[0]|.file_name, \";\", .download_url, \";\", .sha1")
MOD_FILENAME=$(echo "$MOD_INFO" | cut -f1 -d";")
MOD_URL=$(echo "$MOD_INFO" | cut -f2 -d";")
MOD_SHA1=$(echo "$MOD_INFO" | cut -f3 -d";")
if [[ -z $MOD_URL ]]; then
return 1
fi
if [[ $MOD_FILENAME == null ]]; then
print_failure " Not compatible with version"
return 1
return 0
fi
if [[ -f $MOD_DIR/$MOD_FILENAME ]]; then

View File

@ -1,6 +1,6 @@
# Factorio [![Build Status](https://travis-ci.org/factoriotools/factorio-docker.svg?branch=master)](https://travis-ci.org/factoriotools/factorio-docker) ![Updater status](https://img.shields.io/endpoint?label=Updater%20status&logo=a&url=https%3A%2F%2Fhealthchecks.supersandro.de%2Fbadge%2F1a0a7698-445d-4e54-9e4b-f61a1544e01f%2FBO8VukOA%2Fmaintainer.shields) [![Docker Version](https://images.microbadger.com/badges/version/factoriotools/factorio.svg)](https://hub.docker.com/r/factoriotools/factorio/) [![Docker Pulls](https://img.shields.io/docker/pulls/factoriotools/factorio.svg?maxAge=600)](https://hub.docker.com/r/factoriotools/factorio/) [![Docker Stars](https://img.shields.io/docker/stars/factoriotools/factorio.svg?maxAge=600)](https://hub.docker.com/r/factoriotools/factorio/) [![Microbadger Layers](https://images.microbadger.com/badges/image/factoriotools/factorio.svg)](https://microbadger.com/images/factoriotools/factorio "Get your own image badge on microbadger.com")
* `0.18.13`, `0.18`, `latest` [(0.18/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.18/Dockerfile)
* `0.18.24`, `0.18`, `latest` [(0.18/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.18/Dockerfile)
* `0.17.79`, `0.17`, `stable` [(0.17/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.17/Dockerfile)
* `0.16.51`, `0.16` [(0.16/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.16/Dockerfile)
* `0.15.40`, `0.15` [(0.15/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.15/Dockerfile)
@ -118,22 +118,22 @@ sudo docker run -d \
-p 34197:34197/udp \
-p 27015:27015/tcp \
-v /opt/factorio:/factorio \
-e ENABLE_SERVER_LOAD_LATEST=false \
-e LOAD_LATEST_SAVE=false \
-e SAVE_NAME=replaceme \
--name factorio \
--restart=always \
factoriotools/factorio
```
To generate a new map set `ENABLE_GENERATE_NEW_MAP_SAVE=true` and specify `SAVE_NAME`:
To generate a new map set `GENERATE_NEW_SAVE=true` and specify `SAVE_NAME`:
```shell
sudo docker run -d \
-p 34197:34197/udp \
-p 27015:27015/tcp \
-v /opt/factorio:/factorio \
-e ENABLE_SERVER_LOAD_LATEST=false \
-e ENABLE_GENERATE_NEW_MAP_SAVE=true \
-e LOAD_LATEST_SAVE=false \
-e GENERATE_NEW_SAVE=true \
-e SAVE_NAME=replaceme \
--name factorio \
--restart=always \

View File

@ -27,8 +27,10 @@ else
elif [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]]; then
TAGS="-t $DOCKER_REPO:$TRAVIS_BRANCH -t $DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
# we build a other branch than master
elif [[ -n $TRAVIS_BRANCH ]]; then
TAGS="-t $DOCKER_REPO:$TRAVIS_BRANCH"
# disabled for now cause it breaks Travis CI builds of dependabot
# https://travis-ci.org/github/factoriotools/factorio-docker/jobs/688176474#L182
# elif [[ -n $TRAVIS_BRANCH ]]; then
# TAGS="-t $DOCKER_REPO:$TRAVIS_BRANCH"
fi
else
# we are not in CI and tag version and version short
@ -68,13 +70,15 @@ if [[ $(dirname "$(git diff --name-only HEAD^)") =~ $VERSION_SHORT ]] && [[ ${TR
fi
# push a tag on a branch other than master
if [[ -n ${TRAVIS_BRANCH:-} ]] && [[ $VERSION != "${TRAVIS_BRANCH_VERSION:-}" ]] && [[ ${TRAVIS_BRANCH:-} != "master" ]]; then
docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
fi
# disabled for now cause it breaks Travis CI builds of dependabot
# https://travis-ci.org/github/factoriotools/factorio-docker/jobs/688176474#L182
# if [[ -n ${TRAVIS_BRANCH:-} ]] && [[ $VERSION != "${TRAVIS_BRANCH_VERSION:-}" ]] && [[ ${TRAVIS_BRANCH:-} != "master" ]]; then
# docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
# fi
# push an incremental tag
if [[ $VERSION == "${TRAVIS_BRANCH_VERSION:-}" ]]; then
docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
docker push "$DOCKER_REPO:$VERSION"
fi
if [[ -n ${TRAVIS_TAG:-} ]] || [[ -z ${CI:-} ]]; then

35
update-dockerhub-description.sh Executable file
View File

@ -0,0 +1,35 @@
#!/bin/bash
# This script is licensed under MIT and was originally written by Peter Evans. You can find a copy of the MIT license next to this file.
# The original file is available on his Github repo under the following link:
# https://github.com/peter-evans/dockerhub-description/blob/84d38211e27bb9b9effefa718f8c734db8adc5e1/entrypoint.sh
set -euo pipefail
IFS=$'\n\t'
# Set the default path to README.md
README_FILEPATH=${README_FILEPATH:="./README.md"}
# Check the file size
if [[ $(wc -c <${README_FILEPATH}) -gt 25000 ]]; then
echo "File size exceeds the maximum allowed 25000 bytes"
exit 1
fi
# Acquire a token for the Docker Hub API
echo "Acquiring token"
# shellcheck disable=2089
LOGIN_PAYLOAD="{\"username\": \"${DOCKERHUB_USERNAME}\", \"password\": \"${DOCKERHUB_PASSWORD}\"}"
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d "${LOGIN_PAYLOAD}" https://hub.docker.com/v2/users/login/ | jq -r .token)
# Send a PATCH request to update the description of the repository
echo "Sending PATCH request"
REPO_URL="https://hub.docker.com/v2/repositories/${DOCKERHUB_REPOSITORY}/"
RESPONSE_CODE=$(curl -s --write-out "%{response_code}" --output /dev/null -H "Authorization: JWT ${TOKEN}" -X PATCH --data-urlencode full_description@${README_FILEPATH} "${REPO_URL}")
echo "Received response code: $RESPONSE_CODE"
if [[ $RESPONSE_CODE -eq 200 ]]; then
exit 0
else
exit 1
fi