forked from SerenityOS/serenity
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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.
- Loading branch information
1 parent
97010d4
commit bac3c2c
Showing
2 changed files
with
245 additions
and
150 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
name: Clang toolchain status | ||
on: | ||
schedule: | ||
- cron: '0 0 * * *' | ||
|
||
jobs: | ||
build_and_test_serenity: | ||
runs-on: ubuntu-20.04 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
arch: [ 'i686', 'x86_64' ] | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: Install Ubuntu dependencies | ||
run: | | ||
sudo add-apt-repository ppa:canonical-server/server-backports | ||
sudo apt-get update | ||
sudo apt-get install libmpfr-dev libmpc-dev ninja-build e2fsprogs qemu-utils qemu-system-i386 | ||
- name: Check versions | ||
run: set +e; g++ --version; g++-10 --version; ninja --version; qemu-system-i386 --version | ||
|
||
- name: Regenerate Toolchain | ||
run: TRY_USE_LOCAL_TOOLCHAIN=y ARCH="${{ matrix.arch }}" ${{ github.workspace }}/Toolchain/BuildClang.sh | ||
|
||
- name: Create build directory | ||
run: | | ||
mkdir -p ${{ github.workspace }}/Build | ||
mkdir -p ${{ github.workspace }}/Build/UCD | ||
- name: UnicodeData cache | ||
# TODO: Change the version to the released version when https://github.com/actions/cache/pull/489 (or 571) is merged. | ||
uses: actions/cache@03e00da99d75a2204924908e1cca7902cafce66b | ||
with: | ||
path: ${{ github.workspace }}/Build/UCD | ||
key: UnicodeData-${{ hashFiles('Userland/Libraries/LibUnicode/unicode_data.cmake') }} | ||
|
||
- name: Create build environment | ||
working-directory: ${{ github.workspace }}/Build | ||
run: cmake .. -GNinja -DSERENITY_ARCH=${{ matrix.arch }} -DUSE_CLANG_TOOLCHAIN=ON -DENABLE_UNDEFINED_SANITIZER=ON -DENABLE_PCI_IDS_DOWNLOAD=OFF -DENABLE_USB_IDS_DOWNLOAD=OFF -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10 | ||
|
||
- name: Build Serenity and Tests | ||
working-directory: ${{ github.workspace }}/Build | ||
run: cmake --build . | ||
- name: Show ccache stats after build | ||
run: ccache -s | ||
|
||
- name: Create Serenity Rootfs | ||
working-directory: ${{ github.workspace }}/Build | ||
run: ninja install && ninja image | ||
|
||
- name: Run On-Target Tests | ||
working-directory: ${{ github.workspace }}/Build | ||
env: | ||
SERENITY_QEMU_CPU: "max,vmx=off" | ||
SERENITY_KERNEL_CMDLINE: "boot_mode=self-test" | ||
SERENITY_RUN: "ci" | ||
run: | | ||
echo "::group::ninja run # Qemu output" | ||
ninja run | ||
echo "::endgroup::" | ||
echo "::group::Verify Output File" | ||
mkdir fsmount | ||
sudo mount -t ext2 -o loop,rw _disk_image fsmount | ||
echo "Results: " | ||
sudo cat fsmount/home/anon/test-results.log | ||
if ! sudo grep -q "Failed: 0" fsmount/home/anon/test-results.log | ||
then | ||
echo "::error :^( Tests failed, failing job" | ||
exit 1 | ||
fi | ||
echo "::endgroup::" | ||
timeout-minutes: 60 | ||
|
||
- name: Print Target Logs | ||
# Extremely useful if Serenity hangs trying to run one of the tests | ||
if: ${{ !cancelled() }} | ||
working-directory: ${{ github.workspace }}/Build | ||
run: '[ ! -e debug.log ] || cat debug.log' | ||
|
||
notify_discord: | ||
runs-on: ubuntu-20.04 | ||
needs: build_and_test_serenity | ||
if: always() | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: technote-space/workflow-conclusion-action@v2 | ||
- name: Send discord notification | ||
env: | ||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_CLANG_WEBHOOK }} | ||
DISCORD_USERNAME: GitHub # we have to set these manually for non-default messages | ||
DISCORD_AVATAR: https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png | ||
uses: IdanHo/action-discord@754598254f288e6d8e9fca637832e3c163515ba8 | ||
with: | ||
args: "The clang build ${{ env.WORKFLOW_CONCLUSION == 'success' && 'passed :white_check_mark:' || 'failed :x:' }} :( https://github.com/SerenityOS/serenity/runs/${{github.run_id}}" | ||
|
Oops, something went wrong.