mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-02-08 16:55:01 +00:00
We need to invoke the CI jobs every time, even if nothing relevant has changed, because we marked them as required status checks for PRs. If they are not invoked, the associated status checks remain in a 'pending' state indefinitely not allowing us to (auto-)merge the PR.
74 lines
2.3 KiB
YAML
74 lines
2.3 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref || format('{0}-{1}', github.ref, github.run_number) }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# Look at changed paths in the commit or PR to determine whether we need to run the complete CI job. If only
|
|
# documentation or .md files were changed, we wouldn't need to compile and check anything here.
|
|
path-changes:
|
|
runs-on: ubuntu-24.04
|
|
permissions:
|
|
pull-requests: read
|
|
outputs:
|
|
source_excluding_docs: ${{ steps.filter.outputs.source_excluding_docs }}
|
|
steps:
|
|
# Only need a checkout if we're not running as part of a PR
|
|
- uses: actions/checkout@v4
|
|
if: github.event_name != 'pull_request'
|
|
|
|
# FIXME: change into `dorny/paths-filter@v3` when https://github.com/dorny/paths-filter/pull/226 is merged
|
|
- uses: petermetz/paths-filter@5ee2f5d4cf5d7bdd998a314a42da307e2ae1639d
|
|
id: filter
|
|
with:
|
|
predicate-quantifier: every # all globs below must match
|
|
filters: |
|
|
source_excluding_docs:
|
|
- '**'
|
|
- '!Documentation/**'
|
|
- '!*.md'
|
|
|
|
# CI matrix - runs the job in lagom-template.yml with different configurations.
|
|
Lagom:
|
|
needs: path-changes
|
|
if: github.repository == 'LadybirdBrowser/ladybird' && needs.path-changes.outputs.source_excluding_docs == 'true'
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os_name: ['Linux']
|
|
os: [ubuntu-24.04]
|
|
fuzzer: ['NO_FUZZ']
|
|
toolchain: ['GNU']
|
|
clang_plugins: [false]
|
|
|
|
include:
|
|
- os_name: 'Linux'
|
|
os: ubuntu-24.04
|
|
fuzzer: 'NO_FUZZ'
|
|
toolchain: 'Clang'
|
|
clang_plugins: true
|
|
|
|
- os_name: 'macOS'
|
|
os: macos-15
|
|
fuzzer: 'NO_FUZZ'
|
|
toolchain: 'Clang'
|
|
clang_plugins: false
|
|
|
|
- os_name: 'Linux'
|
|
os: ubuntu-24.04
|
|
fuzzer: 'FUZZ'
|
|
toolchain: 'Clang'
|
|
clang_plugins: false
|
|
|
|
uses: ./.github/workflows/lagom-template.yml
|
|
with:
|
|
toolchain: ${{ matrix.toolchain }}
|
|
os_name: ${{ matrix.os_name }}
|
|
os: ${{ matrix.os }}
|
|
fuzzer: ${{ matrix.fuzzer }}
|
|
clang_plugins: ${{ matrix.clang_plugins }}
|