summary refs log tree commit diff
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)
downloadnixpkgs-3f40ca48bc556da618cd8eb8aa802f91135d4c4a.tar
nixpkgs-3f40ca48bc556da618cd8eb8aa802f91135d4c4a.tar.gz
nixpkgs-3f40ca48bc556da618cd8eb8aa802f91135d4c4a.tar.bz2
nixpkgs-3f40ca48bc556da618cd8eb8aa802f91135d4c4a.tar.lz
nixpkgs-3f40ca48bc556da618cd8eb8aa802f91135d4c4a.tar.xz
nixpkgs-3f40ca48bc556da618cd8eb8aa802f91135d4c4a.tar.zst
nixpkgs-3f40ca48bc556da618cd8eb8aa802f91135d4c4a.zip
.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 e499630a083..00000000000
--- 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 00000000000..3ad8f5cf5be
--- /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 00000000000..bbf62cb5dbc
--- /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 }}).