Commit Graph

258 Commits

Author SHA1 Message Date
Timothy Flynn
5bb00a75f5 CI: Do not "always" run GitHub Actions workflows
This way, if a branch is force-pushed in an open PR, running workflows
can be canceled.

https://docs.github.com/en/actions/learn-github-actions/expressions#always

"Always - Causes the step to always execute, and returns true, even when
canceled"
2022-03-14 10:27:19 -04:00
Idan Horowitz
bc98ad9cc1 CI: Disable compiletime header check
This check does not seem to provide a lot of value, and it is pretty
annoying, so let's just disable it for now.
2022-02-16 23:19:50 +02:00
Brian Gianforcaro
01cd838a4c Meta: Suppress rule V1076 in PVS-Studio Static Analysis
This rule attempts to flag invisible Unicode characters which would
potentially be used by an attacker to hide code that humans can't see.
https://pvs-studio.com/en/docs/warnings/v1076/

AKA the "Trojan Source" attack: https://arxiv.org/abs/2111.00169

Unfortunately our `LibUnicode` source code contains these hidden
characters as they are part of the Unicode character set that the
library exposes. So we have, and will always have 100s of false
positives.
2022-02-12 19:32:47 +02:00
Timothy Flynn
3c88749800 CI: Bundle and upload a js(1) release package
To include Serenity's LibJS on test262.report, we will need to integrate
with esvu. Create a .tar.gz with js(1) binary and the Lagom libraries it
it needs to run, and upload that package as a build artifact.
2022-02-09 12:19:56 +03:30
Rodolfo Olivieri
a05d25d4e5 CI: Add statement to ensure workflow runs only on serenity
Ensure that the `cmake.yml` workflow runs only on SerenityOS repository.
2022-02-09 11:27:06 +03:30
creator1creeper1
7851151cfb Meta: Make check-symbols.sh use the correct build directory
Since the build now happens in Build/$SERENITY_ARCH/ and not in Build/,
this updates check-symbols.sh to use the correct directory to check the
LibC symbols in. For some reason, the constant failures did not show
up as errors in CI.
2022-01-15 17:51:40 +01:00
Idan Horowitz
a8537ad096 CI: Require a blank line between commit titles and bodies 2022-01-11 23:45:14 +02:00
Linus Groh
14f6856d1d CI: Bump prettier to latest version (2.5.1) 2022-01-11 22:43:43 +01:00
Daniel Bertalan
d21c38a72d CI: Hash only relevant files for the key of the compiler cache
In the last few commits, a second patch was added to the LLVM toolchain,
and it no longer uses our binutils patch. This commit changes the CI
cache keys accordingly, in order to prevent unnecessary rebuilds of both
toolchains when only one is changed.

The Clang toolchain's cache now only takes into account patches that
begin with `llvm`, and the GNU toolchain excludes those from the hash
calculation. We now also hash the two CMake cache files that we use for
building LLVM and its runtime libraries.
2022-01-10 09:55:45 +03:30
davidot
f5b584f966 CI: Fix the name of the per-files in the test262 comparison runs
Also remove the always passing copy since the website has the files now.
2022-01-08 14:21:43 +01:00
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