diff --git a/.github/workflows/periodic-merge-24h.yml b/.github/workflows/periodic-merge-24h.yml index 0455c9f5a5e1..34282fb2c8f9 100644 --- a/.github/workflows/periodic-merge-24h.yml +++ b/.github/workflows/periodic-merge-24h.yml @@ -22,7 +22,7 @@ defaults: jobs: periodic-merge: - if: github.repository_owner == 'NixOS' + if: github.repository_owner == 'NixOS' || github.event_name == 'workflow_dispatch' strategy: # don't fail fast, so that all pairs are tried fail-fast: false @@ -49,3 +49,34 @@ jobs: name: ${{ matrix.pairs.name || format('{0} → {1}', matrix.pairs.from, matrix.pairs.into) }} secrets: NIXPKGS_CI_APP_PRIVATE_KEY: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }} + + # Resets the target branch of the current haskell-updates PR. + # This makes GitHub hide all the commits that are already part of staging and gives us a much clearer PR view. + haskell-updates: + needs: periodic-merge + runs-on: ubuntu-slim + permissions: + pull-requests: write + steps: + - name: Find PR and update target branch + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + with: + script: | + // There will at most be a single haskell-updates PR anyway, so no need to paginate. + await Promise.all( + ( + await github.rest.pulls.list({ + ...context.repo, + state: 'open', + head: `${context.repo.owner}:haskell-updates`, + }) + ).data.map((pr) => + github.rest.pulls.update({ + ...context.repo, + pull_number: pr.number, + // Just updating to the same branch to trigger a UI update. + // This is staging most of the time, but could be staging-next in rare cases. + base: pr.base.ref, + }), + ), + ) diff --git a/.github/workflows/periodic-merge-6h.yml b/.github/workflows/periodic-merge-6h.yml index edd4cb0b2df6..ad81eb6c9a3b 100644 --- a/.github/workflows/periodic-merge-6h.yml +++ b/.github/workflows/periodic-merge-6h.yml @@ -22,7 +22,7 @@ defaults: jobs: periodic-merge: - if: github.repository_owner == 'NixOS' + if: github.repository_owner == 'NixOS' || github.event_name == 'workflow_dispatch' strategy: # don't fail fast, so that all pairs are tried fail-fast: false