|  | 
| 1 |  | -name: Clippy Test (bors) | 
|  | 1 | +name: Clippy Test (merge queue) | 
| 2 | 2 | 
 | 
| 3 | 3 | on: | 
| 4 |  | -  push: | 
| 5 |  | -    branches: | 
| 6 |  | -      - auto | 
| 7 |  | -      - try | 
|  | 4 | +  merge_group: | 
| 8 | 5 | 
 | 
| 9 | 6 | env: | 
| 10 | 7 |   RUST_BACKTRACE: 1 | 
|  | 
| 13 | 10 |   CARGO_INCREMENTAL: 0 | 
| 14 | 11 |   RUSTFLAGS: -D warnings | 
| 15 | 12 | 
 | 
| 16 |  | -concurrency: | 
| 17 |  | -  # For a given workflow, if we push to the same branch, cancel all previous builds on that branch. | 
| 18 |  | -  group: "${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}" | 
| 19 |  | -  cancel-in-progress: true | 
| 20 |  | - | 
| 21 | 13 | defaults: | 
| 22 | 14 |   run: | 
| 23 | 15 |     shell: bash | 
| @@ -218,28 +210,21 @@ jobs: | 
| 218 | 210 |       env: | 
| 219 | 211 |         INTEGRATION: ${{ matrix.integration }} | 
| 220 | 212 | 
 | 
| 221 |  | -  # These jobs doesn't actually test anything, but they're only used to tell | 
| 222 |  | -  # bors the build completed, as there is no practical way to detect when a | 
| 223 |  | -  # workflow is successful listening to webhooks only. | 
| 224 |  | -  # | 
| 225 |  | -  # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB! | 
| 226 |  | - | 
| 227 |  | -  end-success: | 
| 228 |  | -    name: bors test finished | 
| 229 |  | -    if: github.event.pusher.name == 'bors' && success() | 
|  | 213 | +  conclusion: | 
|  | 214 | +    needs: [ changelog, base, metadata_collection, integration_build, integration ] | 
|  | 215 | +    # We need to ensure this job does *not* get skipped if its dependencies fail, | 
|  | 216 | +    # because a skipped job is considered a success by GitHub. So we have to | 
|  | 217 | +    # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run | 
|  | 218 | +    # when the workflow is canceled manually. | 
|  | 219 | +    # | 
|  | 220 | +    # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB! | 
|  | 221 | +    if: ${{ !cancelled() }} | 
| 230 | 222 |     runs-on: ubuntu-latest | 
| 231 |  | -    needs: [changelog, base, metadata_collection, integration_build, integration] | 
| 232 |  | - | 
| 233 |  | -    steps: | 
| 234 |  | -      - name: Mark the job as successful | 
| 235 |  | -        run: exit 0 | 
| 236 |  | - | 
| 237 |  | -  end-failure: | 
| 238 |  | -    name: bors test finished | 
| 239 |  | -    if: github.event.pusher.name == 'bors' && (failure() || cancelled()) | 
| 240 |  | -    runs-on: ubuntu-latest | 
| 241 |  | -    needs: [changelog, base, metadata_collection, integration_build, integration] | 
| 242 |  | - | 
| 243 | 223 |     steps: | 
| 244 |  | -      - name: Mark the job as a failure | 
| 245 |  | -        run: exit 1 | 
|  | 224 | +      # Manually check the status of all dependencies. `if: failure()` does not work. | 
|  | 225 | +      - name: Conclusion | 
|  | 226 | +        run: | | 
|  | 227 | +          # Print the dependent jobs to see them in the CI log | 
|  | 228 | +          jq -C <<< '${{ toJson(needs) }}' | 
|  | 229 | +          # Check if all jobs that we depend on (in the needs array) were successful. | 
|  | 230 | +          jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}' | 
0 commit comments