Commit graph

298 commits

Author SHA1 Message Date
davidot 28358d8700 CI: Store per-file results of test262 runs and compare against previous 2022-01-08 14:06:29 +01:00
Timothy Flynn 41f4a5050c CI: Add a cache for the IANA time zone database files 2022-01-08 12:45:34 +01:00
Tim Schumacher aa35b6e3c3 CI: Don't let APT ask for confirmation on package installation 2022-01-07 12:35:15 +01:00
Andrew Kaster c62c10caf0 Meta+CI+Documentation: Bump host gcc requirement up to gcc 11
Bump macOS CI version to macOS 11 while we're here.
2022-01-07 11:02:30 +01:00
Brian Gianforcaro c6c59653ce CI: Update the lint commits error message to be more user friendly
We often see PR's opened and then immediately closed because folks think
they did something bad, or don't know how to fix the situation. So lets
try to give them a few pointers.
2022-01-07 00:39:12 -08:00
Andreas Kling 474e3ffc85 Meta: Add Sam Atkins's GitHub Sponsors to funding options :^) 2021-12-28 08:08:39 +01:00
Ben Wiederhake 7ba7668fbb Meta: Allow overlong 'fixup!' commit titles in pre-commit hook 2021-11-28 11:49:13 -08:00
Linus Groh f538df7572 CI: Bump prettier to latest version (2.4.1)
We didn't initially upgrade because it started to (incorrectly) see
files as strict mode and chokes on things that then would be syntax
errors - but we're starting to fall behind a bit, so I'd rather put
these files on the ignore list instead.
2021-11-21 01:18:23 +00:00
thislooksfun d2ef8b29e8 CI: Prevent false errors if a commit message contains CRLF
Previously if a commit message contained any carriage returns it would
correctly fail the 'contains CRLF line breaks' test, but it would also
report 'Commit message lines are too long' and 'Commit title ends in a
period', even if neither is true.
2021-11-19 22:30:11 +02:00
Ben Wiederhake 55e1edd51b Meta: Check auto-generated manpages for completeness on CI 2021-11-01 21:12:58 +01:00
Brian Gianforcaro 35617ba2d3 Meta: Suppress rule v1047 in PVS-Studio Static Analysis
This rule appears to produce a lot of noise, most of them look like
false positives (400+). Lets suppress for now to try to move the signal
to noise ratio higher for PVS-Studio.

Reference: https://pvs-studio.com/en/docs/warnings/v1047/
2021-10-31 00:19:33 +02:00
thislooksfun 7eaac7d2c1 CI: Notify Discord on all new PRs, even drafts 2021-10-29 22:37:48 +03:00
thislooksfun 7ee409ef98 CI: Rewrite the lintcommits workflow using an inline script
tim-actions/commit-message-checker-with-regex@v0.3.1 only uses the
keys 'sha' and 'commit.message'. Passing more information than that
is unnecessary and can lead to CI failures like this one:
https://github.com/SerenityOS/serenity/runs/4029269017?check_suite_focus=true#step:4:7

Instead of trying to pass data between workflow steps, we can instead
just do it all at once (plus this gives us more control over
formatting, which has also been improved).
2021-10-29 16:51:22 +03:00
Ben Wiederhake 8d13f6ddce Kernel+SystemServer: Change bootmode to system_mode
'bootmode' now only controls which set of services are started by
SystemServer, so it is more appropriate to rename it to system_mode, and
no longer validate it in the Kernel.
2021-10-25 23:38:28 +02:00
Ben Wiederhake 09432a8241 Kernel: Separate panic behavior from bootmode
Bootmode used to control panic behavior and SystemServer.
This patch factors panic behavior control into a separate flag.
2021-10-25 23:38:28 +02:00
Ben Wiederhake 542a88a7be Kernel: Separate framebuffers from bootmode
Bootmode used to control framebuffers, panic behavior, and SystemServer.
This patch factors framebuffer control into a separate flag.
Note that the combination 'bootmode=self-test fbdev=on' leads to
unexpected behavior, which can only be fixed in a later commit.
2021-10-25 23:38:28 +02:00
Ben Wiederhake 7e52b6fa24 man.serenityos.org: Simplify local builds
I simply extracted the script from .github/workflows/manpages.yml,
without significant modification.
2021-10-22 19:49:28 +03:00
Timothy Flynn 1e1cd07549 CI: Add a cache for the CLDR on the test262 runner 2021-10-21 17:41:13 +01:00
Timothy Flynn cff39734f1 CI: Use correct CLDR cache path on GitHub Actions 2021-10-21 17:41:13 +01:00
Ben Wiederhake ae9b52e387 Meta: Enable header checking in CI 2021-10-20 09:20:18 +01:00
Brian Gianforcaro 3b7d8ed6a5 Meta: Add actions work flow to run pvs-studio static analysis
Much like the sonar cloud workflow, this workflow runs pvs-studio
static analysis, and uploads the SARIF results to github. This
is the most "convenient" way to publish results, but unfortunately
users need write access to the repository to reach static analysis
results rendered in github.

