Commit graph

32 commits

Author SHA1 Message Date
Andrew Kaster
f71b909bed CMake+CI: Use the same preset names on every platform
Starting with CMake 3.30 and CMakePresets version 9, the include field
supports interesting macro expansions. We can now define platform
specific presets in separate files and include them in the top-level
CMakePresets.json, while keeping the same preset names across all
platforms. This avoids some preset explosion at the cost of some mostly
empty json files for each unix platform.

The CMake minimum required in the top-level and Lagom CMakeLists.txt
have not been adjusted in this patch, as that would have the effect of
changing the default policy versions and is a bit out of scope.
2026-01-17 12:18:46 -07:00
ayeteadoe
5279e0ce73 CMake: Remove ENABLE_WINDOWS_CI option and adjust presets to match Unix
ENABLE_WINDOWS_CI and the *_CI presets were initially added back when
the AK library and all the AK Test* executables were the only targets
that supported building and running in CI. Since then, almost all the
targets in the codebase are built on Windows besides the following:
    - LibLine
    - test-262-runner

Since these targets above are not required to actually run or test the
browser on Windows in its current experimental state, fully disabling
them should be fine for now.

ENABLE_WINDOWS_CI was also used to exclude test-web from ctest. This
can be fully disabled on Windows for now until proper runtime support
is added.

The remaining locations were all using ENABLE_WINDOWS_CI as a proxy for
ENABLE_ADDRESS_SANITIZER, so we can just be explicit instead.

The new presets map much more directly to the unix Release, Debug, and
Sanitizer presets which should make setting up ladybird on Windows less
confusing.

We also make the new Windows_Experimental_Release preset the default in
ladybird.py to match Unix.
2026-01-16 11:15:16 -07:00
Jelle Raaijmakers
323baf7a01 CI: Make Flatpak build part of regular CI builds
This means the Flatpak build will now execute as part of PRs and pushes
to our `master` branch.
2026-01-10 19:42:33 +01:00
Jelle Raaijmakers
c8d797797d CI: Move Windows build to ci.yml using new Blacksmith runners 2025-12-18 12:19:36 +01:00
Jelle Raaijmakers
04c1cff918 CI: Add Linux arm64 build to ci.yml
We already ran the distribution preset build in our nightly action, and
this adds it to the jobs we run for PRs as well.
2025-12-16 06:49:39 -05:00
Rocco Corsi
73b01a975a CI: Add All_Debug CI job 2025-10-27 08:46:02 -04:00
Jelle Raaijmakers
7ea0f13cd9 CI: Actually pass down secrets to lagom-template.yml
By default, reusable workflows do not inherit secrets. This caused our
vcpkg source asset cache to never be updated.
2025-07-21 11:58:03 +02:00
Jelle Raaijmakers
37b8ab54df CI+CMake: Remove most of the *_CI CMake presets
These existed because of their `vcpkg_ci` base preset, whose goal was to
enable vcpkg-supported caching on GitHub. We now handle vcpkg caching in
the CI steps, removing the necessity for all these *_CI preset variants.

This allows us to reuse `inputs.build_preset` in the test step, and we
can do away with the Windows-specific test step since it is now almost
identical to the Linux/macOS test step.

I've left in the Windows_CI presets, because that one actually results
in a different set of compiled files compared to the
Windows_Experimental presets.
2025-07-09 15:32:57 -06:00
Jelle Raaijmakers
60ced8197e CI: Move Windows CI to a separate workflow
Having the pull_request 'labeled' event trigger the main CI is much too
impactful, since it cancels running jobs and does not start anything if
the label is anything else than 'windows'. Let's go with a different
approach and put the Windows CI job in a separate workflow.

How this works:

  * Jobs are only run if the 'windows' label is present on the PR.
  * If a PR is opened or updated, existing jobs are canceled.
  * If a PR is (un)labeled, existing jobs are only canceled if the label
    was 'windows'. Other labels cause the job to be rescheduled.

As far as I can see, there's no way to prevent the job from being
rescheduled when labels other than 'windows' are being added or removed.
However, by not canceling the existing Windows job, we can try to create
a cache so the next run will be much quicker.
2025-06-22 12:47:28 +02:00
Jelle Raaijmakers
c6d848b100 CI: Disable the Windows CI job by using a boolean exclusion
Each matrix item now defines whether it is enabled, and if not, the job
conditionally disables itself. Apparantly we cannot use expressions in
`matrix.exclude`, but it should work in the items' definitions.

This has the added benefit that this makes the job show up as "skipped",
which could serve as a hint that it could be run on a PR.
2025-06-22 10:35:11 +02:00
Jelle Raaijmakers
b9d630edbc CI: Trigger Windows build on PR label 'windows'
Our CI matrix now includes Windows if the 'windows' label is added to
the PR. The job still takes too long to include it for every PR, but it
is certainly useful to have it run on Windows-specific PRs and PRs that
might break Windows builds.
2025-06-22 09:17:11 +02:00
Jelle Raaijmakers
c2ab0dafb2 CI: Set explicit job names for matrix strategy workflows
By default, matrix jobs generate a name for themselves by concatenating
their job name and all matrix variables into a big string. Changing the
runner labels causes the job name to change, which means we need to go
into GitHub and change the required checks since those are name-based.

