Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ca3e69e
update to latest supercronic release
GlitchApotamus Jul 15, 2025
6526ba4
Auto-merge master back to dev
actions-user Jul 17, 2025
2f013b1
Merge branch 'jammsen:develop' into update-deps
GlitchApotamus Jul 17, 2025
6ed9162
Update Dockerfile
GlitchApotamus Jul 17, 2025
fa9e4e3
Fixed missi-using wrong variables for unit test and added different u…
jammsen Jul 18, 2025
eef2480
Merge branch 'jammsen:develop' into update-deps
GlitchApotamus Jul 18, 2025
a697615
update changelog for supercronic
GlitchApotamus Jul 18, 2025
640ab65
fix changelog wording
GlitchApotamus Jul 19, 2025
4d78e29
Merge pull request #305 from GlitchApotamus/update-deps
jammsen Jul 19, 2025
ac6629f
added runner system infos
jammsen Jul 20, 2025
5aa4ec0
use envsubst instead of sed
codebam Aug 7, 2025
f084f1a
#311 - Made envsubst integration complete and useful, added strtolowe…
jammsen Sep 6, 2025
9b0a766
Merge branch 'codebam-develop' into develop
jammsen Sep 6, 2025
0d04d47
added changelog to change
jammsen Sep 6, 2025
328841d
extended logging in unittests for more overview
jammsen Sep 7, 2025
30105a6
added filecheck
jammsen Feb 22, 2026
e911c5b
fixes #312
jammsen May 23, 2026
04b0e44
add docker base image tagging and settings for dependabot
jammsen May 23, 2026
58a8d72
docker-image pins, actions updates, gitignore updates and implementin…
jammsen May 23, 2026
44924b2
ci: update README with latest compose.yml content
actions-user May 23, 2026
d91a13a
forget 1 update
jammsen May 23, 2026
1124262
Merge branch 'develop' of github.com:jammsen/docker-palworld-dedicate…
jammsen May 23, 2026
ac114e6
dont run unittests on github-actions ecosystem changes
jammsen May 23, 2026
1516757
solves #273
jammsen May 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 33 additions & 8 deletions .github/actions/unittest-on-build/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ runs:
pwd
git --version
docker version
echo "TIMEOUT_SECONDS: ${{ inputs.timeout_seconds }}"
free -m
cat /proc/cpuinfo | grep "model name"
echo "Repository value of TIMEOUT_SECONDS is: ${{ inputs.timeout_seconds }}"
echo "This should be set on develop or main branch!"

- name: Run server
shell: bash
Expand All @@ -33,6 +36,8 @@ runs:
-p 8211:8211/udp \
-p 8212:8212/tcp \
-p 25575:25575/tcp \
-e PUID=7351 \
-e PGID=2431 \
-e ADMIN_PASSWORD=123 \
-e SERVER_PASSWORD=456 \
-e SERVER_SETTINGS_MODE=auto \
Expand All @@ -45,27 +50,47 @@ runs:
shell: bash
run: |
START_TIME=$(date +%s)
echo "TIMEOUT_SECONDS: ${{ inputs.timeout_seconds }}"
TIMEOUT_SECONDS=${{ inputs.timeout_seconds || '300' }}
echo "TIMEOUT_SECONDS: $TIMEOUT_SECONDS"

# Set the timezone to Germany (Central European Time)
export TZ=Europe/Berlin

# Source color functions
source ./includes/colors.sh

# Track last log position to avoid duplicate output
LAST_LOG_LINES=0

while ! docker logs palworld-dedicated-server 2>&1 | grep -q "Setting breakpad minidump AppID"; do
CURRENT_TIME=$(date +%s)
ELAPSED_TIME=$((CURRENT_TIME - START_TIME))

if [ $ELAPSED_TIME -gt ${{ inputs.timeout_seconds }} ]; then
echo "Timeout reached. Server failed to start within ${{ inputs.timeout_seconds }} seconds."
printf "\e[0;32m%s\e[0m\n" "*****Container LOGS*****"
if [ $ELAPSED_TIME -gt $TIMEOUT_SECONDS ]; then
echo "Timeout reached. Server failed to start within $TIMEOUT_SECONDS seconds."
es "*****Final Container LOGS*****"
docker logs palworld-dedicated-server
exit 1
fi

