Compare commits

...

32 Commits

Author SHA1 Message Date
4255475b18 Update to Factorio 0.17.68 2019-09-04 17:49:55 +00:00
4ff8179912 Update to Factorio 0.17.67 2019-09-03 12:49:54 +00:00
db14988396 update to 0.17.66 2019-08-16 13:40:26 +00:00
cd29f2003b Load admin list in scenario (#288) 2019-08-16 13:58:59 +02:00
cd2d89a7bc update to 0.17.65 2019-08-14 11:35:26 +00:00
2d9f646728 Fix whitelist args in scenario entrypoint 2019-08-11 01:40:33 +02:00
9e96ca5aa8 update to 0.17.64 2019-08-09 19:24:45 +00:00
5c947846d1 Fix 0.17.63 SHA (#284) 2019-08-07 13:57:43 +02:00
edd0c95d9b update to 0.17.63 2019-08-06 12:20:39 +00:00
6651289d6e update to 0.17.62 2019-08-02 22:37:32 +00:00
784626b689 update to 0.17.61 2019-08-02 17:07:36 +00:00
47ce1706db update to 0.17.60 2019-07-30 14:37:31 +00:00
460ba0187d Update to 0.17.59 (#281)
* Update Dockerfile

* Update README.md
2019-07-26 00:28:10 +02:00
6d496def35 update to 0.17.58 2019-07-15 21:28:01 +00:00
9f8f6da0d2 update to 0.17.57 2019-07-15 17:43:15 +00:00
71c75671d5 Add debug code when sha match fails 2019-07-13 12:23:01 +02:00
5a66d1a8df Revert "Fix 0.17.56 sha"
This reverts commit a48b9d107d.
2019-07-13 12:22:21 +02:00
a48b9d107d Fix 0.17.56 sha 2019-07-13 12:05:08 +02:00
e5f34134f7 Apply shell-format 2019-07-13 12:04:34 +02:00
5d997bf1c7 update to 0.17.56 2019-07-11 20:13:01 +00:00
7a08cbb04c update to 0.17.55 2019-07-09 13:33:01 +00:00
40cc26ca02 URL encode spaces (#276)
Closes #275
2019-07-08 17:05:18 +02:00
e8705a44b8 Fix docker push with new incremental tags pt. 3 2019-07-06 17:32:35 +02:00
fe9875343f Fix docker push with new incremental tags pt. 2 2019-07-06 17:26:15 +02:00
06729a6097 Fix docker push with new incremental tags 2019-07-06 17:21:08 +02:00
95766e90c9 Switch to test pt. 2 2019-07-06 17:00:03 +02:00
4afbed52c8 Switch to test, add support for incremental tags
Closes #274
2019-07-06 16:46:56 +02:00
fd7b8cd839 Made username, token checking more robust against configuration errors 2019-07-06 16:45:38 +02:00
9c92ac9342 Fix sha check 2019-07-06 16:41:40 +02:00
1b6c8adf28 Switch to test, cleanupm, formatting 2019-07-06 16:37:13 +02:00
65c5833fd9 Cleanup shebangs, add set -eou[x] pipefail to all files 2019-07-06 16:32:49 +02:00
c949351391 Update readme to reflect upcoming tagging change. 2019-07-06 14:23:35 +02:00
11 changed files with 144 additions and 117 deletions

View File

@ -5,16 +5,16 @@ LABEL maintainer="https://github.com/factoriotools/factorio-docker"
ENV VERSION=0.14.23 \ ENV VERSION=0.14.23 \
SHA1=6ef84341c6fc1cf45cfdd6acc8468aaa117b9e8a SHA1=6ef84341c6fc1cf45cfdd6acc8468aaa117b9e8a
RUN mkdir -p /opt && \ RUN mkdir -p /opt \
apk --no-cache add curl tini pwgen && \ && apk --no-cache add curl tini pwgen \
curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \ && curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \
-o /tmp/factorio_headless_x64_$VERSION.tar.gz && \ -o /tmp/factorio_headless_x64_$VERSION.tar.gz \
echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.gz" | sha1sum -c && \ && echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.gz" | sha1sum -c \
tar xzf /tmp/factorio_headless_x64_$VERSION.tar.gz --directory /opt && \ && tar xzf /tmp/factorio_headless_x64_$VERSION.tar.gz --directory /opt \
rm /tmp/factorio_headless_x64_$VERSION.tar.gz && \ && rm /tmp/factorio_headless_x64_$VERSION.tar.gz \
apk del curl && \ && apk del curl \
ln -s /factorio/saves /opt/factorio/saves && \ && ln -s /factorio/saves /opt/factorio/saves \
ln -s /factorio/mods /opt/factorio/mods && ln -s /factorio/mods /opt/factorio/mods
VOLUME /factorio VOLUME /factorio

View File

@ -7,18 +7,18 @@ ENV PORT=34197 \
VERSION=0.15.40 \ VERSION=0.15.40 \
SHA1=f79a975f6b8c0ee87e2fa60f7d1f7133f332c3ec SHA1=f79a975f6b8c0ee87e2fa60f7d1f7133f332c3ec
RUN mkdir -p /opt && \ RUN mkdir -p /opt \
apk add --update --no-cache tini pwgen && \ && apk add --update --no-cache tini pwgen \
apk add --update --no-cache --virtual .build-deps curl && \ && apk add --update --no-cache --virtual .build-deps curl \
curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \ && curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \
-o /tmp/factorio_headless_x64_$VERSION.tar.xz && \ -o /tmp/factorio_headless_x64_$VERSION.tar.xz \
echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.xz" | sha1sum -c && \ && echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.xz" | sha1sum -c \
tar xf /tmp/factorio_headless_x64_$VERSION.tar.xz --directory /opt && \ && tar xf /tmp/factorio_headless_x64_$VERSION.tar.xz --directory /opt \
chmod -R ugo=rwx /opt/factorio && \ && chmod -R ugo=rwx /opt/factorio \
rm /tmp/factorio_headless_x64_$VERSION.tar.xz && \ && rm /tmp/factorio_headless_x64_$VERSION.tar.xz \
ln -s /factorio/saves /opt/factorio/saves && \ && ln -s /factorio/saves /opt/factorio/saves \
ln -s /factorio/mods /opt/factorio/mods && \ && ln -s /factorio/mods /opt/factorio/mods \
apk del .build-deps && apk del .build-deps
VOLUME /factorio VOLUME /factorio

View File

@ -19,23 +19,23 @@ ENV PORT=34197 \
PUID="$PUID" \ PUID="$PUID" \
PGID="$PGID" PGID="$PGID"
RUN mkdir -p /opt /factorio && \ RUN mkdir -p /opt /factorio \
apk add --update --no-cache pwgen su-exec shadow && \ && apk add --update --no-cache pwgen su-exec shadow \
apk add --update --no-cache --virtual .build-deps curl && \ && apk add --update --no-cache --virtual .build-deps curl \
curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \ && curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \
-o /tmp/factorio_headless_x64_$VERSION.tar.xz && \ -o /tmp/factorio_headless_x64_$VERSION.tar.xz \
echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.xz" | sha1sum -c && \ && echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.xz" | sha1sum -c \
tar xf /tmp/factorio_headless_x64_$VERSION.tar.xz --directory /opt && \ && tar xf /tmp/factorio_headless_x64_$VERSION.tar.xz --directory /opt \
chmod ugo=rwx /opt/factorio && \ && chmod ugo=rwx /opt/factorio \
rm /tmp/factorio_headless_x64_$VERSION.tar.xz && \ && rm /tmp/factorio_headless_x64_$VERSION.tar.xz \
ln -s $SAVES /opt/factorio/saves && \ && ln -s $SAVES /opt/factorio/saves \
ln -s $MODS /opt/factorio/mods && \ && ln -s $MODS /opt/factorio/mods \
ln -s $SCENARIOS /opt/factorio/scenarios && \ && ln -s $SCENARIOS /opt/factorio/scenarios \
ln -s $SCRIPTOUTPUT /opt/factorio/script-output && \ && ln -s $SCRIPTOUTPUT /opt/factorio/script-output \
apk del .build-deps && \ && apk del .build-deps \
addgroup -g $PGID -S $GROUP && \ && addgroup -g $PGID -S $GROUP \
adduser -u $PUID -G $GROUP -s /bin/sh -SDH $USER && \ && adduser -u $PUID -G $GROUP -s /bin/sh -SDH $USER \
chown -R $USER:$GROUP /opt/factorio /factorio && chown -R $USER:$GROUP /opt/factorio /factorio
VOLUME /factorio VOLUME /factorio

View File

@ -9,8 +9,8 @@ ARG PGID=845
ENV PORT=34197 \ ENV PORT=34197 \
RCON_PORT=27015 \ RCON_PORT=27015 \
VERSION=0.17.54 \ VERSION=0.17.68 \
SHA1=69750604bc9036abdf5e9297dfc975f80b52c573 \ SHA1=dac6b6b04d35b54c188a1313a321e19e4f02263e \
SAVES=/factorio/saves \ SAVES=/factorio/saves \
CONFIG=/factorio/config \ CONFIG=/factorio/config \
MODS=/factorio/mods \ MODS=/factorio/mods \
@ -19,21 +19,23 @@ ENV PORT=34197 \
PUID="$PUID" \ PUID="$PUID" \
PGID="$PGID" PGID="$PGID"
RUN mkdir -p /opt /factorio && \ RUN set -ox pipefail \
apk add --update --no-cache --no-progress bash binutils curl gettext jq libintl pwgen shadow su-exec && \ && archive="/tmp/factorio_headless_x64_$VERSION.tar.xz" \
curl -sSL "https://www.factorio.com/get-download/$VERSION/headless/linux64" \ && mkdir -p /opt /factorio \
-o /tmp/factorio_headless_x64_$VERSION.tar.xz && \ && apk add --update --no-cache --no-progress bash binutils curl file gettext jq libintl pwgen shadow su-exec \
echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.xz" | sha1sum -c && \ && curl -sSL "https://www.factorio.com/get-download/$VERSION/headless/linux64" -o "$archive" \
tar xf "/tmp/factorio_headless_x64_$VERSION.tar.xz" --directory /opt && \ && echo "$SHA1 $archive" | sha1sum -c \
chmod ugo=rwx /opt/factorio && \ || (sha1sum "$archive" && file "$archive" && exit 1) \
rm "/tmp/factorio_headless_x64_$VERSION.tar.xz" && \ && tar xf "$archive" --directory /opt \
ln -s "$SAVES" /opt/factorio/saves && \ && chmod ugo=rwx /opt/factorio \
ln -s "$MODS" /opt/factorio/mods && \ && rm "$archive" \
ln -s "$SCENARIOS" /opt/factorio/scenarios && \ && ln -s "$SAVES" /opt/factorio/saves \
ln -s "$SCRIPTOUTPUT" /opt/factorio/script-output && \ && ln -s "$MODS" /opt/factorio/mods \
addgroup -g "$PGID" -S "$GROUP" && \ && ln -s "$SCENARIOS" /opt/factorio/scenarios \
adduser -u "$PUID" -G "$GROUP" -s /bin/sh -SDH "$USER" && \ && ln -s "$SCRIPTOUTPUT" /opt/factorio/script-output \
chown -R "$USER":"$GROUP" /opt/factorio /factorio && addgroup -g "$PGID" -S "$GROUP" \
&& adduser -u "$PUID" -G "$GROUP" -s /bin/sh -SDH "$USER" \
&& chown -R "$USER":"$GROUP" /opt/factorio /factorio
VOLUME /factorio VOLUME /factorio

View File

@ -1,7 +1,5 @@
#!/bin/bash -x #!/bin/bash
set -euo pipefail set -eoux pipefail
id
FACTORIO_VOL=/factorio FACTORIO_VOL=/factorio
mkdir -p "$FACTORIO_VOL" mkdir -p "$FACTORIO_VOL"
@ -11,26 +9,26 @@ mkdir -p "$MODS"
mkdir -p "$SCENARIOS" mkdir -p "$SCENARIOS"
mkdir -p "$SCRIPTOUTPUT" mkdir -p "$SCRIPTOUTPUT"
if [ ! -f "$CONFIG/rconpw" ]; then if [[ ! -f $CONFIG/rconpw ]]; then
# Generate a new RCON password if none exists # Generate a new RCON password if none exists
pwgen 15 1 >"$CONFIG/rconpw" pwgen 15 1 >"$CONFIG/rconpw"
fi fi
if [ ! -f "$CONFIG/server-settings.json" ]; then if [[ ! -f $CONFIG/server-settings.json ]]; then
# Copy default settings if server-settings.json doesn't exist # Copy default settings if server-settings.json doesn't exist
cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json"
fi fi
if [ ! -f "$CONFIG/map-gen-settings.json" ]; then if [[ ! -f $CONFIG/map-gen-settings.json ]]; then
cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json"
fi fi
if [ ! -f "$CONFIG/map-settings.json" ]; then if [[ ! -f $CONFIG/map-settings.json ]]; then
cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json"
fi fi
NRTMPSAVES=$( find -L "$SAVES" -iname \*.tmp.zip -mindepth 1 | wc -l ) NRTMPSAVES=$( find -L "$SAVES" -iname \*.tmp.zip -mindepth 1 | wc -l )
if [ "$NRTMPSAVES" -gt 0 ]; then if [[ $NRTMPSAVES -gt 0 ]]; then
# Delete incomplete saves (such as after a forced exit) # Delete incomplete saves (such as after a forced exit)
rm -f "$SAVES"/*.tmp.zip rm -f "$SAVES"/*.tmp.zip
fi fi
@ -39,7 +37,7 @@ if [[ ${UPDATE_MODS_ON_START:-} ]]; then
./docker-update-mods.sh ./docker-update-mods.sh
fi fi
if [ "$(id -u)" = '0' ]; then if [[ $(id -u) = 0 ]]; then
# Update the User and Group ID based on the PUID/PGID variables # Update the User and Group ID based on the PUID/PGID variables
usermod -o -u "$PUID" factorio usermod -o -u "$PUID" factorio
groupmod -o -g "$PGID" factorio groupmod -o -g "$PGID" factorio
@ -52,7 +50,7 @@ else
fi fi
NRSAVES=$(find -L "$SAVES" -iname \*.zip -mindepth 1 | wc -l) NRSAVES=$(find -L "$SAVES" -iname \*.zip -mindepth 1 | wc -l)
if [ "$NRSAVES" -eq 0 ]; then if [[ $NRSAVES -eq 0 ]]; then
# Generate a new map if no save ZIPs exist # Generate a new map if no save ZIPs exist
$SU_EXEC /opt/factorio/bin/x64/factorio \ $SU_EXEC /opt/factorio/bin/x64/factorio \
--create "$SAVES/_autosave1.zip" \ --create "$SAVES/_autosave1.zip" \

View File

@ -1,4 +1,5 @@
#!/bin/bash #!/bin/bash
set -eou pipefail
if [[ -f /run/secrets/username ]]; then if [[ -f /run/secrets/username ]]; then
USERNAME=$(cat /run/secrets/username) USERNAME=$(cat /run/secrets/username)
@ -8,10 +9,20 @@ if [[ -f /run/secrets/username ]]; then
TOKEN=$(cat /run/secrets/token) TOKEN=$(cat /run/secrets/token)
fi fi
if [[ -z $TOKEN ]]; then if [[ -z ${USERNAME:-} ]]; then
set -- "$(jq -j ".username, \" \", .token" "$CONFIG/server-settings.json")" USERNAME="$(jq -j ".username" "$CONFIG/server-settings.json")"
USERNAME=$1 fi
TOKEN=$2
if [[ -z ${TOKEN:-} ]]; then
TOKEN="$(jq -j ".token" "$CONFIG/server-settings.json")"
fi
if [[ -z ${USERNAME:-} ]]; then
echo "You need to provide your Factorio username to update mods."
fi
if [[ -z ${TOKEN:-} ]]; then
echo "You need to provide your Factorio token to update mods."
fi fi
./update-mods.sh "$VERSION" "$MODS" "$USERNAME" "$TOKEN" ./update-mods.sh "$VERSION" "$MODS" "$USERNAME" "$TOKEN"

View File

@ -1,13 +1,11 @@
#!/bin/bash -x #!/bin/bash
if [ -z "$1" ]; then set -eoux pipefail
if [[ -z ${1:-} ]]; then
echo "No argument supplied" echo "No argument supplied"
fi fi
SERVER_SCENARIO="$1" SERVER_SCENARIO="$1"
set -euo pipefail
id
mkdir -p "$SAVES" mkdir -p "$SAVES"
mkdir -p "$CONFIG" mkdir -p "$CONFIG"
mkdir -p "$MODS" mkdir -p "$MODS"
@ -15,19 +13,19 @@ mkdir -p "$SCENARIOS"
#chown -R factorio /factorio #chown -R factorio /factorio
if [ ! -f "$CONFIG/rconpw" ]; then if [[ ! -f $CONFIG/rconpw ]]; then
pwgen 15 1 >"$CONFIG/rconpw" pwgen 15 1 >"$CONFIG/rconpw"
fi fi
if [ ! -f "$CONFIG/server-settings.json" ]; then if [[ ! -f $CONFIG/server-settings.json ]]; then
cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json"
fi fi
if [ ! -f "$CONFIG/map-gen-settings.json" ]; then if [[ ! -f $CONFIG/map-gen-settings.json ]]; then
cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json"
fi fi
if [ ! -f "$CONFIG/map-settings.json" ]; then if [[ ! -f $CONFIG/map-settings.json ]]; then
cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json"
fi fi
@ -35,8 +33,10 @@ exec /opt/factorio/bin/x64/factorio \
--port "$PORT" \ --port "$PORT" \
--start-server-load-scenario "$SERVER_SCENARIO" \ --start-server-load-scenario "$SERVER_SCENARIO" \
--server-settings "$CONFIG/server-settings.json" \ --server-settings "$CONFIG/server-settings.json" \
--server-whitelist "$CONFIG/server-whitelist.json" \
--server-banlist "$CONFIG/server-banlist.json" \ --server-banlist "$CONFIG/server-banlist.json" \
--server-whitelist "$CONFIG/server-whitelist.json" \
--use-server-whitelist \
--server-adminlist "$CONFIG/server-adminlist.json" \
--rcon-port "$RCON_PORT" \ --rcon-port "$RCON_PORT" \
--rcon-password "$(cat "$CONFIG/rconpw")" \ --rcon-password "$(cat "$CONFIG/rconpw")" \
--server-id /factorio/config/server-id.json --server-id /factorio/config/server-id.json

View File

@ -1,27 +1,25 @@
#!/bin/bash -x #!/bin/bash
if [ -z "$1" ]; then set -eoux pipefail
if [[ -z ${1:-} ]]; then
echo "No argument supplied" echo "No argument supplied"
fi fi
SERVER_SCENARIO="$1" SERVER_SCENARIO="$1"
set -euo pipefail
id
mkdir -p "$SAVES" mkdir -p "$SAVES"
mkdir -p "$CONFIG" mkdir -p "$CONFIG"
mkdir -p "$MODS" mkdir -p "$MODS"
mkdir -p "$SCENARIOS" mkdir -p "$SCENARIOS"
if [ ! -f "$CONFIG/server-settings.json" ]; then if [[ ! -f $CONFIG/server-settings.json ]]; then
cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json"
fi fi
if [ ! -f "$CONFIG/map-gen-settings.json" ]; then if [[ ! -f $CONFIG/map-gen-settings.json ]]; then
cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json"
fi fi
if [ ! -f "$CONFIG/map-settings.json" ]; then if [[ ! -f $CONFIG/map-settings.json ]]; then
cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json"
fi fi

View File

@ -1,4 +1,5 @@
#!/bin/bash #!/bin/bash
set -eou pipefail
FACTORIO_VERSION=$1 FACTORIO_VERSION=$1
MOD_DIR=$2 MOD_DIR=$2
@ -24,7 +25,7 @@ print_failure()
update_mod() update_mod()
{ {
MOD_NAME="$1" MOD_NAME="${1// /%20}"
print_step "Checking for update of mod $MOD_NAME..." print_step "Checking for update of mod $MOD_NAME..."
@ -66,8 +67,7 @@ update_mod()
return 1 return 1
fi fi
set -- "$(sha1sum "$MOD_DIR/$MOD_FILENAME")" if ! [[ $(sha1sum "$MOD_DIR/$MOD_FILENAME") =~ $MOD_SHA1 ]]; then
if [[ $1 != "$MOD_SHA1" ]]; then
print_failure " SHA1 mismatch!" print_failure " SHA1 mismatch!"
rm "$MOD_DIR/$MOD_FILENAME" rm "$MOD_DIR/$MOD_FILENAME"
return 1 return 1

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) [![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") # Factorio [![Build Status](https://travis-ci.org/factoriotools/factorio-docker.svg?branch=master)](https://travis-ci.org/factoriotools/factorio-docker) [![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.17.54`, `0.17`, `latest` [(0.17/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.17/Dockerfile) * `0.17.68`, `0.17`, `latest` [(0.17/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.17/Dockerfile)
* `0.16.51`, `0.16`, `stable` [(0.16/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.16/Dockerfile) * `0.16.51`, `0.16`, `stable` [(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) * `0.15.40`, `0.15` [(0.15/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.15/Dockerfile)
* `0.14.23`, `0.14` [(0.14/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.14/Dockerfile) * `0.14.23`, `0.14` [(0.14/Dockerfile)](https://github.com/factoriotools/factorio-docker/blob/master/0.14/Dockerfile)
@ -11,7 +11,7 @@
* `stable` - version declared stable on [factorio.com](https://www.factorio.com). * `stable` - version declared stable on [factorio.com](https://www.factorio.com).
* `0.x` - latest version in a branch. * `0.x` - latest version in a branch.
* `0.x.y` - a specific version. * `0.x.y` - a specific version.
* `0.x-dev` - whatever is in master for that version. * `0.x-z` - incremental fix for that version.
# What is Factorio? # What is Factorio?

View File

@ -1,33 +1,39 @@
#!/bin/bash #!/bin/bash
set -eox pipefail set -eoux pipefail
if [ -z "$1" ] && [ -n "$CI" ]; then if [[ -z ${1:-} ]] && [[ -n ${CI:-} ]]; then
echo "Usage: ./build.sh \$VERSION_SHORT" echo "Usage: ./build.sh \$VERSION_SHORT"
exit 1 exit 1
elif [ "$CI" == "true" ]; then elif [[ $CI == true ]]; then
VERSION_SHORT="$1" VERSION_SHORT="$1"
else else
VERSION_SHORT=$(find . -maxdepth 1 -type d | sort | tail -1 | grep -o "[0-9].[0-9]*") VERSION_SHORT=$(find . -maxdepth 1 -type d | sort | tail -1 | grep -o "[[0-9]].[[0-9]]*")
EXTRA_TAG=latest EXTRA_TAG=latest
fi fi
cd "$VERSION_SHORT" || exit cd "$VERSION_SHORT" || exit 1
VERSION=$(grep -oP '[0-9]+\.[0-9]+\.[0-9]+' Dockerfile | head -1) VERSION=$(grep -oP '[0-9]+\.[0-9]+\.[0-9]+' Dockerfile | head -1)
DOCKER_REPO=factoriotools/factorio DOCKER_REPO=factoriotools/factorio
if [ "$TRAVIS_PULL_REQUEST" == "true" ]; then if [[ $TRAVIS_PULL_REQUEST == true ]]; then
TAGS="$DOCKER_REPO:$TRAVIS_PULL_REQUEST_SLUG" TAGS="$DOCKER_REPO:$TRAVIS_PULL_REQUEST_SLUG"
else else
if [ "$TRAVIS_BRANCH" == "master" ] || [ "$TRAVIS_BRANCH" == "$VERSION" ]; then # we are either on master or on a tag build
if [[ $TRAVIS_BRANCH == master ]] || [[ $TRAVIS_BRANCH == "$VERSION" ]]; then
TAGS="$DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT" TAGS="$DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
elif [ -n "$TRAVIS_BRANCH" ]; then # we are on an incremental build of a tag
elif [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]]; then
TAGS="$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="$DOCKER_REPO:$TRAVIS_BRANCH" TAGS="$DOCKER_REPO:$TRAVIS_BRANCH"
elif [ "$CI" == "" ]; then # we are not in CI and tag version and version short
elif [[ $CI == "" ]]; then
TAGS="$DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT" TAGS="$DOCKER_REPO:$VERSION -t $DOCKER_REPO:$VERSION_SHORT"
fi fi
if [ -n "$EXTRA_TAG" ]; then if [[ -n ${EXTRA_TAG:-} ]]; then
TAGS="$TAGS -t $DOCKER_REPO:$EXTRA_TAG" TAGS="$TAGS -t $DOCKER_REPO:$EXTRA_TAG"
fi fi
fi fi
@ -36,22 +42,34 @@ fi
docker build . -t $TAGS docker build . -t $TAGS
docker images docker images
if [[ "$(dirname "$(git diff --name-only HEAD^)")" =~ $VERSION_SHORT ]] && [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST_BRANCH" == "" ] || # only push when:
[ "$TRAVIS_BRANCH" == "$VERSION" ] && [ "$TRAVIS_PULL_REQUEST_BRANCH" == "" ] || # latest changes where made in the folder corosponding to the version we build, we are on master and don#t build a PR.
[ "$CI" == "" ]; then if [[ $(dirname "$(git diff --name-only HEAD^)") =~ $VERSION_SHORT ]] && [[ $TRAVIS_BRANCH == master ]] && [[ $TRAVIS_PULL_REQUEST_BRANCH == "" ]] ||
# we build a tag and we are not on master
[[ $VERSION == "${TRAVIS_BRANCH%-*}" ]] && [[ $TRAVIS_PULL_REQUEST_BRANCH == "" ]] ||
# we are not in CI
[[ $CI == "" ]]; then
if [ "$CI" == "true" ]; then if [[ $CI == true ]]; then
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
fi fi
if [ -n "$TRAVIS_BRANCH" ] && [ "$TRAVIS_BRANCH" != "$VERSION" ] && [ "$TRAVIS_BRANCH" != "master" ]; then # push a tag on a branch other than master
if [[ -n $TRAVIS_BRANCH ]] && [[ $VERSION != "${TRAVIS_BRANCH%-*}" ]] && [[ $TRAVIS_BRANCH != "master" ]]; then
docker push "$DOCKER_REPO:$TRAVIS_BRANCH" docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
fi fi
if [ -n "$TRAVIS_TAG" ] || [ "$CI" == "" ]; then
# push an incremental tag
if [[ $VERSION == "${TRAVIS_BRANCH%-*}" ]]; then
docker push "$DOCKER_REPO:$TRAVIS_BRANCH"
fi
if [[ -n $TRAVIS_TAG ]] || [[ $CI == "" ]]; then
docker push "$DOCKER_REPO:$VERSION" docker push "$DOCKER_REPO:$VERSION"
docker push "$DOCKER_REPO:$VERSION_SHORT" docker push "$DOCKER_REPO:$VERSION_SHORT"
fi fi
if [ -n "$EXTRA_TAG" ]; then
if [[ -n ${EXTRA_TAG:-} ]]; then
docker push "$DOCKER_REPO:$EXTRA_TAG" docker push "$DOCKER_REPO:$EXTRA_TAG"
fi fi