forked from NixOS/nixpkgs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
workflows/periodic-merge: merge merge-base into haskell-updates
Since haskell-updates is based on master, but merges into staging, we need to base it on a merge-base of staging and master. See NixOS#361143. I'm a bit worried that the information GitHub uses for displaying Pull-Requests becomes stale and this will “add” commits to the PR compared to the base anyways. We'll find out, I suppose.
- Loading branch information
1 parent
abbb41c
commit 7a15471
Showing
2 changed files
with
59 additions
and
2 deletions.
There are no files selected for viewing
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
# This action periodically merges a merge base of master and staging into haskell-updates. | ||
# | ||
# haskell-updates is based on master (so there are little unrelated failures and the cache | ||
# is already prepopulated), but needs to target staging due to the high amount of rebuilds | ||
# it typically causes. To prevent unrelated commits clattering the GitHub UI, we need to | ||
# take care to only merge the merge-base of master and staging into haskell-updates. | ||
# | ||
# See also https://github.com/NixOS/nixpkgs/issues/361143. | ||
|
||
name: "Periodic Merges (haskell-updates)" | ||
|
||
|
||
on: | ||
schedule: | ||
# * is a special character in YAML so you have to quote this string | ||
# Merge every 24 hours | ||
- cron: '0 0 * * *' | ||
workflow_dispatch: | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
periodic-merge: | ||
permissions: | ||
contents: write # for devmasx/merge-branch to merge branches | ||
pull-requests: write # for peter-evans/create-or-update-comment to create or update comment | ||
if: github.repository_owner == 'NixOS' | ||
runs-on: ubuntu-latest | ||
name: git merge-base master staging → haskell-updates | ||
steps: | ||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
with: | ||
fetch-depth: 0 | ||
|
||
# Note: If we want to do something similar for more branches, we can move this into a | ||
# separate job, so we can use the matrix strategy again. | ||
- name: Find merge base of master and staging | ||
id: find_merge_base_step | ||
run: | | ||
merge_base="$(git merge-base refs/remotes/origin/master refs/remotes/origin/staging)" | ||
echo "Found merge base: $merge_base" >&2 | ||
echo "merge_base=$merge_base" >> "$GITHUB_OUTPUT" | ||
- name: git merge-base master staging → haskell-updates | ||
uses: devmasx/merge-branch@854d3ac71ed1e9deb668e0074781b81fdd6e771f # 1.4.0 | ||
with: | ||
type: now | ||
head_to_merge: ${{ steps.find_merge_base_step.outputs.merge_base }} | ||
target_branch: haskell-updates | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Comment on failure | ||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 | ||
if: ${{ failure() }} | ||
with: | ||
issue-number: 367709 | ||
body: | | ||
Periodic merge from `${{ steps.find_merge_base_step.outputs.merge_base }}` into `haskell-updates` has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}). |