0

im using github enterprise
i need a github action with 2 steps: 1st runnning whenever a pull-request is opened from 'head' branch to 'base' and the 2nd when the PR is merged.
for now i've created 2 github actions for it:

name: PR Opened

on:
  pull_request:
    branches:
    - base
jobs:
  api_call_on_pr:
    runs-on: ubuntu-latest
    steps:

    - name: API call on PR
      if: ${{ github.head_ref == 'head'  }}   
      id: api_call
      run: |
         curl "api call on PR"

and

name: PR MeRged

on:
  pull_request:
    branches:
      - base
    types:
      - closed      

jobs:
  api_call_on_merge:
    runs-on: ubuntu-latest
    steps:

    - name: API call on MERGE
      if: github.event.pull_request.merged == true    
      run: |
        curl "api call on MERGE"

i still wasn't able to test these actions actually but even if they function properly - is there any other, more elegant/smart way to achieve this result?

servusMori
  • 9
  • 1
  • 4
  • When the PR is merged is equivalent to when a PUSH is made to the other branch. Therefore the second workflow should use this trigger instead. – GuiFalourd Apr 06 '23 at 14:19

1 Answers1

0

I think the way I would approach it is to have the PR workflow run whenever there is a change to the PR and then the PR merged workflow would just run whenever there is a push to the base branch (which includes merging the PR).

name: Push to base

on:
  push:
    branches:
      - base      

jobs:
  api_call_on_merge:
    runs-on: ubuntu-latest
    steps:
    # Steps here!

If you want to specifically run a workflow every time a PR gets merged and not on every push, then the second workflow you had looks correct. There is an example of it in Github's documentation

Pol Piella
  • 36
  • 4