Check if tier 2 targets build in the nightly cron job

This commit is contained in:
Ben Kimock 2024-01-07 11:18:13 -05:00
parent 8675aa1ebf
commit 7d5de709c8
6 changed files with 95 additions and 4 deletions

View File

@ -73,7 +73,7 @@ jobs:
cargo -V
- name: Test
run: ./ci.sh
run: ./ci/ci.sh
style:
name: style checks
@ -169,7 +169,7 @@ jobs:
--message 'Dear @*T-miri*,
It would appear that the [Miri cron job build]('"https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"') failed.
This likely means that rustc changed the miri directory and
we now need to do a [`./miri rustc-pull`](https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md#importing-changes-from-the-rustc-repo).

View File

@ -0,0 +1,49 @@
name: Tier 2 sysroots
on: push
# schedule:
# - cron: '44 4 * * *' # At 4:44 UTC every day.
defaults:
run:
shell: bash
jobs:
sysroots:
name: Build the sysroots
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build the sysroots
run: |
cargo install -f rustup-toolchain-install-master
./miri toolchain -c rust-docs # Docs are the only place targets are separated by tier
./miri install
python3 -m pip install beautifulsoup4
./ci/build-all-targets.sh
sysroots-cron-fail-notify:
name: sysroots cronjob failure notification
runs-on: ubuntu-latest
needs: [sysroots]
if: failure() || cancelled()
steps:
# Send a Zulip notification
- name: Install zulip-send
run: pip3 install zulip
- name: Send Zulip notification
env:
ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }}
ZULIP_API_TOKEN: ${{ secrets.ZULIP_API_TOKEN }}
run: |
~/.local/bin/zulip-send --user $ZULIP_BOT_EMAIL --api-key $ZULIP_API_TOKEN --site https://rust-lang.zulipchat.com \
--stream miri --subject "Cron Job Failure (miri, $(date -u +%Y-%m))" \
--message 'Dear @*T-miri*,
It would appear that the [Miri sysroots cron job build]('"https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"') failed.
Would you mind investigating this issue?
Thanks in advance!
Sincerely,
The Miri Cronjobs Bot'

View File

@ -212,9 +212,9 @@ dependencies = [
[[package]]
name = "rustc-build-sysroot"
version = "0.4.2"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ed2a90dfa5232ed5ff21d53d4df655f315ab316ea06fc508f1c74bcedb1ce6c"
checksum = "39dcf8d82b1f79a179bdb284dc44db440a9666eefa5a6df5ef282d6db930d544"
dependencies = [
"anyhow",
"rustc_version",

View File

@ -0,0 +1,27 @@
#!/bin/bash
set -eu
set -o pipefail
FAILS_DIR=failures
rm -rf $FAILS_DIR
mkdir $FAILS_DIR
PLATFORM_SUPPORT_FILE=$(rustc +miri --print sysroot)/share/doc/rust/html/rustc/platform-support.html
for target in $(python3 ci/scrape-targets.py $PLATFORM_SUPPORT_FILE); do
# Wipe the cache before every build to minimize disk usage
rm -rf ~/.cache/miri
if cargo +miri miri setup --target $target 2>&1 | tee failures/$target; then
# If the build succeeds, delete its output. If we have output, a build failed.
rm $FAILS_DIR/$target
fi
done
# If the sysroot for any target fails to build, we will have a file in FAILS_DIR.
if [[ $(ls failures | wc -l) -ne 0 ]]; then
echo "Sysroots for the following targets failed to build:"
ls $FAILS_DIR
exit 1
fi

View File

@ -0,0 +1,15 @@
import sys
from bs4 import BeautifulSoup
html = open(sys.argv[1], 'r').read()
soup = BeautifulSoup(html, features="html.parser")
# The tables are:
# Tier 1 <-- this is already checked by main CI, so we ignore it here
# Tier 2 with host tools <-- we want this one
# Tier 2 without host tools <-- and also this
# Tier 3
for table in soup.find_all("table")[1:3]:
for row in table.find_all('tr'):
code = row.find('code')
if code is not None:
print(code.text)