Commit graph

716 commits

Author SHA1 Message Date
Andrew Kaster
f294427d3d CI: Install CMake in test262 runner workflow
It's unclear what the version is supposed to be on this runner, but
work around any ambiguity by installing CMake explicitly. Previously,
the version was less than 3.30, as a CMake preset update requiring at
least 3.30 caused the workflow to fail.
2026-01-17 13:20:38 -07:00
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
dependabot[bot]
cc4f7375ae CI: Bump JamesIves/github-pages-deploy-action from 4.7.6 to 4.8.0
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.7.6 to 4.8.0.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.7.6...v4.8.0)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-version: 4.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-13 16:20:50 +01:00
Timothy Flynn
3bdb79c870 Meta: Allow a couple of extra characters in long URLs in commit messages
This allows the number sign (for anchors) and semi-colons.
2026-01-10 20:25:16 +01: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
45ab134de9 CI: Use self-hosted macOS runners for nightly builds
These have been broken for a while now. Add the `self-hosted` tag so we
at least use the same runners we already use for PR checks.
2025-12-30 17:10:16 +01:00
Jelle Raaijmakers
2bd6bf69ac CI: Select Xcode version 26.2
This is the version we have installed on our macOS runners.
2025-12-22 20:19:25 -05:00
Jelle Raaijmakers
48c6208846 CI: Switch to Blacksmith runners for our Flatpak builds 2025-12-19 14:25:29 +01:00
Jelle Raaijmakers
2cc2992011 CI: Make the Windows nightly build use Blacksmith runners 2025-12-18 12:19:36 +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
6c6fdad47a CI: Support wasm-tools download for Windows and arm64
We don't use wasm-tools there yet, but let's at least not do weird
things like download the aarch64 macOS version on Windows x86_64.
2025-12-16 15:18:21 +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
Jelle Raaijmakers
765fecdd3f CI: Always override PKG_CONFIG_EXECUTABLE on Linux arm64
This seems to be necessary regardless of whether we use clang plugins,
otherwise we fail the build because we're not able to see libdrm.
2025-12-16 06:49:39 -05:00
Jelle Raaijmakers
27918262e1 CI: Use correct input variable for LibWeb artifact upload 2025-12-16 12:26:28 +01:00
dependabot[bot]
2405c796f9 CI: Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-16 09:25:00 +01:00
Timothy Flynn
367f73cd30 CI: Use correct wasm tools version variable in test262 setup 2025-12-13 12:55:55 -05:00
Ali Mohammad Pur
cdf47d29c0 Meta: Install wasm-tools for the test262 CI step too 2025-12-13 10:53:26 -05:00
Ali Mohammad Pur
0d097e1d6a Meta: Pull wasm-tools in CI instead of wabt
We'll be using wasm-tools for Wasm testsuite generation in the next few
commits.
2025-12-12 19:12:53 +01:00
Timothy Flynn
01856e36e7 CI: Set persist-credentials to false in the test262 checkout step
The new guidance from JamesIves/github-pages-deploy-action is to set
this to false to enable cross-repo deployments with a token.
2025-12-10 10:34:50 -05:00
Timothy Flynn
b1f672de81 CI: Pin the checkout action to version 6.0.1
If we pin to only v6, we will have a harder time catching breakage due
to minor version updates. This happened recently with the test262 CI
workflow.
2025-12-10 07:43:33 -05:00
Timothy Flynn
f3be3d9ce3 CI: Update github-pages-deploy-action to version 4.7.5
This contains a fix for cross-repo deployments.
2025-12-10 07:43:33 -05:00
Timothy Flynn
44fa3e866e CI: Remove LADYBIRD_BOT_TOKEN from the Ladybird checkout step
We discovered the issue with failed deployments was due to an update to
the checkout action that did not interact well with the deploy action.
There is a fix in the deploy action already. See:

1d137fdcc7

However, a tagged release for the deploy action is not yet available,
and pulling the action at a specific commit hash does not work.

