name: CI on: push: branches: - master pull_request: branches: - master merge_group: jobs: run_linters: name: Run Linters runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Setup Cache uses: actions/cache@v4 with: path: $HOME/SpacemanDMM key: ${{ runner.os }}-spacemandmm - name: Install Tools run: | bash tools/ci/install_build_deps.sh bash tools/ci/install_dreamchecker.sh - uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' - uses: actions/setup-node@v4 with: node-version: 20 cache: 'yarn' cache-dependency-path: ./tgui/yarn.lock - run: pip install -r tools/requirements.txt - name: Run Linters run: | tools/ci/check_json.sh tgui/bin/tgui --ci python tools/ci/check_grep2.py python tools/ci/check_line_endings.py python tools/ci/check_file_names.py python tools/ci/unticked_files.py ${GITHUB_WORKSPACE} python tools/ci/illegal_dme_files.py ${GITHUB_WORKSPACE} python tools/ci/define_sanity.py python tools/ci/restrict_file_types.py python tools/ci/check_map_sizes.py python tools/ci/verify_sql_version.py python tools/ci/no_duplicate_definitions.py python -m tools.ci.check_icon_conflicts python -m tools.ci.check_icon_dupenames python -m tools.maplint.source --github - name: Run DreamChecker shell: bash run: ~/dreamchecker 2>&1 | bash tools/ci/annotate_dm.sh odlint: name: Lint with OpenDream runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Setup OD run: | bash tools/ci/setup_od.sh - name: Run OD run: | bash tools/ci/run_od.sh compile_all_maps: name: Compile All Maps runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - name: Setup Cache uses: actions/cache@v4 with: path: $HOME/BYOND key: ${{ runner.os }}-byond - name: Compile All Maps run: | tools/ci/install_byond.sh source $HOME/BYOND/byond/bin/byondsetup tools/ci/generate_maplist.sh DreamMaker -DMULTIINSTANCE -DCIMAP paradise.dme unit_tests_and_sql: name: Unit Tests + SQL Validation runs-on: ubuntu-22.04 strategy: fail-fast: false # Let all map tests run to completion matrix: maptype: ['/datum/map/boxstation', '/datum/map/deltastation', '/datum/map/metastation', '/datum/map/cerestation', '/datum/map/emeraldstation'] byondtype: ['STABLE'] services: mariadb: image: mariadb:latest env: MYSQL_ROOT_PASSWORD: root ports: - 3306 options: --health-cmd "mariadb-admin ping" --health-interval 10s --health-timeout 5s --health-retries 10 steps: - uses: actions/checkout@v4 - name: Setup Cache uses: actions/cache@v4 with: path: $HOME/BYOND key: ${{ runner.os }}-byond - name: Setup & Validate DB run: | sudo systemctl start mysql python3 tools/ci/generate_sql_scripts.py tools/ci/validate_sql.sh - name: Install RUST_G Deps run: | sudo dpkg --add-architecture i386 sudo apt update || true sudo apt install zlib1g-dev:i386 tools/ci/install_rustg.sh - name: Compile & Run Unit Tests run: | tools/ci/install_byond.sh '${{ matrix.byondtype }}' source $HOME/BYOND/byond/bin/byondsetup DreamMaker -DMULTIINSTANCE -DCIBUILDING paradise.dme echo '${{ matrix.maptype }}' > data/next_map.txt tools/ci/run_server.sh windows_dll_tests: name: Windows RUSTG Validation runs-on: windows-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.8.2' # Script was made for 3.8.2 architecture: 'x86' # This MUST be x86 - run: python tools/ci/validate_rustg_windows.py