Give all matrix workflows an explicit, more stable name.
2025-06-06 12:03:57 +02:00
Jelle Raaijmakers
53e8ee5443 CI: Run CI and JS artifact build on self-hosted runner
The GitHub-provided runner frequently times out and is plain slow most
of the time. And since Blacksmith does not yet offer macOS runners,
let's use our self-hosted runner that is currently idle most of the time
(when it's not running JS benchmarks).
2025-06-06 12:03:57 +02:00
Jelle Raaijmakers
c5a08e946a CI: Standardize usage of runner_labels across workflows
This is now always a JSON array of runner labels, inside a string. We
need it to be a string because `workflow_call` works with inputs that
do not natively support an array type.

No functional changes.
2025-06-06 12:03:57 +02:00
Jelle Raaijmakers
090a7a90c3 CI: Switch over remaining runners to Blacksmith.sh
Everything that's not self-hosted or macOS is now pointing to
Blacksmith.sh. Nightly jobs and JS artifact builds use 8VCPU machines,
while regular integration builds & tests use 16VCPU machines.
2025-05-27 12:10:55 +02:00
Jelle Raaijmakers
8e9bf01917 CI: Rename os input to runner
This more clearly describes what the value is being used for, and avoids
some confusion between `os` and `os_name` in `lagom-template.yml`.
2025-05-27 12:10:55 +02:00
Jelle Raaijmakers
01031bcccb Revert "CI: Only run builds after successful linting"
This reverts commits bf333eaea2 and
6f69a445bd.

The commit linter needs to run on event `pull_request_target` to have
access to its secret token, which means we cannot have a dependency on
that job from another workflow that is run as a result of the
`pull_request` event.

Additionally, the linters were no longer run for first-time
contributors. This isn't a huge problem but it was nice that a
preliminary check took place before running the full CI on their PRs.
2025-03-21 00:02:44 +01:00
Jelle Raaijmakers
bf333eaea2 CI: Only run commit linter for pull requests, not pushes
This requires us to always run the CI job and check the individual jobs'
results, since only having `needs:` will not work when `lint_commits` is
potentially skipped.
2025-03-20 11:39:29 +01:00
Jelle Raaijmakers
6f69a445bd CI: Only run builds after successful linting
We can prevent running builds unnecessarily by requiring the linters to
succeed first. If either the code or commit linter fails, it means the
author of the PR needs to rework their branch and after pushing their
changes, we need to do a full new CI run anyway.
2025-03-20 11:14:56 +01:00
Andrew Kaster
af5f23cdda CI: Use CMake build preset directly instead of a fuzzer flag 2025-02-21 12:05:18 +01:00
Andrew Kaster
34bf42cffa CI: Use arch variable in ci.yml instead of always using 'Lagom'
This was a relic from the SerenityOS CI, where architecture meant
what architecture to build Serenity for. For just ladybird, we might
want to build ladybird for multiple architectures per OS.
2025-02-21 12:05:18 +01:00
Jelle Raaijmakers
81eb66c6eb CI: Remove conditional execution based on changed paths
Originally we used the `paths-ignore` feature to skip the Lagom jobs if
no source code was changed. Afterwards, we enabled the 'required checks'
feature to prevent merging pull requests that have failing checks.
Unfortunately, marking a check as required means it always needs to be
successfully executed, even if a conditional caused it to be skipped.

By using the `paths-filter` action we were able to add the conditional
to the job instead, theoretically causing the 'required checks' feature
to start working again for documentation-only changes. As it turns out,
not the job, but the steps should get the new conditionals.

As that requires adding an `if` to every individual step and the
conditional execution has caused enough headaches since its
introduction, let's remove it for now and take the unfortunate execution
of CI jobs for granted.
2025-01-13 15:44:35 +01:00
Jelle Raaijmakers
8ddd9ea5f4 CI: Convert paths-ignore into separate job that checks changed paths
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.
2024-12-17 05:20:58 -08:00
rmg-x
d389fb440f CI: Ignore changes to Documentation related files
This will prevent CI from running if:
- the only changes included are under the Documentation folder, or
- the only changes included are *.md files in the root

See:
https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#example-excluding-paths
2024-11-23 10:44:54 +01:00
Timothy Flynn
acc74f5e72 CI: Upgrade to macOS 15
For some reason, Microsoft have decided to remove Xcode 16 from macOS 14
images. We require Xcode 16 for Swift 6.

See: https://github.com/actions/runner-images/issues/10703

Because macOS 15 images are still in preview, their availability is much
lower than macOS 14 images. To hopefully alleviate the amount of time we
are waiting in the runner queue, for now this only upgrades the workflow
which uses Swift.
2024-11-07 19:30:34 -05:00
Timothy Flynn
c412181683 CI: Switch Linux runners to Ubuntu 24.04 2024-10-02 06:41:20 -04:00
Timothy Flynn
0dd8fe1f0f CI: Run the clang plugins during PR workflows 2024-08-27 19:24:39 -04:00
Andreas Kling
c096608dd9 Meta: Update for GitHub org rename to LadybirdBrowser 2024-06-09 13:02:56 +02:00
Andrew Kaster
6d3a54e4a8 Meta: Update Documentation and CI for repo move 2024-06-03 10:53:53 +02:00
Timothy Flynn
0887dbfd80 CI: Move the nightly Lagom GCC CI to GitHub actions 2024-05-10 16:07:23 -04:00
Timothy Flynn
18b857fb64 CI: Convert the Lagom workflow into a reusable workflow
This will allow using the lagom-template.yaml file as a template for
the nightly GCC pipeline.
2024-05-10 16:07:23 -04:00
Timothy Flynn
ae6025987d CI: Convert the SerenityOS workflow into a reusable workflow
This will allow using the serenity-template.yaml file as a template for
the nightly code coverage pipeline.
2024-05-10 16:07:23 -04:00