Merge pull request #13587 from Kobzol/ci-remove-bors

Switch CI from bors to merge queue
This commit is contained in:
Philipp Krones 2024-11-07 17:42:31 +00:00 committed by GitHub
commit a28c44fc96
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 75 additions and 129 deletions

View file

@ -1,17 +1,8 @@
name: Clippy Dev Test name: Clippy Dev Test
on: on:
push: merge_group:
branches:
- auto
- try
pull_request: pull_request:
# Only run on paths, that get checked by the clippy_dev tool
paths:
- 'CHANGELOG.md'
- 'README.md'
- '**.stderr'
- '**.rs'
env: env:
RUST_BACKTRACE: 1 RUST_BACKTRACE: 1
@ -47,28 +38,21 @@ jobs:
cargo check cargo check
git reset --hard HEAD git reset --hard HEAD
# These jobs doesn't actually test anything, but they're only used to tell conclusion_dev:
# bors the build completed, as there is no practical way to detect when a needs: [ clippy_dev ]
# workflow is successful listening to webhooks only. # We need to ensure this job does *not* get skipped if its dependencies fail,
# # because a skipped job is considered a success by GitHub. So we have to
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB! # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
# when the workflow is canceled manually.
end-success: #
name: bors dev test finished # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
if: github.event.pusher.name == 'bors' && success() if: ${{ !cancelled() }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [clippy_dev]
steps: steps:
- name: Mark the job as successful # Manually check the status of all dependencies. `if: failure()` does not work.
run: exit 0 - name: Conclusion
run: |
end-failure: # Print the dependent jobs to see them in the CI log
name: bors dev test finished jq -C <<< '${{ toJson(needs) }}'
if: github.event.pusher.name == 'bors' && (failure() || cancelled()) # Check if all jobs that we depend on (in the needs array) were successful.
runs-on: ubuntu-latest jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
needs: [clippy_dev]
steps:
- name: Mark the job as a failure
run: exit 1

View file

@ -1,10 +1,7 @@
name: Clippy Test (bors) name: Clippy Test (merge queue)
on: on:
push: merge_group:
branches:
- auto
- try
env: env:
RUST_BACKTRACE: 1 RUST_BACKTRACE: 1
@ -13,11 +10,6 @@ env:
CARGO_INCREMENTAL: 0 CARGO_INCREMENTAL: 0
RUSTFLAGS: -D warnings RUSTFLAGS: -D warnings
concurrency:
# For a given workflow, if we push to the same branch, cancel all previous builds on that branch.
group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}"
cancel-in-progress: true
defaults: defaults:
run: run:
shell: bash shell: bash
@ -218,28 +210,21 @@ jobs:
env: env:
INTEGRATION: ${{ matrix.integration }} INTEGRATION: ${{ matrix.integration }}
# These jobs doesn't actually test anything, but they're only used to tell conclusion:
# bors the build completed, as there is no practical way to detect when a needs: [ changelog, base, metadata_collection, integration_build, integration ]
# workflow is successful listening to webhooks only. # We need to ensure this job does *not* get skipped if its dependencies fail,
# # because a skipped job is considered a success by GitHub. So we have to
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB! # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
# when the workflow is canceled manually.
end-success: #
name: bors test finished # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
if: github.event.pusher.name == 'bors' && success() if: ${{ !cancelled() }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [changelog, base, metadata_collection, integration_build, integration]
steps: steps:
- name: Mark the job as successful # Manually check the status of all dependencies. `if: failure()` does not work.
run: exit 0 - name: Conclusion
run: |
end-failure: # Print the dependent jobs to see them in the CI log
name: bors test finished jq -C <<< '${{ toJson(needs) }}'
if: github.event.pusher.name == 'bors' && (failure() || cancelled()) # Check if all jobs that we depend on (in the needs array) were successful.
runs-on: ubuntu-latest jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
needs: [changelog, base, metadata_collection, integration_build, integration]
steps:
- name: Mark the job as a failure
run: exit 1

View file

@ -1,24 +1,7 @@
name: Clippy Test name: Clippy Test
on: on:
push:
# Ignore bors branches, since they are covered by `clippy_bors.yml`
branches-ignore:
- auto
- try
# Don't run Clippy tests, when only text files were modified
paths-ignore:
- 'COPYRIGHT'
- 'LICENSE-*'
- '**.md'
- '**.txt'
pull_request: pull_request:
# Don't run Clippy tests, when only text files were modified
paths-ignore:
- 'COPYRIGHT'
- 'LICENSE-*'
- '**.md'
- '**.txt'
env: env:
RUST_BACKTRACE: 1 RUST_BACKTRACE: 1
@ -35,7 +18,7 @@ concurrency:
jobs: jobs:
base: base:
# NOTE: If you modify this job, make sure you copy the changes to clippy_bors.yml # NOTE: If you modify this job, make sure you copy the changes to clippy_mq.yml
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@ -73,3 +56,24 @@ jobs:
run: .github/driver.sh run: .github/driver.sh
env: env:
OS: ${{ runner.os }} OS: ${{ runner.os }}
# We need to have the "conclusion" job also on PR CI, to make it possible
# to add PRs to a merge queue.
conclusion:
needs: [ base ]
# We need to ensure this job does *not* get skipped if its dependencies fail,
# because a skipped job is considered a success by GitHub. So we have to
# overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
# when the workflow is canceled manually.
#
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps:
# Manually check the status of all dependencies. `if: failure()` does not work.
- name: Conclusion
run: |
# Print the dependent jobs to see them in the CI log
jq -C <<< '${{ toJson(needs) }}'
# Check if all jobs that we depend on (in the needs array) were successful.
jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'

View file

@ -1,13 +1,8 @@
name: Remark name: Remark
on: on:
push: merge_group:
branches:
- auto
- try
pull_request: pull_request:
paths:
- '**.md'
jobs: jobs:
remark: remark:
@ -45,28 +40,21 @@ jobs:
- name: Build mdbook - name: Build mdbook
run: mdbook build book run: mdbook build book
# These jobs doesn't actually test anything, but they're only used to tell conclusion_remark:
# bors the build completed, as there is no practical way to detect when a needs: [ remark ]
# workflow is successful listening to webhooks only. # We need to ensure this job does *not* get skipped if its dependencies fail,
# # because a skipped job is considered a success by GitHub. So we have to
# ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB! # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
# when the workflow is canceled manually.
end-success: #
name: bors remark test finished # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
if: github.event.pusher.name == 'bors' && success() if: ${{ !cancelled() }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [remark]
steps: steps:
- name: Mark the job as successful # Manually check the status of all dependencies. `if: failure()` does not work.
run: exit 0 - name: Conclusion
run: |
end-failure: # Print the dependent jobs to see them in the CI log
name: bors remark test finished jq -C <<< '${{ toJson(needs) }}'
if: github.event.pusher.name == 'bors' && (failure() || cancelled()) # Check if all jobs that we depend on (in the needs array) were successful.
runs-on: ubuntu-latest jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
needs: [remark]
steps:
- name: Mark the job as a failure
run: exit 1

View file

@ -21,7 +21,6 @@ All contributors are expected to follow the [Rust Code of Conduct].
- [Rust Analyzer](#rust-analyzer) - [Rust Analyzer](#rust-analyzer)
- [How Clippy works](#how-clippy-works) - [How Clippy works](#how-clippy-works)
- [Issue and PR triage](#issue-and-pr-triage) - [Issue and PR triage](#issue-and-pr-triage)
- [Bors and Homu](#bors-and-homu)
- [Contributions](#contributions) - [Contributions](#contributions)
- [License](#license) - [License](#license)
@ -213,16 +212,6 @@ We have prioritization labels and a sync-blocker label, which are described belo
Or rather: before the sync this should be addressed, Or rather: before the sync this should be addressed,
e.g. by removing a lint again, so it doesn't hit beta/stable. e.g. by removing a lint again, so it doesn't hit beta/stable.
## Bors and Homu
We use a bot powered by [Homu][homu] to help automate testing and landing of pull
requests in Clippy. The bot's username is @bors.
You can find the Clippy bors queue [here][homu_queue].
If you have @bors permissions, you can find an overview of the available
commands [here][homu_instructions].
[triage]: https://forge.rust-lang.org/release/triage-procedure.html [triage]: https://forge.rust-lang.org/release/triage-procedure.html
[l-crash]: https://github.com/rust-lang/rust-clippy/labels/L-crash [l-crash]: https://github.com/rust-lang/rust-clippy/labels/L-crash
[l-bug]: https://github.com/rust-lang/rust-clippy/labels/L-bug [l-bug]: https://github.com/rust-lang/rust-clippy/labels/L-bug
@ -230,9 +219,6 @@ commands [here][homu_instructions].
[p-medium]: https://github.com/rust-lang/rust-clippy/labels/P-medium [p-medium]: https://github.com/rust-lang/rust-clippy/labels/P-medium
[p-high]: https://github.com/rust-lang/rust-clippy/labels/P-high [p-high]: https://github.com/rust-lang/rust-clippy/labels/P-high
[l-sync-blocker]: https://github.com/rust-lang/rust-clippy/labels/L-sync-blocker [l-sync-blocker]: https://github.com/rust-lang/rust-clippy/labels/L-sync-blocker
[homu]: https://github.com/rust-lang/homu
[homu_instructions]: https://bors.rust-lang.org/
[homu_queue]: https://bors.rust-lang.org/queue/clippy
## Contributions ## Contributions
@ -244,7 +230,7 @@ All PRs should include a `changelog` entry with a short comment explaining the c
"what do you believe is important from an outsider's perspective?" Often, PRs are only related to a single property of a "what do you believe is important from an outsider's perspective?" Often, PRs are only related to a single property of a
lint, and then it's good to mention that one. Otherwise, it's better to include too much detail than too little. lint, and then it's good to mention that one. Otherwise, it's better to include too much detail than too little.
Clippy's [changelog] is created from these comments. Every release, someone gets all commits from bors with a Clippy's [changelog] is created from these comments. Every release, someone gets all merge commits with a
`changelog: XYZ` entry and combines them into the changelog. This is a manual process. `changelog: XYZ` entry and combines them into the changelog. This is a manual process.
Examples: Examples:

View file

@ -53,7 +53,6 @@ book](../lints.md).
> - IDE setup > - IDE setup
> - High level overview on how Clippy works > - High level overview on how Clippy works
> - Triage procedure > - Triage procedure
> - Bors and Homu
[ast]: https://rustc-dev-guide.rust-lang.org/syntax-intro.html [ast]: https://rustc-dev-guide.rust-lang.org/syntax-intro.html
[hir]: https://rustc-dev-guide.rust-lang.org/hir.html [hir]: https://rustc-dev-guide.rust-lang.org/hir.html