summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2021-06-27 13:10:34 +0200
committerMartin Weinelt <hexa@darmstadt.ccc.de>2021-06-30 22:42:16 +0200
commit3f40ca48bc556da618cd8eb8aa802f91135d4c4a (patch)
tree4f18279d9261db520c718c2e820c34ed0f508f0a /.github
parent4ba70da807359ed01d662763a96c7b442762e5ef (diff)
.github/workflows/periodic-merge: generalize from merge-staging
By generalizing the previous merge-staging action we can support a large number of branch pairs that need to be merged periodically. Provide two intervals, daily and every six hours, to accomodate different needs. Co-Authored-By: Malte Brandy <malte.brandy@maralorn.de>
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/merge-staging.yml41
-rw-r--r--.github/workflows/periodic-merge-24h.yml49
-rw-r--r--.github/workflows/periodic-merge-6h.yml55
3 files changed, 104 insertions, 41 deletions
diff --git a/.github/workflows/merge-staging.yml b/.github/workflows/merge-staging.yml
deleted file mode 100644
index e499630a083b..000000000000
--- a/.github/workflows/merge-staging.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: "merge staging(-next)"
-
-on:
- schedule:
- # * is a special character in YAML so you have to quote this string
- # Merge every 6 hours
- - cron: '0 */6 * * *'
-
-jobs:
- sync-branch:
- if: github.repository_owner == 'NixOS'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
-
- - name: Merge master into staging-next
- id: staging_next
- uses: devmasx/merge-branch@v1.3.1
- with:
- type: now
- from_branch: master
- target_branch: staging-next
- github_token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Merge staging-next into staging
- id: staging
- uses: devmasx/merge-branch@v1.3.1
- with:
- type: now
- from_branch: staging-next
- target_branch: staging
- github_token: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Comment on failure
- uses: peter-evans/create-or-update-comment@v1
- if: ${{ failure() }}
- with:
- issue-number: 105153
- body: |
- An automatic merge${{ (steps.staging_next.outcome == 'failure' && ' from master to staging-next') || ((steps.staging.outcome == 'failure' && ' from staging-next to staging') || '') }} [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
-
diff --git a/.github/workflows/periodic-merge-24h.yml b/.github/workflows/periodic-merge-24h.yml
new file mode 100644
index 000000000000..3ad8f5cf5bea
--- /dev/null
+++ b/.github/workflows/periodic-merge-24h.yml
@@ -0,0 +1,49 @@
+# This action periodically merges base branches into staging branches.
+# This is done to
+# * prevent conflicts or rather resolve them early
+# * make all potential breakage happen on the staging branch
+# * and make sure that all major rebuilds happen before the staging
+# branch get’s merged back into its base branch.
+
+name: "Periodic Merges"
+
+
+on:
+ schedule:
+ # * is a special character in YAML so you have to quote this string
+ # Merge every 6 hours
+ - cron: '0 */24 * * *'
+
+jobs:
+ periodic-merge:
+ if: github.repository_owner == 'NixOS'
+ runs-on: ubuntu-latest
+ strategy:
+ # don't fail fast, so that all pairs are tried
+ fail-fast: false
+ # certain branches need to be merged in order, like master->staging-next->staging
+ # and disabling parallelism ensures the order of the pairs below.
+ max-parallel: 1
+ matrix:
+ pairs:
+ - from: master
+ into: haskell-updates
+ name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
+ uses: devmasx/merge-branch@v1.3.1
+ with:
+ type: now
+ from_branch: ${{ matrix.pairs.from }}
+ target_branch: ${{ matrix.pairs.into }}
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Comment on failure
+ uses: peter-evans/create-or-update-comment@v1
+ if: ${{ failure() }}
+ with:
+ issue-number: 105153
+ body: |
+ Periodic merge from `${{ matrix.pairs.from }}` into `${{ matrix.pairs.into }}` has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).
diff --git a/.github/workflows/periodic-merge-6h.yml b/.github/workflows/periodic-merge-6h.yml
new file mode 100644
index 000000000000..bbf62cb5dbcc
--- /dev/null
+++ b/.github/workflows/periodic-merge-6h.yml
@@ -0,0 +1,55 @@
+# This action periodically merges base branches into staging branches.
+# This is done to
+# * prevent conflicts or rather resolve them early
+# * make all potential breakage happen on the staging branch
+# * and make sure that all major rebuilds happen before the staging
+# branch get’s merged back into its base branch.
+
+name: "Periodic Merges"
+
+
+on:
+ schedule:
+ # * is a special character in YAML so you have to quote this string
+ # Merge every 6 hours
+ - cron: '0 */6 * * *'
+
+jobs:
+ periodic-merge:
+ if: github.repository_owner == 'NixOS'
+ runs-on: ubuntu-latest
+ strategy:
+ # don't fail fast, so that all pairs are tried
+ fail-fast: false
+ # certain branches need to be merged in order, like master->staging-next->staging
+ # and disabling parallelism ensures the order of the pairs below.
+ max-parallel: 1
+ matrix:
+ pairs:
+ - from: master
+ into: staging-next
+ - from: staging-next
+ into: staging
+ - from: release-21.05
+ into: staging-next-21.05
+ - from: staging-next-21.05
+ into: staging-21.05
+ name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: ${{ matrix.pairs.from }} → ${{ matrix.pairs.into }}
+ uses: devmasx/merge-branch@v1.3.1
+ with:
+ type: now
+ from_branch: ${{ matrix.pairs.from }}
+ target_branch: ${{ matrix.pairs.into }}
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Comment on failure
+ uses: peter-evans/create-or-update-comment@v1
+ if: ${{ failure() }}
+ with:
+ issue-number: 105153
+ body: |
+ Periodic merge from `${{ matrix.pairs.from }}` into `${{ matrix.pairs.into }}` has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}).