[MIRROR] [MIRROR] Fixes borg climbing [MDB IGNORE] #1589
This file contains 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: CI Suite | |
on: | |
push: | |
branches: | |
- master | |
- 'project/**' | |
- 'gh-readonly-queue/master/**' | |
- 'gh-readonly-queue/project/**' | |
pull_request: | |
branches: | |
- master | |
- 'project/**' | |
merge_group: | |
branches: | |
- master | |
jobs: | |
run_linters: | |
if: ( !contains(github.event.head_commit.message, '[ci skip]') ) | |
name: Run Linters | |
runs-on: ubuntu-22.04 | |
concurrency: | |
group: run_linters-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Restore SpacemanDMM cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/SpacemanDMM | |
key: ${{ runner.os }}-spacemandmm | |
- 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 }}-yarn- | |
- name: Restore Node cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.nvm | |
key: ${{ runner.os }}-node-${{ hashFiles('dependencies.sh') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- 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 | |
- name: Restore Cutter cache | |
uses: actions/cache@v4 | |
with: | |
path: tools/icon_cutter/cache | |
key: ${{ runner.os }}-cutter-${{ hashFiles('dependencies.sh') }} | |
- name: Install Tools | |
run: | | |
pip3 install setuptools | |
bash tools/ci/install_node.sh | |
bash tools/ci/install_spaceman_dmm.sh dreamchecker | |
cargo install ripgrep --features pcre2 | |
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 | |
bash modular_nova/tools/nova_check_grep.sh # NOVA EDIT ADDITION - checking modular_nova code | |
- 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/tgstation_dme.json | |
tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/unit_tests.json | |
tools/bootstrap/python tools/ticked_file_enforcement/ticked_file_enforcement.py < tools/ticked_file_enforcement/schemas/modular_nova.json # NOVA EDIT ADDITION - modular tick enforcement | |
- name: Check Define Sanity | |
if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
run: tools/bootstrap/python -m define_sanity.check | |
- name: Check Trait Validity | |
if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
run: tools/bootstrap/python -m trait_validity.check | |
- name: Run DreamChecker | |
if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
shell: bash | |
run: ~/dreamchecker 2>&1 | bash tools/ci/annotate_dm.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: Check Cutter | |
if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
run: tools/bootstrap/python -m tools.icon_cutter.check | |
- 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 tgstation.dme | |
- name: Check Changelogs | |
if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
run: bash tools/ci/check_changelogs.sh | |
- name: Check Miscellaneous Files | |
if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
run: bash tools/ci/check_misc.sh | |
- name: Run TGUI Checks | |
if: steps.linter-setup.conclusion == 'success' && !cancelled() | |
run: tools/build/build --ci lint tgui-test | |
# ARK STATION EDIT START | |
# odlint: | |
# if: ( !contains(github.event.head_commit.message, '[ci skip]') ) | |
# name: "Lint with OpenDream" | |
# runs-on: ubuntu-22.04 | |
# concurrency: | |
# group: odlint-${{ github.head_ref || github.run_id }} | |
# cancel-in-progress: true | |
# steps: | |
# - uses: actions/checkout@v4 | |
# - uses: robinraju/[email protected] | |
# with: | |
# repository: "OpenDreamProject/OpenDream" | |
# tag: "latest" | |
# fileName: "DMCompiler_linux-x64.tar.gz" | |
# extract: true | |
# - name: Run OpenDream | |
# run: | | |
# ./DMCompiler_linux-x64/DMCompiler tgstation.dme --suppress-unimplemented --define=CIBUILDING | |
# ARK STATION EDIT END | |
compile_all_maps: | |
if: ( !contains(github.event.head_commit.message, '[ci skip]') ) | |
name: Compile Maps | |
needs: [collect_data] | |
runs-on: ubuntu-22.04 | |
concurrency: | |
group: compile_all_maps-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Restore BYOND cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/BYOND | |
key: ${{ runner.os }}-byond-${{ hashFiles('dependencies.sh') }} | |
- name: Compile All Maps | |
run: | | |
bash tools/ci/install_byond.sh | |
source $HOME/BYOND/byond/bin/byondsetup | |
tools/build/build --ci dm -DCIBUILDING -DCITESTING -DALL_MAPS | |
- name: Check client Compatibility | |
uses: tgstation/byond-client-compatibility-check@v3 | |
with: | |
dmb-location: tgstation.dmb | |
max-required-client-version: ${{needs.collect_data.outputs.max_required_byond_client}} | |
collect_data: | |
if: ( !contains(github.event.head_commit.message, '[ci skip]') ) | |
name: Collect data for other tasks | |
runs-on: ubuntu-22.04 | |
outputs: | |
maps: ${{ steps.map_finder.outputs.maps }} | |
alternate_tests: ${{ steps.alternate_test_finder.outputs.alternate_tests }} | |
max_required_byond_client: ${{ steps.max_required_byond_client.outputs.max_required_byond_client }} | |
concurrency: | |
group: find_all_maps-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Find Maps | |
id: map_finder | |
run: | | |
echo "$(ls -mw0 _maps/*.json)" > maps_output.txt | |
sed -i -e s+_maps/+\"+g -e s+.json+\"+g maps_output.txt | |
echo "Maps: $(cat maps_output.txt)" | |
echo "maps={\"paths\":[$(cat maps_output.txt)]}" >> $GITHUB_OUTPUT | |
- name: Find Alternate Tests | |
id: alternate_test_finder | |
run: | | |
ALTERNATE_TESTS_JSON=$(jq -nRc '[inputs | capture("^(?<major>[0-9]+)\\.(?<minor>[0-9]+): (?<map>.+)$")]' .github/alternate_byond_versions.txt) | |
echo "alternate_tests=$ALTERNATE_TESTS_JSON" >> $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 | |
run_all_tests: | |
if: ( !contains(github.event.head_commit.message, '[ci skip]') ) | |
name: Integration Tests | |
needs: [collect_data] | |
strategy: | |
fail-fast: false | |
matrix: | |
map: ${{ fromJSON(needs.collect_data.outputs.maps).paths }} | |
concurrency: | |
group: run_all_tests-${{ github.head_ref || github.run_id }}-${{ matrix.map }} | |
cancel-in-progress: true | |
uses: ./.github/workflows/run_integration_tests.yml | |
with: | |
map: ${{ matrix.map }} | |
max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}} | |
run_alternate_tests: | |
if: ( !contains(github.event.head_commit.message, '[ci skip]') && needs.find_all_maps.outputs.alternate_tests != '[]' ) | |
name: Alternate Tests | |
needs: [collect_data] | |
strategy: | |
fail-fast: false | |
matrix: | |
setup: ${{ fromJSON(needs.collect_data.outputs.alternate_tests) }} | |
concurrency: | |
group: run_all_tests-${{ github.head_ref || github.run_id }}-${{ matrix.setup.major }}.${{ matrix.setup.minor }}-${{ matrix.setup.map }} | |
cancel-in-progress: true | |
uses: ./.github/workflows/run_integration_tests.yml | |
with: | |
map: ${{ matrix.setup.map }} | |
major: ${{ matrix.setup.major }} | |
minor: ${{ matrix.setup.minor }} | |
max_required_byond_client: ${{needs.collect_data.outputs.max_required_byond_client}} | |
check_alternate_tests: | |
if: ( !contains(github.event.head_commit.message, '[ci skip]') && needs.find_all_maps.outputs.alternate_tests != '[]' ) | |
name: Check Alternate Tests | |
needs: [run_alternate_tests] | |
runs-on: ubuntu-22.04 | |
steps: | |
- run: echo Alternate tests passed. | |
test_windows: | |
if: ( !contains(github.event.head_commit.message, '[ci skip]') ) | |
name: Windows Build | |
needs: [collect_data] | |
runs-on: windows-latest | |
concurrency: | |
group: test_windows-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 }}-yarn- | |
- name: Compile | |
run: pwsh tools/ci/build.ps1 | |
env: | |
DM_EXE: "C:\\byond\\bin\\dm.exe" | |
- name: Check client Compatibility | |
uses: tgstation/byond-client-compatibility-check@v3 | |
with: | |
dmb-location: tgstation.dmb | |
max-required-client-version: ${{needs.collect_data.outputs.max_required_byond_client}} |