As a work around folks can just look at the logs where issues are
printed during analysis, this works reasonably well.

In the future it might make sense to also render the results as HTML
and publish them using github page, much like we do with man pages.
I believe the pvs-studio plog-converter tool supports that as well.
https://pvs-studio.com/en/docs/manual/0036/
2021-10-05 20:07:04 +00:00
Brian Gianforcaro dc99b702be Meta: Include source sha in sonarcloud analysis metadata
Having the version included in each analysis allows you to do more
filtering in the UI where results are viewed.
2021-10-02 18:16:15 +02:00
Brian Gianforcaro ca7bb812f6 Meta: Explicitly disable caching in the Sonar Cloud workflow
Sonar Cloud raises a warning if this is not Explicitly enabled or
disabled, so lets mark it disabled to avoid that.
2021-09-28 10:58:09 +02:00
Brian Gianforcaro 0f76e6e149 Meta: Fix typo in release sonar-scanner version
The version is 4.6.2.2472, I had a typo when I committed the previous
change to update the version.
2021-09-26 21:29:39 +00:00
Brian Gianforcaro 0b9e633482 Meta: Upgrade sonar scanner to latest 4.6.2.2475 release
I didn't realize there was a new release, as it wasn't posted in the
Sonar Cloud Documentatoin, but was tagged on the github project page.

See: https://github.com/SonarSource/sonar-scanner-cli/releases
2021-09-23 20:37:37 +00:00
Brian Gianforcaro 925f21353e Meta: Exclude LibWasm Parser.cpp from Sonar Cloud Static Analysis
We need to exclude this file from analysis for now, as there is a bug in
the sonar-runner tool where it crashes when trying to understand the use
of AK::Variant in LibWasm/Parser/Parser.cpp

See #10122 for details + link to the bug report to Sonar Cloud.
2021-09-23 01:07:11 +02:00
Brian Gianforcaro eddccf11da Meta: Remove unused caching from Sonar Cloud configuration
I was experimenting with using caching while doing the initial prototype
of the Sonar Cloud workflow. However the cache size for the static
analysis data ended up being large enough that it would put us over the
git hub actions limit. Given that we currently only run this pipeline
once a day, it seems reasonable to just remove caching.

If in the future we decide to run the pipeline on every PR, caching
would become crucial as the current un-cached analysis time is around
1 hour and 50 minutes. If we did this we would need to move the pipeline
to Azure DevOps where we have effectively infinite cache available.
2021-09-23 01:07:11 +02:00
Andrew Kaster 99b526731e CI: Add missing $ to Sonar Cloud build steps
Without the `$` GitHub Actions doesn't do the environment variable
replacement and CMake thinks we want a source directory of `./}}`
2021-09-17 11:03:27 +01:00
Andrew Kaster 454a839f49 CI+Meta: Update Sonar Cloud CI job for new SuperBuild configuration
This requires exposing the `configure` step on the `serenity`
ExternalProject in the SuperBuild CMakeLists so that we can continue to
only build the generated sources and not the entire OS.
2021-09-16 15:47:13 +00:00
Andrew Kaster b5c98ede08 Meta: Switch to a SuperBuild that splits host and target builds
Replace the old logic where we would start with a host build, and swap
all the CMake compiler and target variables underneath it to trick
CMake into building for Serenity after we configured and built the Lagom
code generators.

The SuperBuild creates two ExternalProjects, one for Lagom and one for
Serenity. The Serenity project depends on the install stage for the
Lagom build. The SuperBuild also generates a CMakeToolchain file for the
Serenity build to use that replaces the old toolchain file that was only
used for Ports.

To ensure that code generators are rebuilt when core libraries such as
AK and LibCore are modified, developers will need to direct their manual
`ninja` invocations to the SuperBuild's binary directory instead of the
Serenity binary directory.

This commit includes warning coalescing and option style cleanup for the
affected CMakeLists in the Kernel, top level, and runtime support
libraries. A large part of the cleanup is replacing USE_CLANG_TOOLCHAIN
with the proper CMAKE_CXX_COMPILER_ID variable, which will no longer be
confused by a host clang compiler.
2021-09-15 19:04:52 +04:30
Rodolfo Olivieri 706323beb1 CI: Add statement to ensure workflow runs only on serenity
This statement ensures that the `Sonar Cloud Static Analysis` workflow
runs only for the official repository and not for the forks.
2021-09-10 01:20:39 +00:00
Idan Horowitz 24ed8511dd CI+Meta: Add Signed-off-by tag filter to the commit message linter 2021-09-07 20:46:34 +01:00
Brian Gianforcaro d30be39215 Meta: Remove Coverity workflow until it's ready
This commit snuck into the tree via a PR for some sonar cloud fixes.
Some how I cross contaminated my branches.