echo "$(date '+%H:%M:%S') - Waiting for server to start..."
# Show current status with warning color
ew ">>> $(date '+%H:%M:%S') - Waiting for server to start... (${ELAPSED_TIME}s elapsed)"
# Get current log lines count and show new logs if any
CURRENT_LOG_LINES=$(docker logs palworld-dedicated-server 2>&1 | wc -l)
if [ $CURRENT_LOG_LINES -gt $LAST_LOG_LINES ]; then
es ">>> Recent container logs"
es "╭─────────────────────────────────────────────────────────────────────────────────────────────────────╮"
docker logs palworld-dedicated-server 2>&1 | tail -n +$((LAST_LOG_LINES + 1)) | head -n $((CURRENT_LOG_LINES - LAST_LOG_LINES))
es "╰─────────────────────────────────────────────────────────────────────────────────────────────────────╯"
LAST_LOG_LINES=$CURRENT_LOG_LINES
fi

echo "---"
sleep 5
done
echo "Server successfully started"
printf "\e[0;32m%s\e[0m\n" "*****Container LOGS*****"

echo "Server successfully started in $ELAPSED_TIME seconds"
es "*****Final Container LOGS*****"
docker logs palworld-dedicated-server


Expand Down
22 changes: 22 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: 2

updates:
- package-ecosystem: "docker"
directories:
- "/"
schedule:
interval: "weekly"
patterns: ["*"]
multi-ecosystem-group: "all-dependencies"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
patterns: ["*"]
multi-ecosystem-group: "all-dependencies"

multi-ecosystem-groups:
all-dependencies:
schedule:
interval: "weekly"
2 changes: 1 addition & 1 deletion .github/workflows/auto-merge-master-to-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
timeout-minutes: 1
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Set Git config
run: |
git config --local user.email "actions@github.com"
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/docker-build-and-push-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: |
jammsen/palworld-dedicated-server
Expand All @@ -32,7 +32,7 @@ jobs:
run: echo "GIT_SHORT_SHA7=$(echo ${GITHUB_SHA} | cut -c1-7)" >> "$GITHUB_OUTPUT"

- name: Build the images
uses: docker/build-push-action@v5
uses: docker/build-push-action@v7
with:
context: .
push: false
Expand All @@ -50,20 +50,20 @@ jobs:
timeout_seconds: ${{ vars.TIMEOUT_SECONDS }}

- name: Login to Docker Hub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GHCR
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Push the images
uses: docker/build-push-action@v5
uses: docker/build-push-action@v7
with:
context: .
push: true
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/docker-build-and-push-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@v6
with:
images: |
jammsen/palworld-dedicated-server
Expand All @@ -32,7 +32,7 @@ jobs:
run: echo "GIT_SHORT_SHA7=$(echo ${GITHUB_SHA} | cut -c1-7)" >> "$GITHUB_OUTPUT"

- name: Build the images
uses: docker/build-push-action@v5
uses: docker/build-push-action@v7
with:
context: .
push: false
Expand All @@ -52,20 +52,20 @@ jobs:
timeout_seconds: ${{ vars.TIMEOUT_SECONDS }}

- name: Login to Docker Hub
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GHCR
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Push the images
uses: docker/build-push-action@v5
uses: docker/build-push-action@v7
with:
context: .
push: true
Expand All @@ -78,7 +78,7 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}

- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v4
uses: peter-evans/dockerhub-description@v5
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
Expand Down
50 changes: 37 additions & 13 deletions .github/workflows/unittest-on-pr.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
---
name: unit-test-component-run-on-pr
on:
pull_request: # Run tests on all pull requests
pull_request: # Run tests on all pull requests, except those only touching CI/config files
paths-ignore:
- '.github/**'

concurrency:
group: "${{ github.workflow }} @ ${{ github.ref }}"
Expand All @@ -19,17 +21,19 @@ jobs:
pwd
git --version
docker version
echo "Repository value of TIMEOUT_SECONDS: ${{ vars.TIMEOUT_SECONDS }}"
free -m
cat /proc/cpuinfo | grep "model name"
echo "Repository value of TIMEOUT_SECONDS is: ${{ vars.TIMEOUT_SECONDS }}"
echo "This should not be set on a PR from a different source!"

- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v4

