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: 179 #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-22.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-22.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@v7.10.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-22.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-22.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 - name: Download OpenDream Compiler run: | bash tools/ci/install_od.sh - name: Run OpenDream run: | tools/ci/run_od.sh ########################################### ############### TGUI LINTING ############## ########################################### lint-tgui: name: Lint TGUI runs-on: ubuntu-22.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 #Restore YARN (Node packages) cache - name: Restore Yarn cache uses: actions/cache@v4 with: path: tgui/.yarn/cache key: ${{ runner.os }}-yarn-${{ hashFiles('tgui/yarn.lock') }} restore-keys: | ${{ runner.os }}-build- ${{ runner.os }}- #Setup NodeJS using YARN as cache - name: Setup Node uses: actions/setup-node@v3 with: cache-dependency-path: tgui/yarn.lock node-version: ${{ env.NODE_VERSION_LTS }} cache: 'yarn' #Lint TGUI - name: Check Tgui run: | tools/build/build --ci lint tgui-test ########################################### ############### MISC LINTING ############## ########################################### lint-misc: name: Lint Misc runs-on: ubuntu-22.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 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-22.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 #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-22.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 #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-22.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 #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-22.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 #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-22.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 #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