Skip to content

Commit

Permalink
Merge pull request #4 from Yoast/JRF/add-reusable-merge-conflict-chec…
Browse files Browse the repository at this point in the history
…k-workflow

QA: add reusable merge conflict check workflow
  • Loading branch information
jrfnl authored Dec 22, 2024
2 parents 0d014e6 + cf01cef commit 07dbec7
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/merge-conflict-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Check PRs for merge conflicts

on:
# Check for new conflicts due to merges.
push:
branches:
- main
# Check conflicts in new PRs and for resolved conflicts due to an open PR being updated.
pull_request_target:
types:
- opened
- synchronize
- reopened

jobs:
check-prs:
if: github.repository_owner == 'Yoast'

name: Check PRs for merge conflicts
uses: ./.github/workflows/reusable-merge-conflict-check.yml
61 changes: 61 additions & 0 deletions .github/workflows/reusable-merge-conflict-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Check PRs for merge conflicts

on:
workflow_call:
# Note: the following inputs from the eps1lon/actions-label-merge-conflict
# action runner are not made available as inputs for end-user workflows at this time.
# - repoToken: set to secrets.GITHUB_TOKEN, which should be fine in all cases (except forks).
# - retryAfter: defaults to 120 seconds.
# - retryMax: defaults to 5 times
# - continueOnMissingPermissions: defaults to false
#
# If at some point in the future, there would be a need, these can still be added.
inputs:
dirtyLabel:
description: "Name of the label which indicates that the branch is dirty."
type: string
required: false
default: "merge conflict"
removeOnDirtyLabel:
description: "Name of the label which should be removed."
type: string
required: false
default: ''
commentOnDirty:
description: "Comment to add when the pull request is conflicting. Supports markdown."
type: string
required: false
default: "A merge conflict has been detected for the proposed code changes in this PR. Please resolve the conflict by either rebasing the PR or merging in changes from the base branch."
commentOnClean:
description: "Comment to add when the pull request is not conflicting anymore. Supports markdown."
type: string
required: false
default: ''

jobs:
check-prs:
name: Merge conflict check

runs-on: ubuntu-latest
steps:
- name: "Create label if it doesn't exist"
uses: actions/github-script@v7
with:
script: |
try {
await github.rest.issues.createLabel({
...context.repo,
name: ${{ inputs.dirtyLabel }}
});
} catch(e) {
// Ignore if labels exist already.
}
- name: Check PRs for merge conflicts
uses: eps1lon/actions-label-merge-conflict@v3
with:
repoToken: ${{ secrets.GITHUB_TOKEN }}
dirtyLabel: ${{ inputs.dirtyLabel }}
removeOnDirtyLabel: ${{ inputs.removeOnDirtyLabel }}
commentOnDirty: ${{ inputs.commentOnDirty }}
commentOnClean: ${{ inputs.commentOnClean }}

0 comments on commit 07dbec7

Please sign in to comment.