For now, let's pin the checkout action at a known-good version. We can
update both actions when the deploy action has a tagged release. In the
meantime, this just removes the token with write-permissions from the
Ladybird checkout.
2025-12-09 17:16:06 +01:00
Timothy Flynn
46ce9b0775 CI: Set the PAT on the main test262 checkout step
In the deploy step, git commands are run from the main directory, so
that is where the PAT must be set.
2025-12-03 11:29:19 -05:00
Timothy Flynn
61d9d6bebb CI: Set the Ladybird token when checking out libjs-data
According to: https://github.com/orgs/community/discussions/26694
We need to set the token when checking out the repo as well.
2025-12-03 10:06:20 -05:00
Timothy Flynn
0c9d15788e CI: Give the test262 runner write permissions
Shot in the dark to fix our ability to push changes to the libjs-data
repo.
2025-12-03 08:27:11 -05:00
dependabot[bot]
5fa3b48a57 CI: Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-25 08:44:55 +01:00
dependabot[bot]
8002c06c13 CI: Bump JamesIves/github-pages-deploy-action from 4.7.3 to 4.7.4
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.7.3 to 4.7.4.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.7.3...v4.7.4)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-version: 4.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-11 00:28:42 +01:00
Timothy Flynn
583164e412 Meta: Upgrade prettier to version 3.6.2
This version is installed by default nowadays and has slight differences
from 3.3.3.
2025-10-31 19:55:50 -04:00
Timothy Flynn
b7ecdad685 CI: Use same versions of wabt on Linux and macOS 2025-10-31 18:10:45 -04:00
dependabot[bot]
32cfb4e7d8 CI: Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 21:41:38 -07:00
Rocco Corsi
73b01a975a CI: Add All_Debug CI job 2025-10-27 08:46:02 -04:00
Jelle Raaijmakers
ba78e3d4be CI+Meta: Synchronize commit linting rules
Our CI commit linter now evaluates commit messages line by line, similar
to `Meta/lint-commit.sh`.

