mirror of
https://github.com/CHN-beta/nixpkgs.git
synced 2026-01-12 02:40:31 +08:00
None of our jobs is expected to run for 6 hours, the GitHub limit. These
limits are generous and take into accounts that some jobs need to wait
for others.
If jobs exceed these times, most likely something else is wrong and
needs investigation.
(cherry picked from commit 436d54174d)
60 lines
2.5 KiB
YAML
60 lines
2.5 KiB
YAML
# Some workflows depend on the base branch of the PR, but changing the base branch is not included in the default trigger events, which would be `opened`, `synchronize` or `reopened`.
|
|
# Instead it causes an `edited` event.
|
|
# Since `edited` is also triggered when PR title/body is changed, we use this wrapper workflow, to run the other workflows conditionally only.
|
|
# There are already feature requests for adding a `base_changed` event:
|
|
# - https://github.com/orgs/community/discussions/35058
|
|
# - https://github.com/orgs/community/discussions/64119
|
|
#
|
|
# Instead of adding this to each workflow's pull_request_target event, we trigger this in a separate workflow.
|
|
# This has the advantage, that we can actually skip running those jobs for simple edits like changing the title or description.
|
|
# The actual trigger happens by closing and re-opening the pull request, which triggers the default pull_request_target events.
|
|
# This is much simpler and reliable than other approaches.
|
|
|
|
name: "Edited base branch"
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [edited]
|
|
|
|
concurrency:
|
|
group: edited-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
permissions: {}
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
base:
|
|
name: Trigger jobs
|
|
runs-on: ubuntu-24.04
|
|
if: github.event.changes.base.ref.from && github.event.changes.base.ref.from != github.event.pull_request.base.ref
|
|
timeout-minutes: 2
|
|
steps:
|
|
# Use a GitHub App to create the PR so that CI gets triggered
|
|
# The App is scoped to Repository > Contents and Pull Requests: write for Nixpkgs
|
|
# We only need Pull Requests: write here, but the app is also used for backports.
|
|
- uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
|
|
id: app-token
|
|
with:
|
|
app-id: ${{ vars.NIXPKGS_CI_APP_ID }}
|
|
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
|
|
permission-pull-requests: write
|
|
|
|
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
|
with:
|
|
github-token: ${{ steps.app-token.outputs.token }}
|
|
script: |
|
|
function changeState(state) {
|
|
return github.rest.pulls.update({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
pull_number: context.payload.pull_request.number,
|
|
state
|
|
})
|
|
}
|
|
await changeState('closed')
|
|
await changeState('open')
|