2020-10-04 06:53:13 -05:00
name : CI
on :
push :
# Run in PRs and for bors, but not on master.
branches :
- 'auto'
- 'try'
pull_request :
branches :
- 'master'
schedule :
# Use <https://crontab.guru> to conveniently edit cron schedule.
2020-10-04 10:01:10 -05:00
- cron : '0 7 * * *' # At 07:00 UTC every day.
2020-10-04 06:53:13 -05:00
jobs :
build :
runs-on : ${{ matrix.os }}
env :
RUST_BACKTRACE : 1
2020-10-04 10:01:10 -05:00
HOST_TARGET : ${{ matrix.host_target }}
2020-10-04 06:53:13 -05:00
strategy :
matrix :
build : [ linux64, macos, win32]
include :
- build : linux64
os : ubuntu-latest
host_target : x86_64-unknown-linux-gnu
- build : macos
os : macos-latest
host_target : x86_64-apple-darwin
- build : win32
os : windows-latest
host_target : i686-pc-windows-msvc
steps :
- uses : actions/checkout@v2
2020-10-06 04:11:14 -05:00
2020-10-04 10:01:10 -05:00
# We install gnu-tar because BSD tar is buggy on macOS builders of GHA.
# See <https://github.com/actions/cache/issues/403>.
- name : Install GNU tar
if : runner.os == 'macOS'
run : |
brew install gnu-tar
echo "/usr/local/opt/gnu-tar/libexec/gnubin" >> $GITHUB_PATH
# Cache the global cargo directory, but NOT the local `target` directory which
# we cannot reuse anyway when the nightly changes (and it grows quite large
# over time).
- name : Add cache for cargo
uses : actions/cache@v2
with :
path : |
# Taken from <https://doc.rust-lang.org/nightly/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci>.
~/.cargo/bin
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
# contains package information of crates installed via `cargo install`.
~/.cargo/.crates.toml
key : ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys : ${{ runner.os }}-cargo
- name : Install rustup-toolchain-install-master and xargo
2021-01-10 12:12:11 -06:00
shell : bash
2020-10-04 10:01:10 -05:00
run : |
cargo install rustup-toolchain-install-master
cargo install xargo
- name : Install "master" toolchain
2021-01-10 12:12:11 -06:00
shell : bash
2020-10-04 10:01:10 -05:00
run : |
if [[ ${{ github.event_name }} == 'schedule' ]]; then
RUSTC_HASH=$(git ls-remote https://github.com/rust-lang/rust.git master | awk '{print $1}')
else
RUSTC_HASH=$(< rust-version)
fi
rustup-toolchain-install-master \
-f \
-n master "$RUSTC_HASH" \
-c rust-src \
-c rustc-dev \
-c llvm-tools \
--host ${{ matrix.host_target }}
rustup default master
- name : Show Rust version
run : |
rustup show
rustc -Vv
cargo -V
- name : Test
run : bash ./ci.sh
2020-10-06 04:11:14 -05:00
# These jobs doesn't actually test anything, but they're only used to tell
# bors the build completed, as there is no practical way to detect when a
# workflow is successful listening to webhooks only.
#
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
end-success :
name : bors build finished
runs-on : ubuntu-latest
needs : [ build]
if : github.event.pusher.name == 'bors' && success()
steps :
- name : mark the job as a success
run : exit 0
end-failure :
name : bors build finished
runs-on : ubuntu-latest
needs : [ build]
if : github.event.pusher.name == 'bors' && (failure() || cancelled())
steps :
- name : mark the job as a failure
run : exit 1
2021-01-10 12:12:11 -06:00
# Send a Zulip notification when a cron job fails
cron-fail-notify :
name : cronjob failure notification
runs-on : ubuntu-latest
needs : [ build]
if : github.event_name == 'schedule' && (failure() || cancelled())
steps :
- name : Install zulip-send
run : pip3 install zulip
- name : Send Zulip notification
shell : bash
env :
ZULIP_BOT_EMAIL : ${{ secrets.ZULIP_BOT_EMAIL }}
ZULIP_API_TOKEN : ${{ secrets.ZULIP_API_TOKEN }}
run : |
2021-01-11 05:09:55 -06:00
~/.local/bin/zulip-send --stream miri --subject "Cron Job Failure" \
2021-01-17 14:26:24 -06:00
--message 'Dear @**RalfJ** and @**oli**\n\nIt would appear that the Miri cron job build failed. Would you mind investigating this issue?\n\nThanks in advance!\nSincerely,\nThe Miri Cronjobs Bot' \
2021-01-15 08:23:20 -06:00
--user $ZULIP_BOT_EMAIL --api-key $ZULIP_API_TOKEN --site https://rust-lang.zulipchat.com