Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure PR description follows a template when potential breaking changes are made #1351

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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**
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Groxx I guess you have some ideas on this template. Merging it now. Feel free to update

[In-depth description of the changes made to the 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?
54 changes: 54 additions & 0 deletions .github/workflows/breaking_change_reminder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Workflow for Breaking Change Reminder
on:
pull_request:
paths:
# below files do not cover all the exposed types/funcs, but it's a good start to detect potentially breaking changes
- activity/activity.go
- client/client.go
- encoded/encoded.go
- interceptors/workflow_interceptor.go
- internal/activity.go
- internal/client.go
- internal/encoded.go
- internal/workflow.go
- internal/interceptors.go
- internal/worker.go
- internal/workflow.go
- worker/worker.go
- workflow/*.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
Loading