Weekly beta compile test #12
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 | |
# The jobs listed here are intentionally skipped when running on forks, for a number of reasons: | |
# | |
# * Scheduled workflows run on the base/default branch, with no way (currently) to change this. On | |
# forks, the base/default branch is usually kept in sync with the main Bevy repository, meaning | |
# that running this workflow on forks would just be a waste of resources. | |
# | |
# * Even if there was a way to change the branch that a scheduled workflow runs on, forks default | |
# to not having an issue tracker. | |
# | |
# * Even in the event that a fork's issue tracker is enabled, most users probably don't want to | |
# receive automated issues in the event of a compilation failure. | |
# | |
# Because of these reasons, this workflow is irrelevant for 99% of forks. Thus, the jobs here will | |
# be skipped when running on any repository that isn't the main Bevy repository. | |
jobs: | |
test: | |
strategy: | |
matrix: | |
os: [windows-latest, ubuntu-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
# Disable this job when running on a fork. | |
if: github.repository == 'bevyengine/bevy' | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@beta | |
- name: Install Linux dependencies | |
uses: ./.github/actions/install-linux-deps | |
- 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 | |
# Disable this job when running on a fork. | |
if: github.repository == 'bevyengine/bevy' | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@beta | |
with: | |
components: rustfmt, clippy | |
- name: Install Linux dependencies | |
uses: ./.github/actions/install-linux-deps | |
with: | |
wayland: true | |
xkb: true | |
- 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 | |
# Disable this job when running on a fork. | |
if: github.repository == 'bevyengine/bevy' | |
timeout-minutes: 30 | |
needs: test | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@beta | |
- name: Install Linux dependencies | |
uses: ./.github/actions/install-linux-deps | |
- name: Check compile test | |
# See tools/ci/src/main.rs for the commands this runs | |
run: cargo run -p ci -- compile | |
open-issue: | |
name: Warn that weekly CI fails | |
runs-on: ubuntu-latest | |
needs: [test, lint, check-compiles] | |
permissions: | |
issues: write | |
# We disable this job on forks, because | |
# Use always() so the job doesn't get canceled if any other jobs fail | |
if: ${{ github.repository == 'bevyengine/bevy' && 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: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
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 | |
BODY: | | |
## Weekly CI run has failed. | |
[The offending run.](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) |