Unfortunately the coverity workflow isn't ready for prime time yet,
so lets remove it until we have all the issues ironed out.
2021-09-03 19:01:10 +04:30
Brian Gianforcaro 2b13c9942d Meta: Fix toolchain caching for Sonar Cloud workflow
The matrix variables were left over from copy/pasting the contents
of the normal CI workflow. We also should always skip saving the
cache, as the normal CI pipeliens will refresh the toolchain and
we should just be reading the cache.
2021-09-03 11:46:15 +02:00
Brian Gianforcaro a746d612ac Meta: Add github actions workflow to run coverity build analysis 2021-09-03 11:46:15 +02:00
Brian Gianforcaro 4c21aa2eed Meta: Remove sonar cloud worklow triggering for PRs
Sonar cloud detects PRs and fails the job at the very end, so there
isn't much use in including this testing feature.
2021-09-03 11:46:15 +02:00
Brian Gianforcaro 0da144322a Meta: Remove sonar cloud pipeline cache
The cache is saving, but by the time we run again, it looks like the
cache has been purged from other jobs consuming the cache.

This causes the cache to fail restore. Given we run nightly and there
is no time bound, we can just run without cache.
2021-09-03 11:46:15 +02:00
Brian Gianforcaro 3ad2b39eef Meta: Add sonar.python.version config to silence sonar cloud warning
All of our python scripts use python3
2021-09-03 11:46:15 +02:00
Brian Gianforcaro beb8c48f26 Meta: Don't allow overlap in sonar cube file classification
Test files were getting analyzed twice, which the tool does
not like, and causes it to exit with a fatal error.

Also make the workflow run in PRs anytime the file is edited,
so that we can get immediate feedback without waiting till the
next day.
2021-08-31 12:41:18 +02:00
Brian Gianforcaro 51ea4d38d5 Meta: Fix yaml syntax of Sonar Cube Workflow
I fat fingered this last minute when converting from the trigger
I was using for development/testing to the cron schedule for use
in the main repo.
2021-08-30 20:13:53 +02:00
Brian Gianforcaro ab07d8bbf0 Meta: Action workflow to build and upload results in sonar-cloud
This action executes once a day, the sonar cloud runner analyzes the
code and then uploads the results.

The current code base takes almost 3 hours of computer time to analyze.
The runner supports multi threaded executing and caching of results, so
we save that cache as part of the github action work flow to allow for
the analysis to skip unchanged files.
2021-08-30 16:44:16 +02:00
Andrew Kaster e88761b2b9 Meta+LibUnicode: Move unicode_data helper to Meta/CMake
Moving this helper CMake file to the centralized Meta/CMake folder helps
to get a better grasp on what extra files are required for the build,
and what files are generated.

While we're at it, don't use add_compile_definitions for
ENABLE_UNICODE_DATA, which only needs to be seen by LibUnicode sources.
2021-08-28 08:44:17 +01:00
Timothy Flynn 9663525542 CI: Ensure unzip is installed on the builders
The CLDR database comes in a .zip file.
2021-08-26 23:40:23 +02:00
Timothy Flynn e883792fd4 CI: Cache downloaded Unicode CLDR database 2021-08-26 22:04:09 +01:00
Idan Horowitz d5ce24627e CI: Increase ccache size limit for serenity builds
Now that we only have 3 ccached builds on CI we can comfortably increase
the ccache size limit to get some free speed-up in CI.
2021-08-21 22:28:49 +01:00
Andrew Kaster 9bdb44c5d2 CI: Ensure relevant patch files are part of Toolchain cache hash
We were over-hashing for the GNU build on GitHub Actions by including
the LLVM patch as well. The GNU Toolchain doesn't care about our LLVM
patches.

For Azure, fix the inversion of the condition for which jobs check which
Build*.sh script, and add the Toolchain patch files to the cache
hash calculation.
2021-08-18 08:26:38 +02:00
Timothy Flynn ef3ab8dd5f CI: Remove Lagom from GitHub Actions entirely
Fuzzing was the only Lagom build left.
2021-08-17 21:06:15 +01:00
Timothy Flynn 86069fa28d CI: Remove nightly Clang toolchain GitHub Action 2021-08-17 13:31:43 +01:00
Timothy Flynn 7d23d9d557 CI: Remove NO_FUZZ Lagom builds from GitHub Actions 2021-08-16 18:04:33 +01:00
Idan Horowitz 6602ab27e1 CI: Disable variable substitution on input to the twitter script
This prevents command injection through backticks in commit messages.
2021-08-15 23:21:20 +04:30
Idan Horowitz 151c940827 CI: Remove leftover ccache step and fix a broken link in the clang build 2021-08-09 09:03:31 +02:00
Idan Horowitz bac3c2cf6d CI: Split off clang toolchain builds from normal CI and schedule them
Clang builds will no longer be apart of the automated CI for every Push/
Pull Request, and will instead be ran at 00:00 UTC every day, with the
results posted to the discord #clang-toolchain channel.
2021-08-08 22:31:35 +02:00
Daniel Bertalan e04d20ec20 CI: Try building Serenity with Clang 2021-08-08 10:55:36 +02:00
Andrew Kaster c4604bc080 CI: Don't build libjs for Lagom twice
We need test-js for the parser tests for test262, but we don't need to
rebuild all of Lagom twice. This was missed when we did the initial
change to shared libraries. Before #9017, the Lagom build for test-js
is what built libLagom.a for the libjs-test262-runner to link against.

