Files
cypress/.github/workflows/merge-master-into-develop.yml
2022-02-03 19:57:12 +00:00

80 lines
3.3 KiB
YAML

name: Merge master into develop
on:
push:
branches:
- master
jobs:
merge-master-into-develop:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
# the default `GITHUB_TOKEN` cannot push to protected branches, so use `cypress-app-bot`'s token instead
token: ${{ secrets.BOT_GITHUB_TOKEN }}
- name: Set committer info
run: |
git config --local user.email "$(git log --format='%ae' HEAD^!)"
git config --local user.name "$(git log --format='%an' HEAD^!)"
- name: Checkout develop branch
run: git checkout develop
- name: Check for merge conflict
id: check-conflict
run: echo "::set-output name=merge_conflict::$(git merge-tree $(git merge-base HEAD master) master HEAD | egrep '<<<<<<<')"
- name: Merge master into develop
id: merge-master
run: git merge master
if: ${{ !steps.check-conflict.outputs.merge_conflict }}
- name: Failed merge, set merged status as failed
run: echo "::set-output name=merge_conflict::'failed merge'"
if: ${{ steps.merge-master.outcome != 'success' }}
- name: Push
run: git push
if: ${{ !steps.check-conflict.outputs.merge_conflict }}
- name: Checkout master
run: git checkout master
if: ${{ steps.check-conflict.outputs.merge_conflict }}
- name: Determine name of new branch
id: gen-names
run: |
echo "::set-output name=sha::$(git rev-parse --short HEAD)"
echo "::set-output name=branch_name::$(git rev-parse --short HEAD)-master-into-develop"
if: ${{ steps.check-conflict.outputs.merge_conflict }}
- name: Create a copy of master on a new branch
run: git checkout -b ${{ steps.gen-names.outputs.branch_name }} master
if: ${{ steps.check-conflict.outputs.merge_conflict }}
- name: Push branch to remote
run: git push origin ${{ steps.gen-names.outputs.branch_name }}
if: ${{ steps.check-conflict.outputs.merge_conflict }}
- name: Create Pull Request
uses: actions/github-script@v3
with:
script: |
const pull = await github.pulls.create({
owner: context.repo.owner,
repo: context.repo.repo,
base: 'develop',
head: '${{ steps.gen-names.outputs.branch_name }}',
title: 'chore: merge master (${{ steps.gen-names.outputs.sha }}) into develop',
body: `There was a merge conflict when trying to automatically merge master into develop. Please resolve the conflict and complete the merge.
DO NOT SQUASH AND MERGE
@${context.actor}`,
maintainer_can_modify: true,
})
await github.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pull.data.number,
reviewers: [context.actor],
})
await github.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pull.data.number,
labels: ['auto-merge'],
})
if: ${{ steps.check-conflict.outputs.merge_conflict }}