The URL rule was updated to allow any freestanding URL, optionally
prefixed by whitespace.
2025-10-24 13:09:46 +02:00
Jelle Raaijmakers
e3a56ef913 CI: Move commit message line rule down in list
This synchronizes the order of rules between `Meta/lint-commit.sh` and
this workflow. No functional changes.
2025-10-24 13:09:46 +02:00
Jelle Raaijmakers
e197ab8ff6 CI: Ignore CR in commit message linting patterns
We already check if CR is present in the first rule, and although it
would be nice to see all errors at once, we expect people to run
`Meta/lint-commit.sh` before pushing as well. This simplifies our
patterns a bit.
2025-10-24 13:09:46 +02:00
Jelle Raaijmakers
27cb5d8c1e CI: Switch Flatpak builds back temporarily to GitHub runners
Until Blacksmith runners enable redirect_dir, the flatpak builder
container is unable to install updates for packages in its system dirs.
2025-10-16 14:26:19 +02:00
Jelle Raaijmakers
188384710a CI: Remove options with default values from Flatpak build
No functional changes.
2025-10-16 14:26:19 +02:00
Jelle Raaijmakers
373b2838db CI: Don't run merge conflict labeler on forks 2025-10-15 10:36:07 +02:00
Jelle Raaijmakers
980e715668 CI: Run js-benchmarks with optional wasm binary
If we run js-benchmarks against older builds that did not yet include
the wasm repl, make sure we skip extracting the file and passing the
`--wasm-executable` argument.
2025-10-15 10:36:07 +02:00
Jelle Raaijmakers
21932661c2 CI: Update .github/actions/ folder to latest when building older commits
Older commits also have older setup code, such as requiring older XCode
versions - which fails on newer macOS systems. Let's always use the
latest custom actions so we can retroactively support these older
builds.
2025-10-14 14:19:22 +02:00
Jelle Raaijmakers
d349e91339 CI: Inject COMMIT file into archives when missing
This allows us to run js-benchmarks against older commits and have the
workflow correctly identify the commit used to build the binaries. In
order to actually build commits where the wasm binary was not yet built,
we have to account for missing archives as well.
2025-10-14 12:47:25 +02:00
Jelle Raaijmakers
5153b9ef45 CI: Trigger Flatpak CI builds with 'flatpak' PR label
Similar to the 'windows' label, this triggers Flatpak builds for x86_64
and aarch64.
2025-10-10 09:28:38 +02:00
dependabot[bot]
52009170da CI: Bump gradle/actions from 4 to 5
Bumps [gradle/actions](https://github.com/gradle/actions) from 4 to 5.
- [Release notes](https://github.com/gradle/actions/releases)
- [Commits](https://github.com/gradle/actions/compare/v4...v5)

---
updated-dependencies:
- dependency-name: gradle/actions
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-09 17:46:22 +02:00
Jelle Raaijmakers
a91031e1f3 CI: Use COMMIT file in JS repl archive to determine build commit hash
The upstream workflow `head_sha` contains the wrong hash in case the
workflow was run manually against a provided commit hash. We use the
COMMIT file that cpack adds to the archive to determine the actual
commit hash that was used to build the binaries.

Note that this will only work for builds since the introduction of that
file, so we cannot process benchmarks for older commits, unfortunately.
2025-10-08 14:42:09 +02:00
Jelle Raaijmakers
d696f107be CI: Add js-benchmarks commit hash to webhook payload 2025-10-07 15:12:21 +02:00
Jelle Raaijmakers
5e9d2461f3 CI: Always run latest version of js-benchmarks
Currently we default to GITHUB_REF for the checkout of js-benchmarks,
and if we've built up a large backlog of benchmark jobs to run, this can
mean we're running against a severely outdated version of js-benchmarks.

This new behavior allows us to see a failed js-benchmarks job, fix the
bug, and restart the failed job. This is important since we're testing a
specific commit and build from the upstream JS/WASM workflow.
2025-10-07 14:32:11 +02:00
Jelle Raaijmakers
988c7bb758 CI: Run js-benchmarks with --continue-on-failure for manual builds
If we ever want to rerun benchmarks for an older commit, e.g. if we
added new benchmarks that we would want historical performance data on,
we need to consider that some benchmarks might fail because of a bug or
missing feature. For manual runs of the upstream build, pass
`--continue-on-failure` so we simply skip these failing benchmarks.
2025-10-06 21:33:06 +02:00
Jelle Raaijmakers
5f12c091ac CI: Add manual workflow dispatch to JS/WASM artifacts build
This allows us to manually kick off jobs for the JS/WASM artifacts
build with an explicit reference to build, which is useful if we want to
generate benchmark results for older commits.

Note that this workflow does not actually produce benchmark results -
that's the job of another workflow. The webhook storing the benchmark
results only appends new benchmarks; existing ones will be kept.

Also note that the GitHub checkout action defaults to the default
reference if `inputs.reference_to_build` is not provided, such as in the
case of a push to the master branch.
2025-10-06 16:17:32 +02:00
Jelle Raaijmakers
941cfd8026 Revert "CI: Pin js-benchmarks to current master"
This reverts commit 8d46a11748.

The updated webhook supports the newer output format of our
js-benchmarks tool, allowing us to store multiple result types per
benchmark and subtest combination.
2025-10-06 14:15:47 +02:00
Pavel Shliak
fb97fde15b Meta: Fix libjs-test262 CI workflow
libtool is required to build gperf
2025-09-28 11:22:55 -04:00
InvalidUsernameException
a975988f9c Meta: Update vcpkg baseline 2025-09-25 21:14:29 -04:00
dependabot[bot]
4f31e492e7 CI: Bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-19 12:34:45 +02:00
Jelle Raaijmakers
49817a1c6a CI+Meta: Add option to enable baseline CPU target for CI
We currently have the issue that our macOS builds are being hosted by
both Apple M1 and M4 runners. By default, these target `-mcpu=apple-m1`
and `-mcpu=apple-m3` respectively, causing their ccache artifacts to be
incompatible and effectively thrashing each other's ccache cache on each
run.

Add a new CMake option `ENABLE_CI_BASELINE_CPU` that toggles a baseline
`-mcpu/-march` compile option for each of the supported build platforms.
When disabled (the default), we now default to `-march=native` which on
Linux could theoretically lead to better performance.

The new CPU baseline is used by the `lagom-template.yml` and
`js-and-wasm-artifacts.yml` workflows, since they both produce artifacts
or caches that might be picked up by other runners. We also enable it
for Flatpak builds, so they target a fixed architecture instead of
whatever architecture the action runner that picked up the job has.
2025-09-16 10:53:15 -04:00
dependabot[bot]
5d9e51d675 CI: Bump actions/github-script from 7 to 8
Bumps [actions/github-script](https://github.com/actions/github-script) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-09 12:32:16 +02:00
dependabot[bot]
2569ef0f40 CI: Bump actions/setup-java from 4 to 5
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4 to 5.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-27 08:48:21 +02:00
ayeteadoe
4fa8238a46 Meta: Install qtbase and qtmultimedia vcpkg ports on Windows 2025-08-23 16:04:36 -06:00
ayeteadoe
ee3c033de2 LibWebView: Enable in Windows CI 2025-08-23 16:04:36 -06:00
Jelle Raaijmakers
8d46a11748 CI: Pin js-benchmarks to current master
The output format for js-benchmarks is going to change, and while the
webhook parsing the results has not yet been updated pin the
js-benchmark checkout to a specific commit.
2025-08-21 00:30:42 +02:00
Erik Kurzinger
dc3cb2122d CI: Add libdrm-dev dependency
We need the drm_fourcc.h header to use the dma-bufs in LibGfx
2025-08-19 00:30:22 +02:00
Luke Wilde
12dc771186 CI: Create wasm artifact and use it in the js-benchmarks workflow 2025-08-14 10:02:35 +02:00
Jelle Raaijmakers
d6761ab251 CI: Remove Microphone access step for macOS
This no longer seems to be necessary.
2025-08-12 14:31:41 +02:00
dependabot[bot]
60ca15c0de CI: Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-08-12 07:05:19 -04:00
Jelle Raaijmakers
a64cee528c CI: Update to Xcode 16.4
Our current macOS runners have Xcode 16.4 installed.
2025-08-11 18:25:34 +02:00
ayeteadoe
da2969008b CI: Enable compiler cache for Windows 2025-08-04 22:05:47 +02:00
Andrew Kaster
09c031fa96 CI: Add nightly flatpak workflow
This will build both aarch64 and x86_64 flatpaks nightly. The test jobs
I did with the default GitHub runners took ~1h30m for aarch64 and
~2h30m for x86_64, but this will hopefully improve over time as the
cache is built up. And be better time-wise on the blacksmith runners.

Disk space is a large concern with these flatpak builds. A naive script
on my local machine showed that we needed a max of 10.3 GiB of free
space for the x86_64 build, with clang as the compiler. For some reason,
building with default gcc 14 uses more disk space than that, bumping
up against the default 14 GiB free space limit guaranteed by GitHub for
their default runners.
2025-07-23 16:27:49 -06:00
Andrew Kaster
358a24b461 CI: Give Windows CI workflow a unique name
This should ™️ make it easier to identify the workflow in the
GitHub Actions UI pane on the website.
2025-07-23 16:27:49 -06: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
62236fa503 CI: Enable vcpkg cache update for fuzzers build
This was a cache race condition between the fuzzers and sanitizer
builds, where the vcpkg binary cache could have been updated before the
sanitizer builds started doing their vcpkg install, causing the source
assets to never be updated at all.
2025-07-21 11:58:03 +02:00
Jelle Raaijmakers
3a232880ed Meta: Remove Polar from FUNDING.yml and FAQ.md
The issue bounty system was discontinued, so remove it from our GitHub
repo's sponsoring links and documentation.
2025-07-10 10:04:33 +02:00
Andrew Kaster
b6b030aa43 CI: Update preset name for test262 job 2025-07-09 23:41:58 +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
4a57fe4392 CI+CMake: Enable vcpkg source assets cache
I've set up a shared vcpkg source assets cache using Azurite. By
default, it runs in read-only mode allowing anyone who builds Ladybird
to use the cache to speed up downloads of source tarballs. This should
alleviate some of the more slower vcpkgs downloads I've been seeing
lately.

CI runs on master put vcpkg in readwrite mode, updating the cache for
everyone.
2025-07-09 15:32:57 -06:00
Jelle Raaijmakers
de36d9fb85 CI: Unify the Linux/macOS/Windows build steps
For macOS, we now default to ENABLE_QT=OFF and use the same build step
as for the other platforms. We keep a single separate macOS + Qt build
step to prevent bitrotting that part of the code.

The Windows step ran in a different directory and skipped the install
step; we can just use the Linux behavior here.
2025-07-09 15:32:57 -06:00
ayeteadoe
f737ec2570 CMake: Rename SERENITY_* helper variables to LADYBIRD_* 2025-07-03 23:19:41 +02:00
ayeteadoe
185be4011b CI: Make Windows CI label name consistent with the preset name 2025-06-25 10:12:34 -06:00
Andrew Kaster
0205f05319 CI: Add a sanity check to the JS artifacts workflow
This workflow has been broken in the past, so let's add a sanity check
to ensure that the REPL works.
2025-06-24 13:28:58 -06:00
Andrew Kaster
6cfb98fa7d CI: Add arm64 Linux JS artifact to GitHub Actions workflow 2025-06-24 13:28:58 -06:00
InvalidUsernameException
f8f399c9c0 CI: Fix path to test-dumps folder of LibWeb tests for artifact upload
The CI runs are supposed to upload test dumps for failed LibWeb tests as
artifacts. However, the path for the artifact upload was wrong, it
likely regressed in 9a5b31ccd1.
2025-06-23 11:35:37 -06:00
Jelle Raaijmakers
1be79a2b7b CI: Move nightly Windows build to nightly-lagom
Since lagom-template supports Windows builds now, we no longer need a
separate nightly-windows workflow.
2025-06-22 12:47:28 +02: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
433bbcfe19 CI: Make lagom-template.yml work for Windows builds 2025-06-22 09:17:11 +02:00
Jelle Raaijmakers
8493f74be1 CI: Remove PR-specific step from nightly Windows build 2025-06-22 09:17:11 +02:00
Jelle Raaijmakers
86c8dbbf90 CI: Restore cache action checks on inputs.ccache_path
These got removed by accident.
2025-06-18 18:58:00 +02:00
Jelle Raaijmakers
573696b10f CI: Use GitHub's actions cache instead of Blacksmith's for now
We were seeing lower ccache hitrates using Blacksmith's cache, and after
some investigation it turned out that actions running on our `master`
branch were pulling the caches from PRs. Blacksmith is looking into
this - for now revert to GitHub's cache until the issue is resolved.
2025-06-18 12:39:45 -04:00
ayeteadoe
1893f89799 Meta: Update Windows Nightly CI to Windows 2025 Image with Sanitizers
Github Actions just updated windows-2025 to LLVM 20, which is the
minimum version required for us to build and run tests with sanitizers

Now that we've added support, enable the Sanitizer build in CI.
2025-06-17 15:33:26 -06:00
dependabot[bot]
3f5c339d59 CI: Bump dawidd6/action-download-artifact from 9 to 11
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 9 to 11.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v9...v11)

---
updated-dependencies:
- dependency-name: dawidd6/action-download-artifact
  dependency-version: '11'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-17 09:25:36 +02:00
Andrew Kaster
0b7a6ef4c9 Meta: Record desired swift toolchain version in .swift-version
This makes it easier to ensure everyone is using the same version of
Swift when building the project, especially for CI environments.

`swiftly install` will automatically read this file and install the
specified version if it is not already installed. It also tells swiftly
what version to use for the project, independent of the global default
version.
2025-06-11 11:54:52 -06:00
ayeteadoe
f2a10bda32 CMake: Simplify preset structure for Windows
As we now are only officially supporting the Ninja generator for
Windows, the old preset structure can now be simplified. Also, we
now follow the naming conventions of the non-hidden presets.
2025-06-10 11:29:29 -06:00
Timothy Flynn
c204149bbd Meta+CI: Enforce python linting with ruff
We could use flake8 for linting, but ruff is compatible with black
formatting out-of-the-box. It also seems to catch more than flake8,
such as unnecessary f-strings.
2025-06-09 11:25:14 -04: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
777228acca CI: Only run stalebot on the Ladybird repository
Let's not annoy people who fork the repository with a job that will
never be able to run.
2025-06-05 16:51:39 +02:00
Andrew Kaster
645eac1734 CI: Use new name for macOS JS artifact in js-benchmarks workflow
This was missed in 1a0b83a59f
2025-05-30 14:20:44 -06:00
Andrew Kaster
1a0b83a59f CI: Rename macOS js REPL artifact to match name of tgz
We haven't built a universal binary in over 11 months. The name is
confusing, and actually breaks esvu on macOS. The fact that nobody
has complained suggests that this is not a common use case..
2025-05-30 11:28:06 -06:00
Timothy Flynn
9d0c307341 CI: Add a quoteless cache restore key for GitHub runners
The way we echo the cache keys for output variables strips these quotes.
So when we save the caches at the end of CI, the keys are sans quotes.

This patch adds an extra cache restore key without quotes to allow jobs
to fetch their own caches again. This will become moot once all runners
are able to use the Blacksmith cache action.
2025-05-30 09:03:35 -04:00
Andrew Kaster
a94605febe CI: Bump swift toolchain to main-snapshot-2025-05-26 2025-05-27 20:33:42 -06:00
Andrew Kaster
e90a0dc69c CI: Update alternatives for llvm-symbolizer on Ubuntu jobs
Swift jobs were failing a test due to the llvm-symbolizer not being
available in the default location next to the clang binary. swift.org
toolchains don't ship this tool, so LSAN suppressions were not being
applied, failing TestWOFF2.

This was hard to reproduce locally, because I have always had a set of
alternatives set up for the full suite of LLVM tools on my machine.
2025-05-27 20:33:42 -06:00
Andrew Kaster
cd333fe3e9 CI: Use Blacksmith cache action only on Blacksmith runners
Their cache action only works on their runners. For jobs that run on
other runners, we have use the default cache action. At least until they
update their cache product to work or fallback on other runners.
2025-05-27 17:42:25 -06:00
Jelle Raaijmakers
922bf2033f CI: Use Blacksmith's drop-in replacement for actions/cache
Their caches have better locality with their own runners and offer
higher potential throughput speeds (up to 400 MB/s).
2025-05-27 12:10:55 +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
08b81b37b1 CI: Reindent inputs in lagom-template.yml 2025-05-27 12:10:55 +02:00
Jelle Raaijmakers
be766ecb30 CI: Switch over some workflows to Blacksmith.sh runners
The people over at Blacksmith.sh have generously offered usage of their
runners for our organization, so let's try to switch over some simple
workflows. The runners should be drop-in replacements.
2025-05-27 09:50:24 +02:00
Jelle Raaijmakers
47e1aa054b CI: Use explicit run IDs to download JS binary and call webhook
When we try to retrieve benchmark results in the webhook call, we cannot
use the `head_sha` parameter since the workflow run might have a
different `head_sha` associated with it than the upstream workflow run.
This can happen when the JS repl binary workflow runs, a new commit is
pushed to master, followed by a JS benchmarks workflow run causing this
latter run to be associated with a different commit ID.

This extends the webhook payload to include the current run ID, which
can eventually be used by the webhook script to specifically download
the benchmark results associated with the current run.

Additionally, this changes the JS artifact download to use the upstream
run ID which seems nicer to do anyway.
2025-05-26 17:18:40 +02:00
Timothy Flynn
9e8336c04f Meta: Lint python files with black
It's the industry standard nowadays. This also lets us add a flag to the
lint-python.sh script to overwrite our python files in place.
2025-05-22 16:21:42 +02:00
Andrew Kaster
811d53d295 CI: Add nightly Windows CI job
This job uses the windows_ci_ninja preset to build just the
components and unit tests that are known to work with ClangCL on the
amd64-pc-windows-msvc target triple.

As a nightly job, its failures are non-blocking for any PRs, though
they should be fixed eventually or the job will get turned off by
email-annoyed maintainers.
2025-05-21 15:57:59 -06:00
Timothy Flynn
47569c1714 CI: Do not install clang in the JS benchmarks workflow
It's not needed. This is primarily to reduce the number of places needed
to be updated on the next clang rollout.
2025-05-15 18:53:49 +02:00
Jelle Raaijmakers
9f044cb547 CI: Only add LLVM repository if it is missing
For our js-benchmarks and libjs-test262 workflow runs, we already know
that they're provisioned with these repositories and can skip adding the
key and repo altogether.
2025-05-15 15:13:55 +02:00
Jelle Raaijmakers
44db17f273 CI: Switch from wget to curl
We were using both wget and curl arbitrarily; use curl exclusively since
that is installed by default on our machines and containers. Fixes the
js-benchmarks workflow.
2025-05-15 14:22:38 +02:00
Andrew Kaster
09ed4bd265 CI: Manually add apt repo for llvm 20 to all relevant jobs 2025-05-14 19:43:52 -04:00
Timothy Flynn
d30f6f1b11 Meta: Switch to clang-format-20 as the standard formatter 2025-05-14 02:01:59 -06:00
Timothy Flynn
70d2b0b6f3 CI: Update the Clang pipeline to Clang 20 2025-05-14 02:01:59 -06:00
Timothy Flynn
a65bbae4c9 CI: Update the GCC pipeline to GCC 14
Although GCC 15 is released, it is not available on Ubuntu 22.04 LTS via
the ubuntu-toolchain-r/test PPA.
2025-05-14 02:01:59 -06:00
Timothy Flynn
85ee56a702 CI: Use clang for the test262 build
We currently have optimizations that apply only to clang, so we might as
well make use of them.
2025-05-14 02:01:59 -06:00
Timothy Flynn
3d59efa7e1 CI: Use clang for the fuzzer's lagom tools build
It's kind of weird to be mixing gcc and clang here.
2025-05-14 02:01:59 -06:00
Andrew Kaster
fc6237325b CI: Install clang-tools-19 to ensure clang-scan-deps is available 2025-05-12 03:22:23 -06:00
Andrew Kaster
ac6b99800b CI: Bump swift snapshot to main-snapshot-2025-04-30 2025-05-09 23:14:27 -06:00
rmg-x
d64e6abe08 CI+Toolchain: Remove unnecessary BuildVcpkg.sh
This script was rewritten in Python in commit:
c92d9cce42

Since it just executes the Python anyway, remove it and do that in CI
ourselves.
2025-04-29 16:34:24 +01:00
Andrew Kaster
6eb0e9ab38 CI: Use a raw actions/cache step for vcpkg instead of the x-gha source
This is a workaround for the deprecation of the cache v1 REST API that
was replaced with a new protobuf RPC based API this month. vcpkg was
using the private cache backend API without the knowledge of the GitHub
actions team, and was thus broken by the deprecation.

While we wait for Microsoft to talk to Microsoft to get this feature
restored, we can use the raw actions/cache step to get almost the same
cache behavior. The only difference is that the cache will be less fine
grained than the per-package cache that VCPKG_BINARY_SOURCES of x-gha
was giving us before.
2025-04-24 17:40:39 -06:00
Andrew Kaster
3c45d155a6 CI: Bump swiftly toolchain version to main-snapshot-2025-04-12
The latest snapshot includes some bug fixes that are required in order
to include LibWeb-Swift.h in our C++ files.
2025-04-16 09:02:27 -06:00
Jelle Raaijmakers
edaac0f2ee CI: Add missing event key to JS benchmarks workflow 2025-04-15 14:23:27 +02:00
Jelle Raaijmakers
1b4a4b0225 CI: Use workflow run's event commit SHA for JS benchmarks
Chaining workflows does not cause the subsequently spawned workflow runs
to use the same event, but rather it uses the latest head SHA based on
the branch it runs on. This would cause the JS benchmarks jobs to not be
able to find artifacts (if a new JS repl workflow was started before the
previous one could finish) and/or assign the wrong commit SHA to the
benchmark results.

Since `github.event` contains information about the original workflow
run that spawned the JS benchmarks jobs, we can take the commit SHA from
there and use it to download the correct artifact.
2025-04-15 13:53:07 +02:00
Jelle Raaijmakers
1f81f75add CI: Remove concurrency configuration for JS artifacts and benchmarks
We had concurrency set on the JS artifacts and JS benchmarks workflows
causing them to not run in parallel for the same combination of
(workflow, OS name). You'd expect that this causes a FIFO queue to exist
of the jobs to run sequentially, but in reality GitHub maintains a
single job to prioritize and cancels all others. We don't want that for
our artifacts and benchmarks: we want them to run on each push.

For example, a new push could have workflows getting cancelled because
someone restarted a previously failed workflow, resulting in the
following message:

  "Canceling since a higher priority waiting request for [..] exists"

By removing the concurrency setting from these workflows, we make use of
all available runners to execute the jobs and potentially run some of
them in parallel. For the benchmarks however, we currently only have one
matching self-hosted runner per job, and as such they are still not run
in parallel.
2025-04-15 12:47:45 +02:00
Jelle Raaijmakers
d616ab0d95 CI: Remove EOL escapes from single quoted string in js-benchmarks
Don't need these, they mess up the JSON payload.
2025-04-15 10:55:05 +02:00
Jelle Raaijmakers
612b0cdddd CI: Add architecture to js-benchmarks webhook callback 2025-04-15 10:55:05 +02:00
Jelle Raaijmakers
8eb16633fe CI: Fix SHA-256 signature in webhook callback for js-benchmarks workflow 2025-04-14 17:09:41 +02:00
Jelle Raaijmakers
e18e7d6019 CI: Simplify workflow name for js-benchmarks.yml
No need to state 'Run the' part.
2025-04-14 14:15:49 +02:00
Jelle Raaijmakers
e6f674fb7f CI: Run benchmarks on macOS as well
This introduces a matrix for the js-benchmarks workflow and runs both
the Linux x86_64 and macOS arm64 JS repl builds against our benchmarks
repository.
2025-04-14 14:15:49 +02:00
Jelle Raaijmakers
4600f9a5b0 CI: Call benchmarks webhook with curl instead of a dedicated action
The workflow-webhook action that was being used didn't work on macOS or
machines without Docker, so let's create the payload ourselves, sign it
and send it over using plain old `curl`.
2025-04-14 14:15:49 +02:00
Jelle Raaijmakers
458c96727c CI: Install pkg-config in setup
We have this package listed in our build instructions but did not
install it for CI, causing some errors on new/clean runners.
2025-04-14 14:15:49 +02:00
Jelle Raaijmakers
4014930278 CI: Select XCode 16.3 for macOS builds
This is the version running on our self-hosted Mac runner.
2025-04-14 14:15:49 +02:00
Andrew Kaster
67848a8c51 CI: Add nightly Swift jobs for both Linux and macOS 2025-04-03 16:47:48 -06:00
Andrew Kaster
382b574946 CI: Rework Swift build to be a separate job from normal macOS builds 2025-04-03 16:47:48 -06:00
Andrew Kaster
345cd6b9c9 CI: Add setup steps to install swift toolchain from swiftly
Now that swiftly 1.0.0 is available, we can use it to install main
snapshot toolchains on both Linux and macOS.
2025-04-03 16:47:48 -06:00
Andrew Kaster
c85043f2e1 CI: Bump CI Xcode version to 16.2 2025-04-03 16:47:48 -06:00
Andrew Kaster
3fcef0c519 Revert "CI: Temporarily install CMake 3.x"
This reverts commit c5c3859205.
2025-04-03 08:03:48 -06:00
Timothy Flynn
b64d450f32 CI: Set correct architecture for JS artifact builds 2025-04-01 16:49:28 -04:00
Timothy Flynn
c5c3859205 CI: Temporarily install CMake 3.x
Many vcpkg dependencies do not work with CMake 4.x, which GitHub Actions
now bundles by default. Install the latest 3.x from Kitware for now.
2025-04-01 20:49:03 +02:00
Jelle Raaijmakers
2794ed0c73 CI: Do not cancel in-progress JS artifact builds
It might be useful to have these artifacts, even for older commits. As
an added bonus, this causes the JS benchmarks to run as well giving us
more datapoints.
2025-03-27 23:58:21 +00:00
Jelle Raaijmakers
a0f3099333 CI: Make JS Benchmarks use the JS repl from the job with the same commit
In practice this does not make a big difference, but technically it
could happen that a second JS Repl artifact was built before the first
JS Benchmarks job is executed. So make sure to filter on commit ID.
2025-03-26 11:22:54 +00:00
Jelle Raaijmakers
582084e74e CI: Call webhook as soon as new JS benchmark results are in 2025-03-24 12:49:30 +01:00
Jelle Raaijmakers
b11064c0ae CI: Reduce js-benchmarks artifact retention to 90 days
This is GitHub's default maximum. Prevents generating a warning on each
workflow run.
2025-03-24 01:20:00 +01:00
Jelle Raaijmakers
2752e01fe7 CI: Add js-benchmarks workflow
This workflow starts after a successful js-artifacts workflow, picks up
the JS repl binary and runs our js-benchmarks tool. It does not yet
publish or otherwise store the benchmark results, but it's a start!
2025-03-22 13:05:43 +01:00
Jelle Raaijmakers
8671b0568d CI: Rename ladybird-js-artifacts to js-artifacts
Everything is Ladybird in this repository :^)
2025-03-22 13:05:43 +01: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