Weekly beta compile test #7
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
name: Weekly beta compile test | |
on: | |
schedule: | |
# New versions of rust release on Thursdays. We test on Mondays to get at least 3 days of warning before all our CI breaks again. | |
# https://forge.rust-lang.org/release/process.html#release-day-thursday | |
- cron: '0 12 * * 1' | |
workflow_dispatch: | |
env: | |
CARGO_TERM_COLOR: always | |
NIGHTLY_TOOLCHAIN: nightly | |
jobs: | |
test: | |
strategy: | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@beta | |
- name: Install alsa and udev | |
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev | |
if: runner.os == 'linux' | |
- name: Build & run tests | |
# See tools/ci/src/main.rs for the commands this runs | |
run: cargo run -p ci -- test | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUSTFLAGS: "-C debuginfo=0 -D warnings" | |
lint: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@beta | |
with: | |
components: rustfmt, clippy | |
- name: Install alsa and udev | |
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev | |
- name: Run lints | |
# See tools/ci/src/main.rs for the commands this runs | |
run: cargo run -p ci -- lints | |
check-compiles: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
needs: test | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@beta | |
- name: Install alsa and udev | |
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev | |
- name: Check compile test | |
# See tools/ci/src/main.rs for the commands this runs | |
run: cargo run -p ci -- compile | |
check-doc: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@beta | |
- name: Install alsa and udev | |
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev libwayland-dev libxkbcommon-dev | |
- name: Build and check docs | |
# See tools/ci/src/main.rs for the commands this runs | |
run: cargo run -p ci -- doc | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUSTFLAGS: "-C debuginfo=0" | |
open-issue: | |
name: Warn that weekly CI fails | |
runs-on: ubuntu-latest | |
needs: [test, lint, check-compiles, check-doc] | |
permissions: | |
issues: write | |
# Use always() so the job doesn't get canceled if any other jobs fail | |
if: ${{ always() && contains(needs.*.result, 'failure') }} | |
steps: | |
- name: Create issue | |
run: | | |
previous_issue_number=$(gh issue list \ | |
--search "$TITLE in:title" \ | |
--json number \ | |
--jq '.[0].number') | |
if [[ -n $previous_issue_number ]]; then | |
gh issue comment $previous_issue_number \ | |
--body "Weekly pipeline still fails: $FAILED_RUN" | |
else | |
gh issue create \ | |
--title "$TITLE" \ | |
--label "$LABELS" \ | |
--body "$BODY" | |
fi | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
GH_REPO: ${{ github.repository }} | |
TITLE: Main branch fails to compile on Rust beta. | |
LABELS: C-Bug,S-Needs-Triage | |
FAILED_RUN: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
BODY: | | |
## Weekly CI run has failed. | |
[The offending run.]($FAILED_RUN) |