Skip to content

Feature/tests

Feature/tests #11

Workflow file for this run

name: Test server image
on:
workflow_dispatch:
pull_request:
branches:
- "main"
env:
TEST_TAG: jomik/screeps-server:test
jobs:
release:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node: [10, 12]
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3
- name: Build
uses: docker/build-push-action@4a13e500e55cf31b7a5d59a38ab2040ab0f42f56 # v5
with:
context: .
build-args: |
NODE_VERSION=${{ matrix.node }}
cache-from: type=gha
cache-to: type=gha,mode=max
tags: ${{ env.TEST_TAG }}
load: true
- name: Start the container
run: |
docker run --rm -di -p 21025:21025 -p 21028:21028 --env STEAM_KEY --name screeps -v ${CONFIG_FILE}:/screeps/config.yml ${TEST_TAG}
env:
STEAM_KEY: ${{ secrets.STEAM_KEY }}
CONFIG_FILE: ${{ format('{0}/{1}', github.workspace, 'test-config.yml') }}
- name: Wait for container to be healthy
uses: stringbean/docker-healthcheck-action@v3
with:
container: screeps
wait-time: 600
require-status: running
require-healthy: true
- name: Show container logs
if: always()
run: docker container logs screeps
- name: Check that mods are registered
run: |
set -eu
server_data=$(curl http://localhost:21025/api/version | jq -c '.serverData')
echo $server_data | jq -e '.features | any(.name == "screepsmod-auth")'
echo $server_data | jq -e '.features | any(.name == "screepsmod-admin-utils")'
echo $server_data | jq -e '.features | any(.name == "screepsmod-cli")'
- name: Check that bots are registered
run: |
set -eu
bots=$(curl -X POST http://localhost:21028/cli -d "help(bots)" | grep -A 10 "Bot AIs:")
echo $bots | grep 'simplebot' | grep "screepsbot-zeswarm"
- name: Stop container
if: always()
run: docker container stop screeps