Now that we are building libjs.so and its dependencies in the runner's
build directory, we should build test-js there as well.

Requires linusg/libjs-test262#32 in order to properly find the built
test-js.
2021-08-07 16:34:06 +01:00
Idan Horowitz e548c1f489 CI: Cache UnicodeData files on the self-hosted test262 runner
We already cache these files to prevent re-downloading them in the other
CI workflows, so this just brings the test262 runner up to speed with
the rest of them.
2021-08-07 15:30:47 +02:00
sin-ack 3bea3f11e5 CI: Fix node-version typo
Otherwise this generates an "unexpected inputs" warning.
2021-08-07 09:30:28 +02:00
Thomas Wagenveld bcdb4e705d CI: Do not change the system gcc version to 10
Because the Serenity tooling autodetects the presence of gcc 10
it is no longer necessary to change the system gcc version to 10.
2021-07-31 18:23:43 +02:00
Andrew Kaster 07a3830036 CI: Use updated libjs-test262 build workflows
After linusg/libjs-test262/pull/30 goes into libjs-test262, we'll need
to pass SERENITY_SOURCE_DIR manually to the job to prevent it from
trying to do its own shallow clone. Also, remove the now defunct static
library build from the test262 workflow.
2021-07-29 21:46:25 +01:00
Idan Horowitz 350fb0e3db Meta: Bring lint-commit.sh up to date with the CI commit linter
This was missing 2 of the recently added checks. Also added a reminder
in the CI linter to update the Meta (commit hook) version.
2021-07-27 20:41:49 +01:00
Idan Horowitz c31f085b8c CI: Cache UnicodeData files on GitHub Actions runs
This should prevent 5 unnecessary downloads for each CI run.
2021-07-27 00:03:55 +02:00
Idan Horowitz 34ec0fa8ad CI: Skip commit linter line length check on lines that contain URLs 2021-07-23 20:27:12 +04:30
Peter Bindels 8a4971f908 CI: Enable build breaks on x86_64 test failures 2021-07-18 23:36:08 +02:00
Idan Horowitz f09e361eef CI: Disallow spaces just before the separating colon in commit titles 2021-07-13 19:56:14 +01:00
Andrew Kaster 8ae425cec8 Meta+CI: Use wabt version 1.0.23 for all CI jobs
The WASM spec tests caused a stack overflow when generated with wat2wasm
version 1.0.23, which ships with homebrew. To give feature parity,
manually download the same version from GitHub packages for Ubuntu.

