The Cadwyn Order | A Rework and Lore Reflavouring of the Totod Order #22093
Workflow file for this run
This file contains hidden or 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
| name: BYOND Build | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| merge_group: | |
| branches: | |
| - main | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| start_gate: | |
| if: ( !contains(github.event.head_commit.message, '[ci skip]') ) | |
| name: Start Gate | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Mandatory Empty Step | |
| run: exit 0 | |
| run_linters: | |
| name: Run Linters | |
| needs: start_gate | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/SpacemanDMM | |
| key: ${{ runner.os }}-spacemandmm-${{ hashFiles('dependencies.sh') }} | |
| restore-keys: | | |
| ${{ runner.os }}-spacemandmm- | |
| - name: Setup Bun | |
| uses: ./.github/actions/setup_bun | |
| - name: Restore Bootstrap cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: tools/bootstrap/.cache | |
| key: ${{ runner.os }}-bootstrap-${{ hashFiles('tools/requirements.txt') }} | |
| restore-keys: | | |
| ${{ runner.os }}-bootstrap- | |
| - name: Restore Rust cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cargo | |
| key: ${{ runner.os }}-rust-${{ hashFiles('tools/ci/ci_dependencies.sh')}} | |
| restore-keys: | | |
| ${{ runner.os }}-rust- | |
| - name: Install OpenDream | |
| uses: robinraju/release-downloader@v1.12 | |
| with: | |
| repository: "OpenDreamProject/OpenDream" | |
| tag: "latest" | |
| fileName: "DMCompiler_linux-x64.tar.gz" | |
| extract: true | |
| - name: Install Tools | |
| run: | | |
| pip3 install setuptools | |
| bash tools/ci/install_spaceman_dmm.sh dreamchecker | |
| bash tools/ci/install_ripgrep.sh | |
| tools/bootstrap/python -c '' | |
| - name: Give Linters A Go | |
| id: linter-setup | |
| run: ":" | |
| - name: Run Grep Checks | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: bash tools/ci/check_grep.sh | |
| - name: Check unescaped brackets | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: tools/bootstrap/python tools/catch_unescaped_brackets.py | |
| - name: Ticked File Enforcement | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: | | |
| tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/vanderlin_dme.json | |
| tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json | |
| - name: Check Define Sanity | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: tools/bootstrap/python -m define_sanity.check | |
| - name: Lint With DreamChecker | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| shell: bash | |
| run: ~/dreamchecker 2>&1 | bash tools/ci/annotate_dm.sh | |
| - name: Lint With OpenDream | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: ./DMCompiler_linux-x64/DMCompiler vanderlin.dme --suppress-unimplemented --define=CIBUILDING | bash tools/ci/annotate_od.sh | |
| - name: Run Map Checks | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: | | |
| tools/bootstrap/python -m mapmerge2.dmm_test | |
| tools/bootstrap/python -m tools.maplint.source | |
| - name: Run DMI Tests | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: tools/bootstrap/python -m dmi.test | |
| - name: Check File Directories | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: bash tools/ci/check_filedirs.sh vanderlin.dme | |
| - name: Check Changelogs | |
| if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| run: bash tools/ci/check_changelogs.sh | |
| # Fails because of player books and I CBA rn | |
| # - name: Check Miscellaneous Files | |
| # if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
| # run: bash tools/ci/check_misc.sh | |
| compile_all_maps: | |
| name: Compile Maps | |
| needs: collect_data | |
| uses: ./.github/workflows/compile_all_maps.yml | |
| with: | |
| max_required_byond_client: ${{ needs.collect_data.outputs.max_required_byond_client }} | |
| collect_data: | |
| name: Collect data and setup caches for other tasks | |
| needs: start_gate | |
| runs-on: ubuntu-22.04 | |
| outputs: | |
| maps: ${{ steps.map_finder.outputs.maps }} | |
| max_required_byond_client: ${{ steps.max_required_byond_client.outputs.max_required_byond_client }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Find Maps | |
| id: map_finder | |
| run: | | |
| > maps_output.txt | |
| for file in _maps/*.json; do | |
| if ! jq -e '.exclude_from_ci == true' "$file" >/dev/null 2>&1; then | |
| echo "\"$(basename "$file" .json)\"" >> maps_output.txt | |
| else | |
| echo "Excluded: $file" | |
| fi | |
| done | |
| map_list=$(paste -sd, maps_output.txt) | |
| echo "Maps: $map_list" | |
| echo "maps={\"paths\":[$map_list]}" >> "$GITHUB_OUTPUT" | |
| - name: Collect byond client version configuration | |
| id: max_required_byond_client | |
| #the regex here does not filter out non-numbers because error messages about no input are less helpful then error messages about bad input (which includes the bad input) | |
| run: | | |
| echo "max_required_byond_client=$(grep -Ev '^[[:blank:]]{0,}#{1,}|^[[:blank:]]{0,}$' .github/max_required_byond_client.txt | tail -n1)" >> $GITHUB_OUTPUT | |
| - name: Set up BYOND cache | |
| uses: ./.github/actions/restore_or_install_byond | |
| run_all_tests: | |
| name: Integration Tests | |
| runs-on: ubuntu-24.04 | |
| needs: collect_data | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| map: ${{ fromJSON(needs.collect_data.outputs.maps).paths }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup database | |
| run: | | |
| sudo systemctl start mysql | |
| mysql -u root -proot -e 'CREATE DATABASE tg_ci;' | |
| mysql -u root -proot tg_ci < SQL/tgstation_schema.sql | |
| mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;' | |
| mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql | |
| - name: Install rust-g | |
| run: | | |
| bash tools/ci/install_rust_g.sh | |
| - name: Restore BYOND from cache | |
| uses: ./.github/actions/restore_or_install_byond | |
| - name: Compile and run tests | |
| run: | | |
| source $HOME/BYOND/byond/bin/byondsetup | |
| tools/build/build.sh --ci dm -DCIBUILDING -I"loop_checks" | |
| bash tools/ci/run_server.sh ${{ matrix.map }} | |
| - name: Check client Compatibility | |
| uses: tgstation/byond-client-compatibility-check@v3 | |
| with: | |
| dmb-location: vanderlin.dmb | |
| max-required-client-version: ${{needs.collect_data.outputs.max_required_byond_client}} | |
| completion_gate: # Serves as a non-moving target for branch rulesets | |
| if: always() && !cancelled() | |
| name: Completion Gate | |
| needs: [compile_all_maps, run_all_tests, run_linters] | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Decide whether the needed jobs succeeded or failed | |
| uses: re-actors/alls-green@release/v1 | |
| with: | |
| jobs: ${{ toJSON(needs) }} |