From 3f40ca48bc556da618cd8eb8aa802f91135d4c4a Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sun, 27 Jun 2021 13:10:34 +0200 Subject: [PATCH] .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 --- .github/workflows/merge-staging.yml | 41 ------------------ .github/workflows/periodic-merge-24h.yml | 49 +++++++++++++++++++++ .github/workflows/periodic-merge-6h.yml | 55 ++++++++++++++++++++++++ 3 files changed, 104 insertions(+), 41 deletions(-) delete mode 100644 .github/workflows/merge-staging.yml create mode 100644 .github/workflows/periodic-merge-24h.yml create mode 100644 .github/workflows/periodic-merge-6h.yml 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 }}).