Document the dependencies of the WASM spec tests option, as well.
2021-07-12 18:42:45 +04:30
Idan Horowitz 69eb05e705 CI: Run the commit linter for Draft Pull Requests
The commit linter will now run for draft pull requests as well, but
BuggieBot will not post a message on failing draft PRs.
2021-07-09 21:06:09 +01:00
Idan Horowitz ee991fa4e0 CI: Manually cleanup previous self-hosted test262 run workspace folder
Unlike the github hosted runners, github's software for self-hosted
runners does not do this automatically.
2021-07-03 19:45:04 +01:00
Idan Horowitz 1c29e2f3f7 CI: Run the test262 workflow on a self-hosted runner
This should speed it up quite a bit and give us more consistent
performance. (So this workflow could eventually be used for perf
regression testing as well)
2021-07-03 18:32:39 +01:00
Idan Horowitz 311b2c0720 CI: Increase ccache size limit for on-target builds
It turns out that ccache caches are highly compressible (total size is
reduced by about 65%), so we should be able to increase the cache limit
for some free speedups. :^)
2021-07-02 17:51:13 +02:00
Idan Horowitz 4fb962a0b9 CI: Add x86_64 on target tests 2021-07-01 22:42:54 +02:00
Idan Horowitz 97ea192e3e CI: Cancel duplicate workflow runs for pull requests
These are created when a pull request is force-pushed to, which results
in the unneeded waste of action runners on the obsolete CI run.
2021-07-01 18:26:32 +02:00
Idan Horowitz f3197faf39 CI: Increase the on-target tests timeout to 60 minutes from 30 minutes
This should help reduce the random test failures due to timeouts on
slower github actions runners.
2021-06-26 13:41:58 +01:00
Brian Gianforcaro e9b4a0a830
Meta: Disable USB IDs file download in CI
These IDs aren't used during the CI build, so there's no use in
downloading them needlessly.
2021-06-21 21:52:57 +01:00
Ali Mohammad Pur 79d4913f76 LibWasm: Generate all spec tests, even ones that aren't valid modules
`wasm-as` will do some semantic analysis on the modules, which is not
something we're looking for here.
Instead, use `wat2wasm` to generate the exact module.
2021-06-22 00:26:25 +04:30
Idan Horowitz 7fa5f6be7d CI: Remove discord build status notifications
While these look nice, they require the discord workflow to sit around
and wait for the build-and-lint workflow to finish in order to get its
status which means we waste an extra workflow runner that does nothing
for each build-and-lint run.
2021-06-18 13:45:18 +01:00
sin-ack 93996eb48e CI: Remove incorrect single quote escape
The A in YAML stands for Ass-backwards.
2021-06-17 00:07:26 +02:00
sin-ack 129a0fcfb5
CI: Make sure the first word of each commit is capitalized
The first word for each commit should be a verb anyway, and this
automates @alimpfard's nits. :^)
2021-06-16 14:41:17 +01:00
Linus Groh 3d9bcb860e CI: Run libjs-test262 and update results on every push to master 2021-06-05 19:27:55 +01:00
Idan Horowitz 057cd35a6d CI: Skip saving the toolchain and ccache caches in PR workflows
This speeds up CI by removing some cache thrashing caused by PRs that
change cache-related files (but that were not merged yet).
2021-06-03 16:43:52 +02:00
Andrew Kaster 3ece67d62d Meta/CI: Remove IRC notifications
With the increased volume of PRs being opened and merged lately,
multiple people have complained that the IRC is absolutely flooded with
SerenityBot posts. Remove the IRC notifications from the CI scripts, and
the Meta script that handles parsing the github actions context into
an IRC message.
2021-05-29 19:35:49 +02:00
Andrew Kaster 4a2cb70e83 CI: Use builtin clang-11, clang-12, npm, and libstdc++-10-dev packages
Github Actions added clang-12 to their ubuntu 20.04 images, so let's
take full advantage of that. Stop relying on the llvm upstream
repository for clang-12, since it often causes jobs to fail when
their mirrors are syncing.

clang-tidy-11, libstdc++-10-dev and npm 6.14.x are also all already
pre-installed, so we don't need to waste time fetching them in the
dependency fetch step.
2021-05-29 21:36:26 +04:30
Idan Horowitz 6a067e5a1d CI: Disable the commit linter on draft pull requests 2021-05-29 15:59:47 +01:00
Andreas Kling 8658f20af7 Meta: Update FUNDING.yml again
Apparently I didn't understand the format correctly.. :^)
2021-05-29 09:59:49 +02:00
Andreas Kling 2bd7449b59 Meta: Update FUNDING.yml
Let's keep it simple and stick to GitHub Sponsors here on GitHub.
And add Linus since he's on GitHub Sponsors now as well! :^)
2021-05-29 09:57:13 +02:00
Andrew Kaster 723b8586ec CI: Enable UBSAN for on-target tests
Note that until UBSAN is made deadly by default in LibSanitizer, UBSAN
warnings will not fail the build.

Also remove BUILD_LAGOM=ON from the NORMAL_DEBUG build as it's
unnecessary and extends the build time for no benefit when building with
sanitizers
2021-05-27 15:18:03 +02:00
Ali Mohammad Pur 0e4431af33 Meta: Run the Wasm spec tests in CI
Since LibWasm is still not capable of passing all of the spec tests,
ignore failing tests, only fail the build if some segfault/abort/etc
occurs.
2021-05-27 17:28:41 +04:30
Andrew Kaster 2ec302ea22 Meta/CI: Add ENABLE_ALL_DEBUG_FACILITIES CMake option
This option replaces the use of ENABLE_ALL_THE_DEBUG_MACROS in CI runs,
and enables all debug options that might be broken by developers
unintentionally that are only used in specific debugging situations.
2021-05-27 10:21:30 +02:00
Idan Horowitz a8ca4751b9
CI: Update comment-on-pr to a version that supports pull_request_target (#7431)
The previous version unfortunately didn't work for that workflow type if
the author of the PR did not already have write access to the repo.
2021-05-23 23:37:45 +01:00
Andrew Kaster d3af011562 CI: Enable more verbose and strict sanitizer options
Options shamelessly stolen from this article on systemd's website:

https://systemd.io/TESTING_WITH_SANITIZERS/

We make ASAN more strict and tell UBSAN to print more verbose output on
failure. One of the more interesting ASAN options,
detect_stack_use_after_return, sadly causes both UBSAN and ASAN failures
in test-js.
2021-05-23 23:30:46 +01:00
Idan Horowitz fd68e606e7 CI: Make BuggieBot reply to pull requests that fail the commit linter
This should help reduce the repeating "Please check the contributing
guide" replies from reviewers.
2021-05-23 18:09:54 +02:00
Andrew Kaster 467ceb15aa Base/CI: Create and check test-results.log file for on-target tests
Change run-tests-and-shutdown.sh to output a dead simple results file
that just records how many tests failed.

In the CI script, mount the _disk_image after running tests and verify
that the number of failed tests is 0. Otherwise, fail the build :^)

