Commit graph

715 commits

Author SHA1 Message Date
Jelle Raaijmakers
e2e2806d00 CI: Make dependabot scan our custom actions as well
By default, dependabot only looks at `.github/workflows`.
2026-06-19 10:40:43 +02:00
dependabot[bot]
043adecb13 CI: Bump actions/checkout from 6.0.3 to 7.0.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.
- [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/v6.0.3...v7.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-19 09:52:09 +02:00
Tim Ledbetter
abe6d2c045 CI: Add a PR CI step to check new and modified tests for flakiness 2026-06-19 09:47:55 +02:00
sideshowbarker
b6bd191531 CI: Use the image-provided wasm-tools on the Linux jobs
Bump the workflow image pin to the 2026.06.14 tag that bakes in
wasm-tools. And keep the wasm-tools download/caching steps for the macOS
and Windows jobs — but skip those steps on Linux. So, the Linux jobs use
the wasm-tools copy the image installs.

Follow-up to https://github.com/LadybirdBrowser/ladybird/pull/9972
2026-06-19 09:02:57 +02:00
sideshowbarker
1484686c70 CI: Add caching and retries to the wasm-tools download
Cache the wasm-tools binary rather than doing (trying) a re-fetch of it
on every build job. And when we ever do need to re-download it (after a
cache miss), then do it with some sensible retry-with-backoff-and-wait.

Otherwise, a single network hiccup when trying to download wasm-tools
was failing multiple CI jobs at once — before their builds even started.
2026-06-18 22:44:40 +02:00
Jelle Raaijmakers
eb85264e44 CI: Switch macOS runners to macos-26
All our self-hosted runners have been updated.
2026-06-16 09:44:38 +02:00
Shannon Booth
2dc3e3da55 Meta: Remove obsolete Lagom host-tools build 2026-06-08 01:11:40 +02:00
Shannon Booth
efe144552c Meta: Remove obsolete LibWeb BindingsGenerator
Remove the old C++ LibWeb bindings generator now that the build uses
the Python generator.
2026-06-08 01:11:40 +02:00
sideshowbarker
675d6072f7 CI: Bump lint-code.yml to the 2026.06.02 image, like the rest of CI
Otherwise, without this change, the Lint Code job intermittently fails —
for the same cause described in 61d0fca133: rustup tries to auto-install
1.96.0 the first time a proxied cargo runs — and depending on timing,
that can lead to a crate ending up seeing rustc, but not cargo.
2026-06-07 23:59:02 +02:00
sideshowbarker
e97de4fc84 Meta: Retry required-file downloads and cache the WASM spec tests
Problem: CI intermittently fails when a required-file download hiccups;
e.g., the WASM spec test suite fetch failed on both its primary URL and
the Web Archive fallback on the same run — breaking configure under CI.

Cause: download_file_multisource was trying each source only once — so a
single transient HTTP error could break the whole build. The WASM spec
test tarball was also being fetched fresh every run — rather than from
the shared download cache — so each build was exposed to that flakiness.

Fix: Retry each fetch a few times across all sources — for every config-
time download: the WASM spec tests, HSTS preload list, and public-suffix
list. Cache the WASM spec test tarball across CI runs — keyed by commit,
so it’s (re)fetched only once per commit bump.
2026-06-07 11:33:29 +02:00
sideshowbarker
61d0fca133 CI: Fix recurring Rust toolchain flake in the libjs-test262 job
Problem: The libjs-test262 job was failing — often — with “cargo is not
installed for the toolchain 1.96.0”, while building the Rust crates.

Cause: The job ran in an older CI image lacking 1.96.0 — making runtime
rustup try to auto-install 1.96.0 the first time a proxied cargo ran.
And because the build compiles multiple Rust crates in parallel, several
cargo invocations hit the missing toolchain at once — and each started a
rustup install of the same toolchain. And rustup apparently isn’t safe
against concurrent installs: Its in-place component swap shuffles files
out to a temp directory, and a crate that reads the toolchain mid-swap
sees rustc — but not cargo. Whether it corrupts depends on timing — so
the failure is intermittent, and a re-run usually “fixes” it.

Fix: Update the job to the current ladybird-ci:2026.06.02 image — which
already has 1.96.0 (with cargo) baked in — so no runtime install happens
and there’s nothing to race. As an additional guard, also install the
pinned toolchain *explicitly*, before the parallel build: so any install
happens exactly once — and serially — rather than being raced.
2026-06-07 11:32:48 +02:00
Ali Mohammad Pur
540827040c Meta: Package the wasm cranelift compiler and restore it for benchmarks 2026-06-05 19:59:03 +02:00
Jelle Raaijmakers
a9dbf75788 CI: Remove stalebot
PRs will now be fully owned by their respective author, so no need
automatically close them.
2026-06-05 10:20:15 +02:00
Jelle Raaijmakers
168ecb2e7d Everywhere: Update contribution guidelines
We've closed down the public PR route:

  https://ladybird.org/posts/changing-how-we-develop-ladybird/

Update our guidelines and documentation to reflect this.
2026-06-05 10:20:15 +02:00
dependabot[bot]
50892d7370 CI: Bump actions/checkout from 6.0.2 to 6.0.3
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [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/v6.0.2...v6.0.3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-05 09:21:33 +02:00
Timothy Flynn
475d8f3c4b CI: Update the docker image version used in CI 2026-06-03 01:15:32 +01:00
Timothy Flynn
c5bb98bcf0 Meta: Revert to a stable rust compiler
Let's not depend on a nightly pre-release, especially not just for a
linting option. We can enable the linter option once it lands in the
stable release.
2026-06-02 20:12:41 +02:00
sideshowbarker
d089def7e4 CI: Add “master” branch-name check to “push” triggers 2026-05-29 16:13:41 +02:00
sideshowbarker
c440b8667b CI: Avoid in-place nightly toolchain update in lint setup
Problem: A new upstream nightly Rust release made all CI lint code
checks fail in the Set Up Environment step

Cause: CI runs “rustup toolchain install nightly --component rustfmt”.
The runner container ships nightly with rustfmt and clippy preinstalled.
But “rustup toolchain install” treats an existing channel as an upgrade
target, and tries to refresh it whenever a newer nightly is available.
The refresh removes the old clippy component first, renaming
/opt/rustup/toolchains/.../share/doc/clippy into /opt/rustup/tmp/, and
those two directories live on different overlayfs mounts in the
container — so the rename fails with EXDEV.

Fix: Replace “rustup toolchain install nightly --component rustfmt” with
“rustup component add rustfmt --toolchain nightly”. That adds the
component to the existing toolchain without checking for or applying a
channel update — so the cross-mount-rename path is never reached.
Because the container already provisions rustfmt + clippy at build time,
the new command is effectively a no-op on healthy containers, and fails
loudly only if a future container loses the nightly toolchain.
2026-05-29 07:39:30 -04:00
Shannon Booth
f985ed83d4 CI: Use latest Linux build image
The Linux CI workflows were still pinned to ladybird-ci:2026.05.4, even
though the CI image had since been rebuilt as 2026.05.25 after the Rust
toolchain switched to nightly.

This left CI running in an older container where cargo was not installed
for the nightly toolchain selected by the checked-out tree, causing Rust
crate builds to fail during the fuzzer host-tools build.

Update the workflow image references to the current published CI image.
2026-05-28 09:27:41 +02:00
Vanand Gasparyan
f3a3488cda Rust: Set import granularity to Item
By default, `rustfmt` persists the import granularity. In practice, most
Rust code has import granularity "Module" due to LSP's actions.

"Item" gets rid of import groupings and achieves cleaner diffs and
better conflict resolution. Better greppability is a positive side
effect.

Note: it's an unstable rustfmt feature. `cargo +nightly fmt` must be
used instead of `cargo fmt`.
2026-05-28 06:52:18 +02:00
Andreas Kling
0d9f7b3ed8 CI: Switch GNU build from sanitizer to release
Keep GCC compiler warning coverage on pull requests without running the
GCC sanitizer configuration that has been timing out in CI. Leave the
Clang sanitizer jobs in place for sanitizer coverage.
2026-05-24 10:13:23 +02:00
Luke Wilde
4a34a60d93 CI: Pass CMake options in the Fuzzers build
We were forgetting to pass CMake options in the Fuzzers build.
These CMake options contain -DENABLE_CI_BASELINE_CPU=ON, which sets
a baseline architecture to properly allow ccache sharing between
different runners. Without it, it defaults to the native architecture,
which is then cached and can be used on a runner that doesn't have the
same instruction set.

This is targetted at fixing the "Illegal instruction" crash we've been
seeing with the bindings generator.
2026-05-22 19:15:58 +01:00
dependabot[bot]
8b7629d20e CI: Bump actions/stale from 10.2.0 to 10.3.0
Bumps [actions/stale](https://github.com/actions/stale) from 10.2.0 to 10.3.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](b5d41d4e1d...eb5cf3af3a)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 10:39:56 -04:00
Zaggy1024
5aa0d13a99 Meta+CI: Add pyright type checking to lint_python.sh 2026-05-13 08:13:51 -05:00
Andreas Kling
6961b48af2 CI: Preserve sanitizer logs from test subdirectories
CTest may run tests from build subdirectories. That means sanitizer logs
can be written below Build instead of the workspace root.

Search Build recursively when printing sanitizer output, and include
matching logs in the LibWeb test artifact.

Keep sanitizer log_path values relative so they work on Windows.
Absolute paths with drive letters contain colons there. That conflicts
with the ASAN_OPTIONS separator.
2026-05-13 13:32:49 +02:00
dependabot[bot]
c406e61e20 CI: Bump docker/setup-buildx-action from 3 to 4
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 18:01:28 -04:00
dependabot[bot]
73277e23f8 CI: Bump docker/build-push-action from 6 to 7
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6...v7)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 18:01:19 -04:00
Undefine
60edabad0b CI: Use the Host_Tools preset when building tools for the fuzzers build 2026-05-05 22:08:24 +02:00
Jelle Raaijmakers
246a6a1194 CI: Switch to build image 2026.05.4 2026-05-05 11:29:07 +02:00
Jelle Raaijmakers
2134ff7812 CI: Use CI build image for Linux jobs
This means running the build inside a Docker container based on a (more)
stable build image.

  * The setup action is now largely simplified for Linux.

  * We hardcode llvm@21 for macOS since it allows us to get rid of
    specifying llvm_version as an input variable. Since we no longer
    support switching the LLVM version on Linux via that variable, this
    seems like the best course of action.

We use a trick to optionally introduce a container image: `fromJSON()`
allows `null` as a return value, which causes the job to execute on the
runner directly. We need this for macOS and Windows jobs.
2026-05-04 14:16:41 +02:00
Jelle Raaijmakers
9c6e814058 CI: Introduce build of new CI Docker image
The goal is to have a stable, reproducible build environment for Linux
amd64 and arm64 that we can simply pull in for CI build jobs. We've seen
that apt repositories can be temporarily unreachable or build dependency
versions are silently updated causing builds to fail. A nice benefit of
this is that we can skip most of the environment setup, which takes a
couple of minutes each run.
2026-05-02 15:52:44 +02:00
dependabot[bot]
e7fe3fc5a3 CI: Bump dawidd6/action-download-artifact from 20 to 21
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 20 to 21.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v20...v21)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-01 17:42:24 +02:00
Andrew Kaster
946f39df88 CI: Build Gtk UI in Linux Sanitizer presets
Ensure that we run tests with the Qt UI still
2026-04-23 20:07:40 -06:00
Andrew Kaster
a942da16ce CI+Devcontainer: Add Gtk UI dependencies to the CI and Devcontainer 2026-04-23 20:07:40 -06:00
Timothy Flynn
ce7b69ff31 Meta: Move utility scripts to a subfolder
The idea is that scripts directly under Meta are meant to be run by
people. Scripts that are only imported or run by other scripts are
moved to a subdirectory.
2026-04-23 12:36:08 -04:00
Timothy Flynn
b483445072 Meta: Replace IPCMagicLinter with a python linter
Note that the IPC lint step can be removed from the CI workflow because
we no longer need a build in order to perform the lint, and IPC linting
is now covered by lint-ci.sh.
2026-04-23 07:31:19 -04:00
Timothy Flynn
b1d708dd16 Meta: Move BuildVcpkg script to the Meta directory
It was the only thing left in the Toolchain directory.
2026-04-20 13:17:06 -04:00
Timothy Flynn
5d461d3fb0 CI: Point lld at the explicitly installed version
It appears CI is currently not using lld as a linker.
2026-04-20 12:22:16 -04:00
Tim Ledbetter
f168423c18 CI: Allow dependabot to update the Rust toolchain 2026-04-16 23:42:22 +02:00
dependabot[bot]
fadea53343 CI: Bump actions/github-script from 8 to 9
Bumps [actions/github-script](https://github.com/actions/github-script) from 8 to 9.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](https://github.com/actions/github-script/compare/v8...v9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-15 08:18:23 -04:00
Jelle Raaijmakers
aca463883f CI: Install libtool in setup action
This was missing in some build environments. Installation of libtool is
in our build instructions, so let's include it here as well.
2026-04-14 18:31:26 +02:00
Jelle Raaijmakers
908219afd4 CI: Use dearmored key for LLVM repo in setup action 2026-04-14 18:31:26 +02:00
Jelle Raaijmakers
6904389746 CI: Remove stray comma from webhook payload in web-benchmarks.yml 2026-04-14 16:55:45 +02:00
Tim Ledbetter
f498cfcfd0 CI: Trigger web-benchmarks workflow on push to master
Previously, the web benchmarks job would only trigger after a
successful CI run.
2026-04-14 15:34:29 +02:00
Tim Ledbetter
236c0b41a5 CI: Use the correct MacOS path in web-benchmarks job 2026-04-14 13:00:48 +02:00
Timothy Flynn
f79401bf9c CI: Change vcpkg cache key to depend on vcpkg.json
The vcpkg cache should rarely change - only when new dependencies are
added or a version changes. Both of these events involve modifying the
vcpkg.json file. So instead of uploading duplicated vcpkg caches in each
workflow, let's only upload changed caches.
2026-04-10 07:26:05 -04:00
Timothy Flynn
9524d92a9f CI: Remove quotes from cache keys
These get tricky with nested quotes when adding a hashFiles invocation.
Let's remove quotes from all keys to keep them consistent.
2026-04-10 07:26:05 -04:00
Timothy Flynn
a2fc4c1e10 CI: Remove always-true conditions from cache actions
After 80517124a4, we must always provide
these paths now.
2026-04-10 07:26:05 -04:00
dependabot[bot]
94eed3d708 CI: Bump dawidd6/action-download-artifact from 19 to 20
Bumps [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) from 19 to 20.
- [Release notes](https://github.com/dawidd6/action-download-artifact/releases)
- [Commits](https://github.com/dawidd6/action-download-artifact/compare/v19...v20)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 11:22:44 -04:00