- name: Build and export to Docker
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
file: ./Dockerfile
load: true
Expand All @@ -43,6 +47,8 @@ jobs:
-p 8211:8211/udp \
-p 8212:8212/tcp \
-p 25575:25575/tcp \
-e PUID=7351 \
-e PGID=2431 \
-e ADMIN_PASSWORD=123 \
-e SERVER_PASSWORD=456 \
-e SERVER_SETTINGS_MODE=auto \
Expand All @@ -55,30 +61,48 @@ jobs:
run: |
START_TIME=$(date +%s)
TIMEOUT_SECONDS=${{ vars.TIMEOUT_SECONDS || '300' }}
echo "TIMEOUT_SECONDS: ${{ vars.TIMEOUT_SECONDS }}"
echo "TIMEOUT_SECONDS: $TIMEOUT_SECONDS"

# Set the timezone to Germany (Central European Time)
export TZ=Europe/Berlin

# Source color functions
source ./includes/colors.sh

# Track last log position to avoid duplicate output
LAST_LOG_LINES=0

while ! docker logs palworld-dedicated-server 2>&1 | grep -q "Setting breakpad minidump AppID"; do
CURRENT_TIME=$(date +%s)
ELAPSED_TIME=$((CURRENT_TIME - START_TIME))

if [ $ELAPSED_TIME -gt ${{ vars.TIMEOUT_SECONDS }} ]; then
echo "Timeout reached. Server failed to start within ${{ vars.TIMEOUT_SECONDS }} seconds."
printf "\e[0;32m%s\e[0m\n" "*****Container LOGS*****"
if [ $ELAPSED_TIME -gt $TIMEOUT_SECONDS ]; then
echo "Timeout reached. Server failed to start within $TIMEOUT_SECONDS seconds."
es "*****Final Container LOGS*****"
docker logs palworld-dedicated-server
exit 1
fi

echo "$(date '+%H:%M:%S') - Waiting for server to start..."
# Show current status with warning color
ew ">>> $(date '+%H:%M:%S') - Waiting for server to start... (${ELAPSED_TIME}s elapsed)"
# Get current log lines count and show new logs if any
CURRENT_LOG_LINES=$(docker logs palworld-dedicated-server 2>&1 | wc -l)
if [ $CURRENT_LOG_LINES -gt $LAST_LOG_LINES ]; then
es ">>> Recent container logs"
es "╭─────────────────────────────────────────────────────────────────────────────────────────────────────╮"
docker logs palworld-dedicated-server 2>&1 | tail -n +$((LAST_LOG_LINES + 1)) | head -n $((CURRENT_LOG_LINES - LAST_LOG_LINES))
es "╰─────────────────────────────────────────────────────────────────────────────────────────────────────╯"
LAST_LOG_LINES=$CURRENT_LOG_LINES
fi

echo "---"
sleep 5
done
echo "Server successfully started"
printf "\e[0;32m%s\e[0m\n" "*****Container LOGS*****"

echo "Server successfully started in $ELAPSED_TIME seconds"
es "*****Final Container LOGS*****"
docker logs palworld-dedicated-server


- name: Test if port 8766, 27015 and 27016 are listening
run: |
nc -z -u -v 127.0.0.1 8211 || exit 2
Expand Down
53 changes: 53 additions & 0 deletions .github/workflows/update-readme.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
name: Update README
on:
push:
paths:
- 'compose.yml'

jobs:
update_readme:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout code
uses: actions/checkout@v6

- name: Update README
run: |
python3 - <<'EOF'
import re

# Read compose.yml
with open('compose.yml', 'r') as f:
compose_content = f.read()

# Wrap content in a yaml code block
markdown_content = '```yaml\n' + compose_content + '\n```'

# Read README.md
with open('README.md', 'r') as f:
readme_content = f.read()

# Replace the section between the markers
pattern = r'<!-- compose-start -->.*?<!-- compose-end -->'
replacement = '<!-- compose-start -->\n' + markdown_content + '\n<!-- compose-end -->'
new_readme = re.sub(pattern, replacement, readme_content, flags=re.DOTALL)

with open('README.md', 'w') as f:
f.write(new_readme)
EOF

- name: Commit changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add README.md
if git diff --quiet HEAD; then
echo "No changes to commit"
else
git commit -m "ci: update README with latest compose.yml content"
git push
fi
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
.vscode/
game/
test/
compose-*.yml
docker-compose-*.yml
custom.env
configs/DefaultPalWorldSettings.ini
Loading
Loading