While we're here, bump the timeout for the tests up to 30 minutes, to
make sure that less powerful runners don't fail the job unecessarily.
2021-05-21 22:59:07 +01:00
Andrew Kaster b86d597938 CI: Add canonical-server/server-backports PPA to get updated QEMU
Ubuntu 20.04 only ships QEMU 4.2.1, which is quite an older release.

The BuildQemu.sh script uses version 6.0.0, while the server-backports
PPA is currently shipping 5.2.1. If it turns out the server-backports
PPA is not right, then we can switch to manually building and caching
the source build.
2021-05-21 22:59:07 +01:00
Andrew Kaster 0d0f52337c Base/CI: Run tests from /usr/Tests in GitHub Actions
Uncomment the tests that were disabled due to frequent freezes when
running without KVM. This also adds a new github actions group for
every single test, which makes it easier to browse test boundaries
during test runs.

Move catting the serial output log back to its own step, so that it
has higher visibility. The previous solution was also shown to not
actually cat the log in the case of a failed boot and timeout :^(.
2021-05-21 12:05:34 +04:30
Linus Groh 90e5f607bd CI: Bump update-alternatives priority to 100
This didn't seem to have worked in the past, the new value matches the
recomendation on the GitHub Actions clang-11 default announcement:

https://github.com/actions/virtual-environments/issues/3235
2021-05-21 00:15:14 +01:00
Linus Groh 13288d956b CI: Also apt-get purge clang-11 in build_and_test_lagom step
We don't need it. A recent change to the ubuntu-20.04 image has made it
the default, causing builds to fail - we're installing and want to use
clang-12 anyway, so let's just get rid of the other installed versions.
2021-05-21 00:15:14 +01:00
Andrew Kaster ac1d87b990 CI: Compile and run Lagom tests with ASAN and UBSAN
Make sure halt_on_error=1 is enabled so that UBSAN failures will crash
the test program and cause a failure.
2021-05-16 21:58:14 +01:00
Idan Horowitz 3f08e957d4 Meta: Add a check for periods on the end of titles to commit linter 2021-05-16 01:25:24 +01:00
Adam Hodgen 1e1571d647 Meta: Pin prettier linter version 2021-05-10 00:24:05 +02:00
Linus Groh 867072c7d8 Meta: Improve man.serenityos.org titles and link names
Index page:
- Change links from "Man 1" to "Section 1"

Section index pages:
- Change title from "1" to "Section 1 - SerenityOS man pages"
- Change links from "foo" to "foo(1)"

Man pages:
- Change title from "foo" to "foo(1) - SerenityOS man pages"
2021-05-07 22:28:33 +02:00
Idan Horowitz b9c367e13b Meta: Add action to tweet each commit on push 2021-05-05 21:12:09 +02:00
Idan Horowitz 8cc6372b14 Meta: Strip man prefix from generated man page directories 2021-05-04 22:05:12 +02:00
Idan Horowitz e96ac568a7 Meta: Track Meta/Websites/man.serenityos.org changes in manpages action 2021-05-04 22:05:12 +02:00
Idan Horowitz d29e2dd2d7 Meta: Add workflow that deploys man page updates to man.serenityos.org 2021-05-04 20:58:25 +02:00
Idan Horowitz 6f6f30e55a Meta: Lint commits for unix-style linebreaks
This ensures serenity commits only contain unix-style LF linebreaks
2021-04-26 00:29:22 +02:00
Idan Horowitz b42bfa75d8 Meta: Allow for spaces in commit title category linter 2021-04-25 09:30:12 +02:00
Idan Horowitz 161fd1c153 Meta: Add basic commit message linting for pull requests
This new check will ensure that all commit message lines are at most 72
characters long, as well as ensure the commit title conforms to the
"Category: Brief description of what's being changed" format.
2021-04-23 13:20:12 +02:00
Gunnar Beutner 75d41657d5 Toolchain+Ports: Enable threads for gcc
This enables POSIX threads for GCC and makes the -pthread
argument available.
2021-04-20 21:08:17 +02:00
Panagiotis Vasilopoulos e45e0eeb47 Everywhere: Replace SERENITY_ROOT with SERENITY_SOURCE_DIR 2021-04-20 15:27:52 +02:00
Idan Horowitz df84cd77b8 Meta: Actually check for draft PRs before sending discord notifications 2021-04-20 12:02:13 +02:00
Brian Gianforcaro 51fe25fdbb Meta: Stop limiting stale-bot actions per hour.
Initially this was configured to 2 an hour so that we could easily
disable stale-bot if something went haywire. Now that it's successfully
proved it's doing what it's supposed to, let it run the default number
of actions per hour.
2021-04-19 23:32:48 +02:00
Brian Gianforcaro 247f8f8dbb Meta: Configure probot/stale to close stale pull requests automatically.
This change adds the required configuration to setup the
https://github.com/probot/stale github bot to close stale pull requests.

We currently have a large amount of PRs just sitting around with no
activity, clogging up the PR queue. This will hopefully make that
situation better.
2021-04-19 21:37:53 +02:00
Idan Horowitz 5c924d395f Meta: Disable discord notifications timeout
Since some builds can take even longer than 1 hour
(for example: f033416893)
this commit just increases the timeout to be github's
own workflow timeout (effectively disabling it) and just
lets github handle it instead.
2021-04-18 12:47:50 +02:00
Linus Groh 2b0c361d04 Everywhere: Fix a bunch of typos 2021-04-18 10:30:03 +02:00
AnotherTest 00e5af02be CI: Use clang-12 instead of clang-10 when building fuzzers
oss-fuzz uses clang-12 anyway, so this patch shouldn't be breaking
anything, just letting us use more modern C++ without the CI being
sad.
2021-04-16 21:48:00 +02:00
Idan Horowitz 01e1466682 Meta: Include queued checks in the discord notification's checks filter
The previous filter would filter out queued checks as well, which would
result in erroneous build success notifications going out if github
started the discord notifications workflow before all other workflows.
2021-04-15 09:40:46 +02:00
Idan Horowitz 7702a3fe29 Meta: Increase discord notification's check interval to 100 seconds
Since our tests usually take at least 10 minutes theres no point in
checking every 10 seconds, and github was starting to complain about
the very high API usage.
2021-04-14 14:57:37 +02:00
Idan Horowitz 1aec9a508e Meta: Increase discord notification's build timeout to 1 hour
It looks like some particularly long builds (After a toolchain cache
reset and on a slow worker) can take much longer than the current set
timeout of 20 minutes.
2021-04-14 09:46:45 +02:00
Idan Horowitz a0111f6a3e Meta: Enable pull_request_target context for the notify_discord action
While we did allow the notify_discord job to run inside the context,
we didnt ask github to run in that context. This commit also uses the
"action-wait-for-check" sub-action to ensure the posted build results
are accurate for pull requests (since the build workflow is done in a
separate context for PRs)
2021-04-13 15:51:44 +02:00
Idan Horowitz 6c5bb9a18f Meta: Add discord notifications for pushes and pull requests
These are similar to the existing irc notifications.
2021-04-11 00:09:36 +02:00
Ben Wiederhake 115e8f5977 Meta: Make GA logs less misleading
If the job fails early (e.g. during linting), the 'cat debug.log' step would *also* fail.
This would confuse GA into thinking that this is the crucial thing and highlights it.
This misleads the user into looking at the wrong thing.
2021-03-13 22:42:20 +01:00
Ben Wiederhake 06debb1832 Meta: Search for the correct ccache cache key
"Hmm, 'toolchain' is a better name here!" I said, and changed the key name.
And then I promptly forgot to update the restore-key value. D'oh!
2021-03-04 19:40:49 +01:00
Ben Wiederhake 04eb6bd379 Meta: Use and cache ccache on Github Actions 2021-03-04 15:42:10 +01:00
Linus Groh b8a5b1131a CI: Build with -DENABLE_PCI_IDS_DOWNLOAD=OFF
Closes #5611.
2021-03-04 11:21:55 +01:00
Andrew Kaster 1aa605bc03 Meta: Run test-js and test-compress as CTest executables
Reduces the number of steps in the Actions workflow this way :^)
2021-03-02 09:00:21 +01:00
Andrew Kaster a375133cc5 CI: Allow run step of on target tests to fail
As documented in #5541, there are some Kernel issues that can
sporadically cause the test run to fail. Add continue on error with a
loud comment to let readers know what the issue(s) might be.
2021-02-28 18:19:37 +01:00
Andrew Kaster 611bbc43be Base/CI: Boot serenity in CI in a mode that runs tests on target
Build a new version of Serenity in CI that doesn't have all the debug
symbols on, or we'd be waiting a very long time to boot.

