-
-
Notifications
You must be signed in to change notification settings - Fork 303
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/Luatan/palworld-server-docker…
… into auto-update-no-delay
- Loading branch information
Showing
23 changed files
with
283 additions
and
765 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,11 @@ | ||
--- | ||
name: Release | ||
on: # yamllint disable-line rule:truthy | ||
on: # yamllint disable-line rule:truthy | ||
release: | ||
types: [published] | ||
|
||
jobs: | ||
# Builds the Dockerfile and pushes it to dockerhub | ||
# Builds the Dockerfile and pushes it to dockerhub and GHCR | ||
release-amd64: | ||
name: Release - Docker image | ||
runs-on: ubuntu-latest | ||
|
@@ -19,11 +19,20 @@ jobs: | |
username: ${{ secrets.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: Docker - GHCR Login | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Docker - Metadata | ||
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
images: ${{ github.repository }} | ||
images: | | ||
${{ github.repository }} | ||
ghcr.io/${{ github.repository }} | ||
# generate Docker tags based on the following events/attributes | ||
tags: | | ||
type=semver,pattern=v{{version}} | ||
|
@@ -39,7 +48,7 @@ jobs: | |
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
|
||
# Builds the Dockerfile.arm64 and pushes it to dockerhub | ||
# Builds the Dockerfile.arm64 and pushes it to dockerhub and GHCR | ||
release-arm64: | ||
name: Release - Docker image | ||
runs-on: ubuntu-latest | ||
|
@@ -63,7 +72,9 @@ jobs: | |
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
images: ${{ github.repository }} | ||
images: | | ||
${{ github.repository }} | ||
ghcr.io/${{ github.repository }} | ||
# generate Docker tags based on the following events/attributes | ||
tags: | | ||
type=semver,pattern=v{{version}}-arm64 | ||
|
@@ -80,35 +91,3 @@ jobs: | |
platforms: linux/arm64 | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
|
||
# Generates a new release specifically for the helm chart, using the helm charts version | ||
# Only generates a new release if the helm charts version has changed since the last release | ||
# Will then update the gh-pages branch & helm repository | ||
release-helm: | ||
name: Release - Helm chart | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
pages: write | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Git - Configure | ||
run: | | ||
git config user.name "$GITHUB_ACTOR" | ||
git config user.email "[email protected]" | ||
# Will push updates to a index.yaml file in the gh-pages branch | ||
- name: Helm - chart-releaser | ||
uses: helm/[email protected] | ||
with: | ||
charts_dir: charts | ||
pages_branch: gh-pages | ||
mark_as_latest: false | ||
skip_existing: true | ||
config: ./charts/cr.yaml | ||
env: | ||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,199 @@ | ||
--- | ||
name: Unit-test | ||
on: # yamllint disable-line rule:truthy | ||
pull_request: | ||
workflow_call: | ||
|
||
jobs: | ||
unit-test-amd64: | ||
name: Docker - Test (amd64) | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Build and export to Docker | ||
uses: docker/build-push-action@v5 | ||
with: | ||
load: true | ||
tags: ${{ github.run_id }} | ||
platforms: linux/amd64 | ||
|
||
- name: Run server | ||
run: | | ||
docker run -d \ | ||
--name palworld-server \ | ||
-p 8211:8211/udp \ | ||
-p 27015:27015/udp \ | ||
-p 25575:25575/tcp \ | ||
-v ./palworld:/palworld/ \ | ||
-e PUID=1000 \ | ||
-e PGID=1000 \ | ||
-e PORT=8211 \ | ||
-e PLAYERS=16 \ | ||
-e MULTITHREADING=true \ | ||
-e RCON_ENABLED=true \ | ||
-e RCON_PORT=25575 \ | ||
-e TZ=UTC \ | ||
-e ADMIN_PASSWORD="adminPasswordHere" \ | ||
-e SERVER_PASSWORD="worldofpals" \ | ||
-e COMMUNITY=false \ | ||
-e SERVER_NAME="World of Pals" \ | ||
-e SERVER_DESCRIPTION="palworld-server-docker by Thijs van Loef" \ | ||
--restart unless-stopped \ | ||
--stop-timeout 30 \ | ||
${{ github.run_id }} | ||
- name: Wait for server to start | ||
run: | | ||
TIMEOUT_SECONDS=120 | ||
START_TIME=$(date +%s) | ||
while ! docker logs palworld-server 2>&1 | grep -q "Setting breakpad minidump AppID"; do | ||
CURRENT_TIME=$(date +%s) | ||
ELAPSED_TIME=$((CURRENT_TIME - START_TIME)) | ||
if [ $ELAPSED_TIME -gt $TIMEOUT_SECONDS ]; then | ||
echo "Timeout reached. Server failed to start within $TIMEOUT_SECONDS seconds." | ||
exit 1 # or handle the failure accordingly | ||
fi | ||
echo "Waiting for server to start..." | ||
sleep 5 | ||
done | ||
- name: Test if server is up and running | ||
run: | | ||
sleep 5 | ||
if ! docker exec palworld-server rcon-cli Info | grep -q "Welcome to Pal Server"; then | ||
echo "Server may not have started successfully." | ||
exit 1 | ||
fi | ||
- name: Test if port 8211, 27015 and 25575 are listening | ||
run: | | ||
nc -z -u -v 127.0.0.1 8211 || exit 1 | ||
nc -z -u -v 127.0.0.1 27015 || exit 1 | ||
nc -z -v 127.0.0.1 25575 || exit 1 | ||
- name: Test the backup command functions | ||
run: | | ||
docker exec palworld-server backup | ||
if [ ! -f ./palworld/backups/palworld-save-*.tar.gz ]; then | ||
echo "Backup file not found. Backup command may have failed." | ||
exit 1 | ||
fi | ||
- name: Test if PalWorldSettings.ini is valid | ||
run: | | ||
if ! grep -q "\[\/Script\/Pal.PalGameWorldSettings\]" ./palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini; then | ||
echo "Error: PalWorldSettings.ini is missing the required section [/Script/Pal.PalGameWorldSettings]." | ||
exit 1 | ||
fi | ||
if ! grep -q "^OptionSettings=\(.*\)" ./palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini; then | ||
echo "Error: PalWorldSettings.ini is missing or has an invalid OptionSettings section." | ||
exit 1 | ||
fi | ||
unit-test-arm64: | ||
name: Docker - Test (arm64) | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Build and export to Docker | ||
uses: docker/build-push-action@v5 | ||
with: | ||
file: ./Dockerfile.arm64 | ||
load: true | ||
tags: ${{ github.run_id }} | ||
platforms: linux/arm64 | ||
|
||
- name: Run server | ||
run: | | ||
docker run -d \ | ||
--name palworld-server \ | ||
--platform linux/arm64 \ | ||
-p 8211:8211/udp \ | ||
-p 27015:27015/udp \ | ||
-p 25575:25575/tcp \ | ||
-v ./palworld:/palworld/ \ | ||
-e PUID=1000 \ | ||
-e PGID=1000 \ | ||
-e PORT=8211 \ | ||
-e PLAYERS=16 \ | ||
-e MULTITHREADING=true \ | ||
-e RCON_ENABLED=true \ | ||
-e RCON_PORT=25575 \ | ||
-e TZ=UTC \ | ||
-e ADMIN_PASSWORD="adminPasswordHere" \ | ||
-e SERVER_PASSWORD="worldofpals" \ | ||
-e COMMUNITY=false \ | ||
-e SERVER_NAME="World of Pals" \ | ||
-e SERVER_DESCRIPTION="palworld-server-docker by Thijs van Loef" \ | ||
--restart unless-stopped \ | ||
--stop-timeout 30 \ | ||
${{ github.run_id }} | ||
- name: Wait for server to start | ||
run: | | ||
TIMEOUT_SECONDS=400 | ||
START_TIME=$(date +%s) | ||
while ! docker logs palworld-server 2>&1 | grep -q "Setting breakpad minidump AppID"; do | ||
CURRENT_TIME=$(date +%s) | ||
ELAPSED_TIME=$((CURRENT_TIME - START_TIME)) | ||
if [ $ELAPSED_TIME -gt $TIMEOUT_SECONDS ]; then | ||
echo "Timeout reached. Server failed to start within $TIMEOUT_SECONDS seconds." | ||
exit 1 # or handle the failure accordingly | ||
fi | ||
echo "Waiting for server to start..." | ||
sleep 5 | ||
done | ||
- name: Test if server is up and running | ||
run: | | ||
sleep 100 | ||
if ! docker exec palworld-server rcon-cli Info | grep -q "Welcome to Pal Server"; then | ||
echo "Server may not have started successfully." | ||
exit 1 | ||
fi | ||
- name: Test if port 8211, 27015 and 25575 are listening | ||
run: | | ||
nc -z -u -v 127.0.0.1 8211 || exit 1 | ||
nc -z -u -v 127.0.0.1 27015 || exit 1 | ||
nc -z -v 127.0.0.1 25575 || exit 1 | ||
- name: Test the backup command functions | ||
run: | | ||
docker exec palworld-server backup | ||
if [ ! -f ./palworld/backups/palworld-save-*.tar.gz ]; then | ||
echo "Backup file not found. Backup command may have failed." | ||
exit 1 | ||
fi | ||
- name: Test if PalWorldSettings.ini is valid | ||
run: | | ||
if ! grep -q "\[\/Script\/Pal.PalGameWorldSettings\]" ./palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini; then | ||
echo "Error: PalWorldSettings.ini is missing the required section [/Script/Pal.PalGameWorldSettings]." | ||
exit 1 | ||
fi | ||
if ! grep -q "^OptionSettings=\(.*\)" ./palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini; then | ||
echo "Error: PalWorldSettings.ini is missing or has an invalid OptionSettings section." | ||
exit 1 | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.