Check if tier 2 targets build in the nightly cron job
This commit is contained in:
parent
8675aa1ebf
commit
7d5de709c8
4
src/tools/miri/.github/workflows/ci.yml
vendored
4
src/tools/miri/.github/workflows/ci.yml
vendored
@ -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).
|
||||
|
||||
|
49
src/tools/miri/.github/workflows/sysroots.yml
vendored
Normal file
49
src/tools/miri/.github/workflows/sysroots.yml
vendored
Normal 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'
|
@ -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",
|
||||
|
27
src/tools/miri/ci/build-all-targets.sh
Executable file
27
src/tools/miri/ci/build-all-targets.sh
Executable 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
|
15
src/tools/miri/ci/scrape-targets.py
Normal file
15
src/tools/miri/ci/scrape-targets.py
Normal 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)
|
Loading…
Reference in New Issue
Block a user