Insert a TestRunner entry into SystemServer.ini that will run a shell
script that runs tests in /bin and /usr/Tests and shuts down the system
in the new self-test boot mode. Also make sure enough basic services are
started in self-test such that the tests will actually run properly.
2021-02-28 18:19:37 +01:00
Andreas Kling 6503b4b3c1 Revert "Meta: Enable CodeQL static analysis for Serenity"
This reverts commit f0bf723424.

CodeQL never finds anything and regularly crashes, failing the build.
2021-02-03 18:42:02 +01:00
Andreas Kling 13d7c09125 Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
Andrew Kaster c17056cf09 Meta: Unify build-and-test jobs using a matrix build
This will make it easier to keep macos tests and non-mac tests in
lockstep. Also, make sure flake8 and python are installed. This also
makes it easier to add other OS targets if we want.
2021-01-09 19:22:23 +01:00
asynts 8ff61698da Meta: Add test-compress to Github workflow. 2021-01-01 22:23:13 +01:00
Brian Gianforcaro 43908db594 CMake: Add public cmake option to document BUILD_LAGOM
- Making this an option makes this option visible to users and tooling.
2021-01-01 14:37:04 +01:00
Brian Gianforcaro 40f671ac67 CMake: Add public cmake option to document ENABLE_ALL_THE_DEBUG_MACROS
- Making this an option makes this option visible to users and tooling.
- Rename `ALL_THE_DEBUG_MACROS` -> `ENABLE_ALL_THE_DEBUG_MACROS`.
2021-01-01 14:37:04 +01:00
Linus Groh fb220d5678 Meta+Docs+CI: Require clang-format >= 11 2020-12-31 21:51:00 +01:00
meme 23b23cee5a Build: Support non-i686 toolchains
* Add SERENITY_ARCH option to CMake for selecting the target toolchain
* Port all build scripts but continue to use i686
* Update GitHub Actions cache to include BuildIt.sh
2020-12-29 17:42:04 +01:00
Andrew Kaster 207ecf454a CI: Prevent MacOS Lagom test failures from failing the build.
Also, switch to macos-10.15 runners. They are not as experimental, and
seem to spin up much faster than the Big Sur ones.
2020-12-28 19:35:32 +01:00
Luke 3bdaba0b28 Meta: Add macOS workflow to CI
A good number of contributors use macOS. However, we have a bit of
a tendency of breaking the macOS build without realising it.

