mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 16:47:13 +01:00
This makes it far harder to find like, the first instance of master breaking in ci, which annoys me, and I'm not sure it's worth the time it saves. Reverts tgstation/tgstation#91163
97 lines
2.8 KiB
YAML
97 lines
2.8 KiB
YAML
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
|
|
|
|
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
|
|
uses: ./.github/workflows/run_linters.yml
|
|
|
|
collect_data:
|
|
name: Collect data and setup caches for other tasks
|
|
needs: start_gate
|
|
uses: ./.github/workflows/collect_data.yml
|
|
|
|
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 }}
|
|
|
|
setup_build_artifacts:
|
|
name: Setup build artifacts
|
|
needs: collect_data
|
|
uses: ./.github/workflows/setup_build_artifacts.yml
|
|
with:
|
|
build_versions: ${{ needs.collect_data.outputs.required_build_versions }}
|
|
|
|
run_all_tests:
|
|
name: Integration Tests
|
|
needs: [collect_data, setup_build_artifacts]
|
|
uses: ./.github/workflows/perform_regular_version_tests.yml
|
|
with:
|
|
maps: ${{ needs.collect_data.outputs.maps }}
|
|
map_config: ${{ needs.collect_data.outputs.map_config }}
|
|
max_required_byond_client: ${{ needs.collect_data.outputs.max_required_byond_client }}
|
|
|
|
run_alternate_tests:
|
|
if: needs.collect_data.outputs.alternate_tests != '[]'
|
|
name: Alternate Tests
|
|
needs: [collect_data, setup_build_artifacts]
|
|
uses: ./.github/workflows/perform_alternate_version_tests.yml
|
|
with:
|
|
alternate_tests: ${{ needs.collect_data.outputs.alternate_tests }}
|
|
default_max_required_byond_client: ${{ needs.collect_data.outputs.max_required_byond_client }}
|
|
|
|
compare_screenshots:
|
|
if: needs.collect_data.outputs.alternate_tests == '[]' || needs.run_alternate_tests.result == 'success'
|
|
needs: [collect_data, run_all_tests, run_alternate_tests]
|
|
name: Compare Screenshot Tests
|
|
uses: ./.github/workflows/compare_screenshots.yml
|
|
|
|
completion_gate: # Serves as a non-moving target for branch rulesets
|
|
if: always() && !cancelled()
|
|
name: Completion Gate
|
|
needs:
|
|
[
|
|
compare_screenshots,
|
|
compile_all_maps,
|
|
run_all_tests,
|
|
run_alternate_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) }}
|
|
allowed-skips: compare_screenshots
|