mirror of
https://github.com/cypress-io/cypress.git
synced 2026-02-06 23:29:51 -06:00
80 lines
3.3 KiB
YAML
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 }}
|