godot/.github/workflows/runner.yml

name: 🔗 GHA
on: [push, pull_request, merge_group]

concurrency:
  group: ci-${{ github.actor }}-${{ github.head_ref || github.run_number }}-${{ github.ref }}-runner
  cancel-in-progress: true

jobs:
  # First stage: Only static checks, fast and prevent expensive builds from running.

  static-checks:
    if: '!vars.DISABLE_GODOT_CI'
    name: 📊 Static checks
    uses: ./.github/workflows/static_checks.yml

  # Second stage: Run all the builds and some of the tests.

  android-build:
    name: 🤖 Android
    needs: static-checks
    uses: ./.github/workflows/android_builds.yml

  ios-build:
    name: 🍏 iOS
    needs: static-checks
    uses: ./.github/workflows/ios_builds.yml

  linux-build:
    name: 🐧 Linux
    needs: static-checks
    uses: ./.github/workflows/linux_builds.yml

  macos-build:
    name: 🍎 macOS
    needs: static-checks
    uses: ./.github/workflows/macos_builds.yml

  windows-build:
    name: 🏁 Windows
    needs: static-checks
    uses: ./.github/workflows/windows_builds.yml

  web-build:
    name: 🌐 Web
    needs: static-checks
    uses: ./.github/workflows/web_builds.yml

  # Third stage: Run auxiliary tests using build artifacts from previous jobs.

  # Can be turned off for PRs that intentionally break compat with godot-cpp,
  # until both the upstream PR and the matching godot-cpp changes are merged.
  godot-cpp-test:
    name: 🪲 Godot CPP
    # This can be changed to depend on another platform, if we decide to use it for
    # godot-cpp instead. Make sure to move the .github/actions/godot-api-dump step
    # appropriately.
    needs: linux-build
    uses: ./.github/workflows/godot_cpp_test.yml