Luckily, GitHub Actions does actually supply macOS environments,
so let's use it.
2020-12-28 19:35:32 +01:00
Linus Groh fec7501d1a Meta: Run lint-prettier.sh on CI 2020-12-27 21:25:27 +01:00
Luke 6d4fd02b92 Meta: Set two minute timeout for CMake tests
CMake tests usually takes ~40 seconds. However, sometimes it deadlocks
and is only timed out after the 6 hour time limit.

Let's set a 2 minute timeout to make it fail sooner. 2 minutes instead
of 1 for good measure.
2020-12-24 21:05:25 +01:00
Nico Weber a1d3f9e81e
CI: Use Ninja for building (#4293)
Makes watching build output on Actions on PRs slightly more pleasant.
2020-12-02 10:45:16 +01:00
Luke 5c911ad4b1 Meta: Add GitHub Actions workflow for Lagom with Fuzzers
There are cases where Lagom will build with GCC but not Clang.
This often goes unnoticed for a while as we don't often build with
Clang.

However, this is now important to test in CI because of the
OSS-Fuzz integration.

Note that this only tests the build, it does not run any tests.
Note that it also only builds LagomCore, Lagom and the fuzzers.
It does not build the other programs that use Lagom.
2020-11-29 20:22:56 +01:00
Brian Gianforcaro f0bf723424 Meta: Enable CodeQL static analysis for Serenity
CodeQL is a static analysis technology that was purchased by GitHub
and has been tightly integrated into the platform. It's different
from most other static analysis solutions because it's based on a
database built from your codebase, and then language specific rules
can be executed against that database. The rules are fully user
extensible, and are written in a datalog/query language.

The default cpp language rules coming from CodeQL will probably find
some issues, the ability to easily write custom rules/queries will
lend it self nicely to allowing us to validate Serenity specific
semantics are followed throughout the code.

References:
- https://www.youtube.com/watch?v=AMzGorD28Ks
- https://securitylab.github.com/tools/codeql
2020-11-26 09:48:21 +01:00
Ben Wiederhake ef9ac8a8a2 Meta: Use SerenityBot for IRC notifications
This avoids "useless" join/part notifications.
2020-11-14 15:30:29 +01:00
Ben Wiederhake 80d1e12116 Meta: Let toolchain patches invalidate toolchain cache
Fixes #4072.
2020-11-14 15:30:29 +01:00
Ben Wiederhake 58b70e8dc8 Meta: Fix broken IRC notification for drafts and skips 2020-11-14 13:16:48 +01:00
Ben Wiederhake cf9419fc4f Meta: Nicer IRC notifications 2020-11-13 08:56:56 +01:00
Ben Wiederhake 90f55e607d Meta: Ensure availability of python 2020-11-13 08:56:56 +01:00
Ben Wiederhake a0e25b2d31 Meta: Enable Github Actions 2020-11-08 09:58:55 +01:00
Andreas Kling d9bef3e237 Meta: Add GitHub Sponsors to funding options 2019-11-02 23:32:34 +01:00
Andreas Kling e0b4f14eb8 Meta: Add funding links to get a "Sponsor" button on GitHub 2019-08-25 11:41:30 +02:00