Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create Pull Request on Git Push

I have GitHub repository with 2 branches: "master" & "develop".

The workflow for us is that any code should be committed to the "develop" branch then pushed to GitHub, then a Pull Request should be created to merge the commits into the "master" branch.

I am trying to write an Action that will create a Pull Request once a developer pushes commits to the branch "develop" and had the following script:

name: Create pull request
on:
  push:
    branches:
      - develop
jobs:
  prForMasterBranch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: master
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v2
        with:
          commit-message: update master branch
          title: Update master branch
          branch: develop

I can see that this action has executed successfully on "Push" event of the "develop" branch, but I can't see any new Pull Requests!

I checked the logs for the action and found these lines at the end of pull request creation:

Pushing pull request branch to 'origin/develop'
Branch 'develop' no longer differs from base branch 'master'
Closing pull request and deleting branch 'develop'

It seems I am missing something, but couldn't figure it out.

Any help is appreciated.


2 Answers

If you look at the documentation of the create-pull-request action, it mentions that

Create Pull Request action will:

  • Check for repository changes in the Actions workspace. This includes:
    • untracked (new) files - tracked (modified) files - commits made during the workflow that have not been pushed
  • Commit all changes to a new branch, or update an existing pull request branch.
  • Create a pull request to merge the new branch into the base—the branch checked out in the workflow.

It would always need an intermediary branch where it can commit the changes.

So if you modify your workflow config as below, adding the Reset master branch step to get the latest changes from the remote develop branch and reset the master branch, and specify branch: temp for the action, the workflow would create a temp branch with the same commits that you have pushed to develop branch and open a PR from temp to master branch. In subsequent commits to develop, it would keep on making the same changes to temp branch and open a PR similarly or update the existing PR.

name: Create pull request
on:
  push:
    branches:
      - develop
jobs:
  prForMasterBranch:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: master
      - name: Reset master branch
        run: |
          git fetch origin develop:develop
          git reset --hard develop
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v4
        with:
          commit-message: update master branch
          title: Update master branch
          branch: temp
          delete-branch: true
          assignees: user-you-want-to
          reviewers: user-you-want-to

Note that the temp branch will have the exact commits that are pushed to the develop branch.

like image 197
Madhu Bhat Avatar answered Sep 11 '26 15:09

Madhu Bhat


PR without intermediate branch

Replace

team-you-want-to

or

user-you-want-to

with team or user you want assign if needed, if not comment them.

name: Create pull request
on:
  push:
    branches:
      - develop
jobs:
  reatePullRequest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          ref: master
      - name: Get latest changes
        run: |
          git fetch origin develop:develop
          git reset --hard develop
      - name: Create Pull Request
        id: cpr
        uses: peter-evans/create-pull-request@v4
        with:
          commit-message: Update master
          committer: GitHub <[email protected]>
          author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
          signoff: false
          branch: develop
          title: 'Updating master'
          labels: |
            update
          reviewers: user-you-want-to
          team-reviewers: |
            team-you-want-to
          draft: false
like image 22
A C Avatar answered Sep 11 '26 15:09

A C



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!