Skip to content

Commit

Permalink
Ensure PR description contains compatibility info & rollout plan when…
Browse files Browse the repository at this point in the history
… DB schema is changed (#6150)
  • Loading branch information
taylanisikdemir committed Jul 1, 2024
1 parent 239767d commit b5a79d2
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
18 changes: 18 additions & 0 deletions .github/workflows/breaking_change_pr_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
**Detailed Description**
[In-depth description of the changes made to the schema or interfaces, specifying new fields, removed fields, or modified data structures]

**Impact Analysis**
- **Backward Compatibility**: [Analysis of backward compatibility]
- **Forward Compatibility**: [Analysis of forward compatibility]

**Testing Plan**
- **Unit Tests**: [Do we have unit test covering the change?]
- **Persistence Tests**: [If the change is related to a data type which is persisted, do we have persistence tests covering the change?]
- **Integration Tests**: [Do we have integration test covering the change?]
- **Compatibility Tests**: [Have we done tests to test the backward and forward compatibility?]

**Rollout Plan**
- What is the rollout plan?
- Does the order of deployment matter?
- Is it safe to rollback? Does the order of rollback matter?
- Is there a kill switch to mitigate the impact immediately?
45 changes: 45 additions & 0 deletions .github/workflows/breaking_change_reminder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Workflow for Breaking Change Reminder
on:
pull_request:
paths:
- schema/**
- client/frontend/interface.go
- client/history/interface.go
- client/matching/interface.go
- client/admin/interface.go

jobs:
breaking-change-pr-template-reminder:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Fail if PR description is missing breaking change template
if: steps.pr-changes.outputs.changes != '[]'
run: |
PR_NUMBER=${{ github.event.pull_request.number }}
PR_URL="https://api.github.com/repos/${{ github.repository }}/pulls/${PR_NUMBER}"
BODY=$(curl $PR_URL | jq '.body')
CHECKLIST=(
"Detailed Description"
"Impact Analysis"
"Testing Plan"
"Rollout Plan"
)
TEMPLATE=$(cat .github/workflows/breaking_change_pr_template.md)
for i in "${CHECKLIST[@]}"; do
if [[ "$BODY" == *"$i"* ]]; then
continue
else
echo "Potential breaking changes detected! Please update the PR description to include following template:"
echo "---"
echo "$TEMPLATE"
echo "---"
exit 1
fi
done

0 comments on commit b5a79d2

Please sign in to comment.