mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-18 11:30:35 +01:00
62a59aca74
title
1048 lines
34 KiB
YAML
1048 lines
34 KiB
YAML
name: CI Suite
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
merge_group:
|
|
branches:
|
|
- master
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
MACRO_COUNT: 0
|
|
GENDER_COUNT: 6
|
|
TO_WORLD_COUNT: 176
|
|
|
|
#These variables are filled from dependencies.sh inside the steps, DO NOT SET THEM HERE
|
|
BYOND_MAJOR: ""
|
|
BYOND_MINOR: ""
|
|
RUST_G_VERSION: ""
|
|
FLYWAY_BUILD: ""
|
|
SPACEMAN_DMM_VERSION: ""
|
|
NODE_VERSION: ""
|
|
NODE_VERSION_LTS: ""
|
|
PYTHON_VERSION: ""
|
|
|
|
#If we want the runner to open an SSH shell for us to inspect it, fairly nieche, don't touch if you don't know what you're doing
|
|
RUNNER_DEBUG_SHELL: false
|
|
|
|
#This is used to know what triggered the jobs for running
|
|
CI_TRIGGER_REASON: ${{ github.event_name }}
|
|
#The maximum number of retries the unit tests (excluding linters) can make, if appropriate for them to
|
|
CI_MAX_RETRIES: 3
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
|
|
###########################################
|
|
################# BASH/AWK ################
|
|
###########################################
|
|
validate-structure:
|
|
name: Validate Structure
|
|
runs-on: ubuntu-24.04
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) }}
|
|
|
|
concurrency:
|
|
group: validate-structure-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Validate that we have everything to run, structure-wise: files, changelog, grep and indentation
|
|
- name: "Validate repository structure"
|
|
run: |
|
|
bash tools/ci/check_filedirs.sh aurorastation.dme
|
|
bash tools/ci/check_changelogs.sh
|
|
bash tools/ci/check_grep.sh $PWD
|
|
awk -f tools/indentation.awk **/*.dm
|
|
|
|
|
|
###########################################
|
|
############### EditorConfig ##############
|
|
###########################################
|
|
megalinter:
|
|
name: Validate EditorConfig Compliance
|
|
runs-on: ubuntu-24.04
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) }}
|
|
|
|
concurrency:
|
|
group: megalinter-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
APPLY_FIXES: EDITORCONFIG
|
|
APPLY_FIXES_EVENT: all
|
|
APPLY_FIXES_MODE: commit
|
|
|
|
steps:
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
# We use megalinter for this because it's fairly well updated and used
|
|
# https://megalinter.io/latest/
|
|
- name: Check EditorConfig Compliance
|
|
id: ml
|
|
uses: oxsecurity/megalinter/flavors/python@v8.4.0
|
|
# Env config options outlined in https://megalinter.io/configuration/
|
|
env:
|
|
PRINT_ALPACA: false
|
|
VALIDATE_ALL_CODEBASE: false
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
ENABLE: EDITORCONFIG
|
|
EXCLUDED_DIRECTORIES: tools/bootstrap/.cache/
|
|
FILTER_REGEX_INCLUDE: (.*\.dm$|.*\.dme$|.*\.sql$)
|
|
|
|
# Upload MegaLinter artifacts
|
|
- name: Upload Megalinter Artifacts
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: MegaLinter reports
|
|
path: |
|
|
megalinter-reports
|
|
mega-linter.log
|
|
retention-days: 5
|
|
|
|
|
|
###########################################
|
|
############### SPACEMANDMM ###############
|
|
###########################################
|
|
lint-spacemandmm:
|
|
name: Lint SpacemanDMM
|
|
runs-on: ubuntu-24.04
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) }}
|
|
needs: validate-structure
|
|
|
|
concurrency:
|
|
group: lint-spacemandmm-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores SpacemanDMM from the cache repository
|
|
- name: Restore SpacemanDMM cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/SpacemanDMM
|
|
key: ${{ runner.os }}-spacemandmm-${{ env.SPACEMAN_DMM_VERSION }}
|
|
|
|
- name: Install SpacemanDMM
|
|
run: |
|
|
bash tools/ci/install_spaceman_dmm.sh dreamchecker
|
|
|
|
#Run SpacemanDMM
|
|
- name: Run Dreamchecker
|
|
run: |
|
|
~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1
|
|
|
|
#Annotate findings in the PR
|
|
- name: Annotate Lints
|
|
uses: yogstation13/DreamAnnotate@v2
|
|
if: success() || failure()
|
|
with:
|
|
outputFile: output-annotations.txt
|
|
|
|
|
|
###########################################
|
|
################ OPENDREAM ################
|
|
###########################################
|
|
lint-opendream:
|
|
name: Lint OpenDream
|
|
runs-on: ubuntu-24.04
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) }}
|
|
needs: validate-structure
|
|
|
|
concurrency:
|
|
group: lint-opendream-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Setup the .NET dependency to what is needed by OpenDream
|
|
- name: Setup DotNet Dependency
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 9.0.100
|
|
|
|
#Prepare the precompiled OpenDream compiler
|
|
- name: Prepare OpenDream Compiler
|
|
run: |
|
|
cd $HOME
|
|
wget -v https://github.com/OpenDreamProject/OpenDream/releases/download/latest/DMCompiler_linux-x64.tar.gz
|
|
tar -xf DMCompiler_linux-x64.tar.gz
|
|
|
|
#Run OpenDream on the DME
|
|
- name: Run OpenDream
|
|
run: |
|
|
dotnet $HOME/DMCompiler_linux-x64/DMCompiler.dll --suppress-unimplemented aurorastation.dme
|
|
|
|
###########################################
|
|
############### TGUI LINTING ##############
|
|
###########################################
|
|
lint-tgui:
|
|
name: Lint TGUI
|
|
runs-on: ubuntu-24.04
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) }}
|
|
needs: validate-structure
|
|
|
|
concurrency:
|
|
group: lint-tgui-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Setup NodeJS using YARN as cache
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION_LTS }}
|
|
cache: 'yarn'
|
|
cache-dependency-path: tgui/yarn.lock
|
|
|
|
#Lint TGUI
|
|
- name: Check Tgui
|
|
run: |
|
|
tools/build/build --ci lint tgui-test
|
|
|
|
|
|
###########################################
|
|
############### MISC LINTING ##############
|
|
###########################################
|
|
lint-misc:
|
|
name: Lint Misc
|
|
runs-on: ubuntu-24.04
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) }}
|
|
needs: validate-structure
|
|
|
|
concurrency:
|
|
group: lint-misc-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores python cache
|
|
- name: Restore Python Cache
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
cache: 'pip'
|
|
|
|
#Install python packages and tools
|
|
- name: Install Python Packages
|
|
run: |
|
|
pip install -r tools/requirements.txt
|
|
pip3 install setuptools
|
|
|
|
- name: Check Validate DME
|
|
run: |
|
|
tools/bootstrap/python tools/validate_dme.py <aurorastation.dme
|
|
|
|
- name: Check Defines
|
|
run: |
|
|
tools/bootstrap/python -m define_sanity.check
|
|
|
|
- name: Check Icons
|
|
run: |
|
|
tools/bootstrap/python -m dmi.test
|
|
|
|
- name: Run Map Checks
|
|
run: |
|
|
tools/bootstrap/python -m mapmerge2.dmm_test
|
|
tools/bootstrap/python -m tools.maplint.source
|
|
|
|
###########################################
|
|
############## GENERIC TESTS ##############
|
|
###########################################
|
|
generic-tests:
|
|
name: Generic Tests
|
|
runs-on: ubuntu-24.04
|
|
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) && !(contains(github.event.head_commit.message, '[ut skip]'))}}
|
|
needs: [validate-structure, lint-spacemandmm, lint-opendream, lint-tgui, lint-misc]
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.11
|
|
ports:
|
|
- 3306
|
|
env:
|
|
MYSQL_USER: build
|
|
MYSQL_PASSWORD: build
|
|
MYSQL_DATABASE: game
|
|
MYSQL_ROOT_PASSWORD: root
|
|
|
|
concurrency:
|
|
group: unit-tests-generic-tests-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
strategy:
|
|
matrix:
|
|
map: [away_sites_testing]
|
|
pod: [generic]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
|
|
#This allows us to SSH into the pod, and it's only enabled if we're running in debug mode
|
|
- name: Setup TMATE session (Debug only)
|
|
uses: mxschmitt/action-tmate@v3
|
|
if: ${{ env.RUNNER_DEBUG_SHELL == true }}
|
|
with:
|
|
detached: true
|
|
timeout-minutes: 5
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores BYOND cache
|
|
- name: Restore BYOND cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/BYOND/*
|
|
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
|
|
|
|
- name: Restore FlyWay cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/flyway
|
|
key: ${{ runner.os }}-flyway-${{ env.FLYWAY_BUILD }}
|
|
|
|
#Add the x86 architecture and update apt-get's local indexes
|
|
- name: Prepare OS Environtment
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
|
|
#Installs the packages we need, from a cache
|
|
- name: Install OS Packages
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gcc-multilib zlib1g-dev:i386 libssl-dev:i386 libgcc-s1:i386 libc6:i386
|
|
version: 1.1
|
|
|
|
#And natively, the packages that break from a cache
|
|
- name: Install OS Packages (Native)
|
|
run: |
|
|
sudo apt-get install libgcc-s1:i386 libssl-dev:i386 libcurl4t64 libcurl4t64:i386
|
|
|
|
#Install flyway
|
|
- name: Install Flyway
|
|
run: |
|
|
tools/ci/install_flyway.sh
|
|
|
|
#Apply the database migration
|
|
- name: Apply Database Migrations (FlyWay)
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
run: |
|
|
$HOME/flyway/flyway-$FLYWAY_BUILD/flyway migrate -user=root -password=root -url="jdbc:mariadb://localhost:$PORT/game" -validateMigrationNaming="true"
|
|
|
|
- name: Install BYOND & rust_g
|
|
run: |
|
|
source dependencies.sh
|
|
bash tools/ci/install_byond.sh
|
|
source $HOME/BYOND/byond/bin/byondsetup
|
|
bash tools/ci/install_rust_g.sh
|
|
|
|
- name: Configure pod, build and run
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
POD: ${{ matrix.pod }}
|
|
run: |
|
|
export LD_LIBRARY_PATH=./:$PWD:$HOME/BYOND/byond/bin:/usr/local/lib:$LD_LIBRARY_PATH
|
|
scripts/dm.sh -DUNIT_TEST -M${{ matrix.map }} aurorastation.dme
|
|
grep "0 errors, 1 warning" build_log.txt
|
|
echo -n "$POD" > config/unit_test/identifier.txt
|
|
|
|
cp config/example/* config/ && cp config/ut/config-db.txt config/config.txt && cp config/ut/dbconfig.txt config/dbconfig.txt
|
|
echo "PORT $PORT" >> config/dbconfig.txt
|
|
$HOME/BYOND/byond/bin/DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
|
|
grep "All Unit Tests Passed" log.txt
|
|
(! grep "runtime error:" log.txt)
|
|
|
|
- name: Upload Condensed UT Log
|
|
uses: actions/upload-artifact@v4
|
|
if: failure() || runner.debug
|
|
with:
|
|
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
|
|
path: ./data/logs/**/condensed.log
|
|
retention-days: 5
|
|
|
|
###########################################
|
|
########### CREATE AND DESTROY ############
|
|
###########################################
|
|
create-and-destroy:
|
|
name: Create and Destroy Test
|
|
runs-on: ubuntu-24.04
|
|
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) && !(contains(github.event.head_commit.message, '[ut skip]'))}}
|
|
needs: [validate-structure, lint-spacemandmm, lint-opendream, lint-tgui, lint-misc]
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.11
|
|
ports:
|
|
- 3306
|
|
env:
|
|
MYSQL_USER: build
|
|
MYSQL_PASSWORD: build
|
|
MYSQL_DATABASE: game
|
|
MYSQL_ROOT_PASSWORD: root
|
|
|
|
concurrency:
|
|
group: unit-tests-create-and-destroy-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
strategy:
|
|
matrix:
|
|
map: [away_sites_testing]
|
|
pod: [create_and_destroy]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
|
|
#This allows us to SSH into the pod, and it's only enabled if we're running in debug mode
|
|
- name: Setup TMATE session (Debug only)
|
|
uses: mxschmitt/action-tmate@v3
|
|
if: ${{ env.RUNNER_DEBUG_SHELL == true }}
|
|
with:
|
|
detached: true
|
|
timeout-minutes: 5
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores BYOND cache
|
|
- name: Restore BYOND cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/BYOND/*
|
|
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
|
|
|
|
- name: Restore FlyWay cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/flyway
|
|
key: ${{ runner.os }}-flyway-${{ env.FLYWAY_BUILD }}
|
|
|
|
#Add the x86 architecture and update apt-get's local indexes
|
|
- name: Prepare OS Environtment
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
|
|
#Installs the packages we need, from a cache
|
|
- name: Install OS Packages
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gcc-multilib zlib1g-dev:i386 libssl-dev:i386 libgcc-s1:i386 libc6:i386
|
|
version: 1.1
|
|
|
|
#And natively, the packages that break from a cache
|
|
- name: Install OS Packages (Native)
|
|
run: |
|
|
sudo apt-get install libgcc-s1:i386 libssl-dev:i386 libcurl4t64 libcurl4t64:i386
|
|
|
|
#Install flyway
|
|
- name: Install Flyway
|
|
run: |
|
|
tools/ci/install_flyway.sh
|
|
|
|
#Apply the database migration
|
|
- name: Apply Database Migrations (FlyWay)
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
run: |
|
|
$HOME/flyway/flyway-$FLYWAY_BUILD/flyway migrate -user=root -password=root -url="jdbc:mariadb://localhost:$PORT/game" -validateMigrationNaming="true"
|
|
|
|
- name: Install BYOND & rust_g
|
|
run: |
|
|
source dependencies.sh
|
|
bash tools/ci/install_byond.sh
|
|
source $HOME/BYOND/byond/bin/byondsetup
|
|
bash tools/ci/install_rust_g.sh
|
|
|
|
- name: Configure pod, build and run
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
POD: ${{ matrix.pod }}
|
|
run: |
|
|
export LD_LIBRARY_PATH=./:$PWD:$HOME/BYOND/byond/bin:/usr/local/lib:$LD_LIBRARY_PATH
|
|
scripts/dm.sh -DUNIT_TEST -M${{ matrix.map }} aurorastation.dme
|
|
grep "0 errors, 1 warning" build_log.txt
|
|
echo -n "$POD" > config/unit_test/identifier.txt
|
|
|
|
cp config/example/* config/ && cp config/ut/config-db.txt config/config.txt && cp config/ut/dbconfig.txt config/dbconfig.txt
|
|
echo "PORT $PORT" >> config/dbconfig.txt
|
|
$HOME/BYOND/byond/bin/DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
|
|
grep "All Unit Tests Passed" log.txt
|
|
(! grep "runtime error:" log.txt)
|
|
|
|
- name: Upload Condensed UT Log
|
|
uses: actions/upload-artifact@v4
|
|
if: failure() || runner.debug
|
|
with:
|
|
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
|
|
path: ./data/logs/**/condensed.log
|
|
retention-days: 5
|
|
|
|
|
|
|
|
###########################################
|
|
################ TEST MAPS ################
|
|
###########################################
|
|
map-tests:
|
|
name: Run Map Tests
|
|
runs-on: ubuntu-24.04
|
|
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) && !(contains(github.event.head_commit.message, '[ut skip]'))}}
|
|
needs: [validate-structure, lint-spacemandmm, lint-opendream, lint-tgui, lint-misc]
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.11
|
|
ports:
|
|
- 3306
|
|
env:
|
|
MYSQL_USER: build
|
|
MYSQL_PASSWORD: build
|
|
MYSQL_DATABASE: game
|
|
MYSQL_ROOT_PASSWORD: root
|
|
|
|
concurrency:
|
|
group: unit-tests-map-tests-${{ matrix.map }}-${{ matrix.pod }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
strategy:
|
|
matrix:
|
|
map: [runtime, sccv_horizon, exoplanet_testing]
|
|
pod: [maptest]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
|
|
#This allows us to SSH into the pod, and it's only enabled if we're running in debug mode
|
|
- name: Setup TMATE session (Debug only)
|
|
uses: mxschmitt/action-tmate@v3
|
|
if: ${{ env.RUNNER_DEBUG_SHELL == true }}
|
|
with:
|
|
detached: true
|
|
timeout-minutes: 5
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores BYOND cache
|
|
- name: Restore BYOND cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/BYOND/*
|
|
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
|
|
|
|
- name: Restore FlyWay cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/flyway
|
|
key: ${{ runner.os }}-flyway-${{ env.FLYWAY_BUILD }}
|
|
|
|
#Add the x86 architecture and update apt-get's local indexes
|
|
- name: Prepare OS Environtment
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
|
|
#Installs the packages we need, from a cache
|
|
- name: Install OS Packages
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gcc-multilib zlib1g-dev:i386 libssl-dev:i386 libgcc-s1:i386 libc6:i386
|
|
version: 1.1
|
|
|
|
#And natively, the packages that break from a cache
|
|
- name: Install OS Packages (Native)
|
|
run: |
|
|
sudo apt-get install libgcc-s1:i386 libssl-dev:i386 libcurl4t64 libcurl4t64:i386
|
|
|
|
#Install flyway
|
|
- name: Install Flyway
|
|
run: |
|
|
tools/ci/install_flyway.sh
|
|
|
|
#Apply the database migration
|
|
- name: Apply Database Migrations (FlyWay)
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
run: |
|
|
$HOME/flyway/flyway-$FLYWAY_BUILD/flyway migrate -user=root -password=root -url="jdbc:mariadb://localhost:$PORT/game" -validateMigrationNaming="true"
|
|
|
|
- name: Install BYOND & rust_g
|
|
run: |
|
|
source dependencies.sh
|
|
bash tools/ci/install_byond.sh
|
|
source $HOME/BYOND/byond/bin/byondsetup
|
|
bash tools/ci/install_rust_g.sh
|
|
|
|
- name: Configure pod, build and run
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
POD: ${{ matrix.pod }}
|
|
run: |
|
|
export LD_LIBRARY_PATH=./:$PWD:$HOME/BYOND/byond/bin:/usr/local/lib:$LD_LIBRARY_PATH
|
|
scripts/dm.sh -DUNIT_TEST -M${{ matrix.map }} aurorastation.dme
|
|
grep "0 errors, 1 warning" build_log.txt
|
|
echo -n "$POD" > config/unit_test/identifier.txt
|
|
|
|
cp config/example/* config/ && cp config/ut/config-db.txt config/config.txt && cp config/ut/dbconfig.txt config/dbconfig.txt
|
|
echo "PORT $PORT" >> config/dbconfig.txt
|
|
$HOME/BYOND/byond/bin/DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
|
|
grep "All Unit Tests Passed" log.txt
|
|
(! grep "runtime error:" log.txt)
|
|
|
|
- name: Upload Condensed UT Log
|
|
uses: actions/upload-artifact@v4
|
|
if: failure() || runner.debug
|
|
with:
|
|
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
|
|
path: ./data/logs/**/condensed.log
|
|
retention-days: 5
|
|
|
|
|
|
|
|
###########################################
|
|
############# EXOPLANETS TESTS ############
|
|
###########################################
|
|
exoplanet_testing:
|
|
name: Run Exoplanet Tests
|
|
runs-on: ubuntu-24.04
|
|
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) && !(contains(github.event.head_commit.message, '[ut skip]'))}}
|
|
needs: [validate-structure, lint-spacemandmm, lint-opendream, lint-tgui, lint-misc]
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.11
|
|
ports:
|
|
- 3306
|
|
env:
|
|
MYSQL_USER: build
|
|
MYSQL_PASSWORD: build
|
|
MYSQL_DATABASE: game
|
|
MYSQL_ROOT_PASSWORD: root
|
|
|
|
concurrency:
|
|
group: unit-tests-exoplanet_testing-${{ matrix.map }}-${{ matrix.pod }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
strategy:
|
|
matrix:
|
|
map: [exoplanet_testing]
|
|
pod: [exoplanet_testing-1, exoplanet_testing-2, exoplanet_testing-3]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
|
|
#This allows us to SSH into the pod, and it's only enabled if we're running in debug mode
|
|
- name: Setup TMATE session (Debug only)
|
|
uses: mxschmitt/action-tmate@v3
|
|
if: ${{ env.RUNNER_DEBUG_SHELL == true }}
|
|
with:
|
|
detached: true
|
|
timeout-minutes: 5
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores BYOND cache
|
|
- name: Restore BYOND cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/BYOND/*
|
|
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
|
|
|
|
- name: Restore FlyWay cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/flyway
|
|
key: ${{ runner.os }}-flyway-${{ env.FLYWAY_BUILD }}
|
|
|
|
#Add the x86 architecture and update apt-get's local indexes
|
|
- name: Prepare OS Environtment
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
|
|
#Installs the packages we need, from a cache
|
|
- name: Install OS Packages
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gcc-multilib zlib1g-dev:i386 libssl-dev:i386 libgcc-s1:i386 libc6:i386
|
|
version: 1.1
|
|
|
|
#And natively, the packages that break from a cache
|
|
- name: Install OS Packages (Native)
|
|
run: |
|
|
sudo apt-get install libgcc-s1:i386 libssl-dev:i386 libcurl4t64 libcurl4t64:i386
|
|
|
|
#Install flyway
|
|
- name: Install Flyway
|
|
run: |
|
|
tools/ci/install_flyway.sh
|
|
|
|
#Apply the database migration
|
|
- name: Apply Database Migrations (FlyWay)
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
run: |
|
|
$HOME/flyway/flyway-$FLYWAY_BUILD/flyway migrate -user=root -password=root -url="jdbc:mariadb://localhost:$PORT/game" -validateMigrationNaming="true"
|
|
|
|
- name: Install BYOND & rust_g
|
|
run: |
|
|
source dependencies.sh
|
|
bash tools/ci/install_byond.sh
|
|
source $HOME/BYOND/byond/bin/byondsetup
|
|
bash tools/ci/install_rust_g.sh
|
|
|
|
- name: Configure pod, build and run
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
POD: ${{ matrix.pod }}
|
|
run: |
|
|
export LD_LIBRARY_PATH=./:$PWD:$HOME/BYOND/byond/bin:/usr/local/lib:$LD_LIBRARY_PATH
|
|
scripts/dm.sh -DUNIT_TEST -M${{ matrix.map }} aurorastation.dme
|
|
grep "0 errors, 1 warning" build_log.txt
|
|
echo -n "$POD" > config/unit_test/identifier.txt
|
|
|
|
cp config/example/* config/ && cp config/ut/config-db.txt config/config.txt && cp config/ut/dbconfig.txt config/dbconfig.txt
|
|
echo "PORT $PORT" >> config/dbconfig.txt
|
|
$HOME/BYOND/byond/bin/DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
|
|
grep "All Unit Tests Passed" log.txt
|
|
(! grep "runtime error:" log.txt)
|
|
|
|
- name: Upload Condensed UT Log
|
|
uses: actions/upload-artifact@v4
|
|
if: failure() || runner.debug
|
|
with:
|
|
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
|
|
path: ./data/logs/**/condensed.log
|
|
retention-days: 5
|
|
|
|
|
|
###########################################
|
|
############# TEST AWAY SITES #############
|
|
###########################################
|
|
away-sites-tests:
|
|
name: Run Map Tests
|
|
runs-on: ubuntu-24.04
|
|
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) && !(contains(github.event.head_commit.message, '[ut skip]'))}}
|
|
needs: [validate-structure, lint-spacemandmm, lint-opendream, lint-tgui, lint-misc]
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.11
|
|
ports:
|
|
- 3306
|
|
env:
|
|
MYSQL_USER: build
|
|
MYSQL_PASSWORD: build
|
|
MYSQL_DATABASE: game
|
|
MYSQL_ROOT_PASSWORD: root
|
|
|
|
concurrency:
|
|
group: unit-tests-away-sites-tests-${{ matrix.map }}-${{ matrix.pod }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
strategy:
|
|
matrix:
|
|
map: [away_sites_testing]
|
|
pod: [awaysites-1, awaysites-2, awaysites-3]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
|
|
#This allows us to SSH into the pod, and it's only enabled if we're running in debug mode
|
|
- name: Setup TMATE session (Debug only)
|
|
uses: mxschmitt/action-tmate@v3
|
|
if: ${{ env.RUNNER_DEBUG_SHELL == true }}
|
|
with:
|
|
detached: true
|
|
timeout-minutes: 5
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores BYOND cache
|
|
- name: Restore BYOND cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/BYOND/*
|
|
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
|
|
|
|
- name: Restore FlyWay cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/flyway
|
|
key: ${{ runner.os }}-flyway-${{ env.FLYWAY_BUILD }}
|
|
|
|
#Add the x86 architecture and update apt-get's local indexes
|
|
- name: Prepare OS Environtment
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
|
|
#Installs the packages we need, from a cache
|
|
- name: Install OS Packages
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gcc-multilib zlib1g-dev:i386 libssl-dev:i386 libgcc-s1:i386 libc6:i386
|
|
version: 1.1
|
|
|
|
#And natively, the packages that break from a cache
|
|
- name: Install OS Packages (Native)
|
|
run: |
|
|
sudo apt-get install libgcc-s1:i386 libssl-dev:i386 libcurl4t64 libcurl4t64:i386
|
|
|
|
#Install flyway
|
|
- name: Install Flyway
|
|
run: |
|
|
tools/ci/install_flyway.sh
|
|
|
|
#Apply the database migration
|
|
- name: Apply Database Migrations (FlyWay)
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
run: |
|
|
$HOME/flyway/flyway-$FLYWAY_BUILD/flyway migrate -user=root -password=root -url="jdbc:mariadb://localhost:$PORT/game" -validateMigrationNaming="true"
|
|
|
|
- name: Install BYOND & rust_g
|
|
run: |
|
|
source dependencies.sh
|
|
bash tools/ci/install_byond.sh
|
|
source $HOME/BYOND/byond/bin/byondsetup
|
|
bash tools/ci/install_rust_g.sh
|
|
|
|
- name: Configure pod, build and run
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
POD: ${{ matrix.pod }}
|
|
run: |
|
|
export LD_LIBRARY_PATH=./:$PWD:$HOME/BYOND/byond/bin:/usr/local/lib:$LD_LIBRARY_PATH
|
|
scripts/dm.sh -DUNIT_TEST -M${{ matrix.map }} aurorastation.dme
|
|
grep "0 errors, 1 warning" build_log.txt
|
|
echo -n "$POD" > config/unit_test/identifier.txt
|
|
|
|
cp config/example/* config/ && cp config/ut/config-db.txt config/config.txt && cp config/ut/dbconfig.txt config/dbconfig.txt
|
|
echo "PORT $PORT" >> config/dbconfig.txt
|
|
$HOME/BYOND/byond/bin/DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
|
|
grep "All Unit Tests Passed" log.txt
|
|
(! grep "runtime error:" log.txt)
|
|
|
|
- name: Upload Condensed UT Log
|
|
uses: actions/upload-artifact@v4
|
|
if: failure() || runner.debug
|
|
with:
|
|
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
|
|
path: ./data/logs/**/condensed.log
|
|
retention-days: 5
|
|
|
|
###########################################
|
|
################ TEST RUINS ###############
|
|
###########################################
|
|
ruins-tests:
|
|
name: Run Ruins Tests
|
|
runs-on: ubuntu-24.04
|
|
|
|
if: ${{ !(contains(github.event.head_commit.message, '[ci skip]')) && !(contains(github.event.head_commit.message, '[ut skip]'))}}
|
|
needs: [validate-structure, lint-spacemandmm, lint-opendream, lint-tgui, lint-misc]
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:10.11
|
|
ports:
|
|
- 3306
|
|
env:
|
|
MYSQL_USER: build
|
|
MYSQL_PASSWORD: build
|
|
MYSQL_DATABASE: game
|
|
MYSQL_ROOT_PASSWORD: root
|
|
|
|
concurrency:
|
|
group: unit-tests-ruins-tests-${{ matrix.map }}-${{ matrix.pod }}-${{ github.head_ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
strategy:
|
|
matrix:
|
|
map: [runtime]
|
|
pod: [ruins-1, ruins-2, ruins-3]
|
|
fail-fast: false
|
|
|
|
steps:
|
|
|
|
#This allows us to SSH into the pod, and it's only enabled if we're running in debug mode
|
|
- name: Setup TMATE session (Debug only)
|
|
uses: mxschmitt/action-tmate@v3
|
|
if: ${{ env.RUNNER_DEBUG_SHELL == true }}
|
|
with:
|
|
detached: true
|
|
timeout-minutes: 5
|
|
|
|
#Checkout the repository
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
#Initialize the environment variables
|
|
- name: Set ENV variables
|
|
run: bash dependencies.sh
|
|
|
|
#Restores BYOND cache
|
|
- name: Restore BYOND cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/BYOND/*
|
|
key: ${{ runner.os }}-byond-${{ env.BYOND_MAJOR }}-${{ env.BYOND_MINOR }}
|
|
|
|
- name: Restore FlyWay cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/flyway
|
|
key: ${{ runner.os }}-flyway-${{ env.FLYWAY_BUILD }}
|
|
|
|
#Add the x86 architecture and update apt-get's local indexes
|
|
- name: Prepare OS Environtment
|
|
run: |
|
|
sudo dpkg --add-architecture i386
|
|
sudo apt-get update
|
|
|
|
#Installs the packages we need, from a cache
|
|
- name: Install OS Packages
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
with:
|
|
packages: gcc-multilib zlib1g-dev:i386 libssl-dev:i386 libgcc-s1:i386 libc6:i386
|
|
version: 1.1
|
|
|
|
#And natively, the packages that break from a cache
|
|
- name: Install OS Packages (Native)
|
|
run: |
|
|
sudo apt-get install libgcc-s1:i386 libssl-dev:i386 libcurl4t64 libcurl4t64:i386
|
|
|
|
#Install flyway
|
|
- name: Install Flyway
|
|
run: |
|
|
tools/ci/install_flyway.sh
|
|
|
|
#Apply the database migration
|
|
- name: Apply Database Migrations (FlyWay)
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
run: |
|
|
$HOME/flyway/flyway-$FLYWAY_BUILD/flyway migrate -user=root -password=root -url="jdbc:mariadb://localhost:$PORT/game" -validateMigrationNaming="true"
|
|
|
|
- name: Install BYOND & rust_g
|
|
run: |
|
|
source dependencies.sh
|
|
bash tools/ci/install_byond.sh
|
|
source $HOME/BYOND/byond/bin/byondsetup
|
|
bash tools/ci/install_rust_g.sh
|
|
|
|
- name: Configure pod, build and run
|
|
env:
|
|
PORT: ${{ job.services.mariadb.ports[3306] }}
|
|
POD: ${{ matrix.pod }}
|
|
run: |
|
|
export LD_LIBRARY_PATH=./:$PWD:$HOME/BYOND/byond/bin:/usr/local/lib:$LD_LIBRARY_PATH
|
|
scripts/dm.sh -DUNIT_TEST -M${{ matrix.map }} aurorastation.dme
|
|
grep "0 errors, 1 warning" build_log.txt
|
|
echo -n "$POD" > config/unit_test/identifier.txt
|
|
|
|
cp config/example/* config/ && cp config/ut/config-db.txt config/config.txt && cp config/ut/dbconfig.txt config/dbconfig.txt
|
|
echo "PORT $PORT" >> config/dbconfig.txt
|
|
$HOME/BYOND/byond/bin/DreamDaemon aurorastation.dmb -invisible -trusted -core 2>&1 | tee log.txt
|
|
grep "All Unit Tests Passed" log.txt
|
|
(! grep "runtime error:" log.txt)
|
|
|
|
- name: Upload Condensed UT Log
|
|
uses: actions/upload-artifact@v4
|
|
if: failure() || runner.debug
|
|
with:
|
|
name: condensed-${{ matrix.map }}-${{ matrix.pod }}.log
|
|
path: ./data/logs/**/condensed.log
|
|
retention-days: 5
|