From fb8c8bfb4b25c5feb355f3bc8d340609587a61b3 Mon Sep 17 00:00:00 2001 From: taylan isikdemir Date: Mon, 1 Jul 2024 14:38:46 -0700 Subject: [PATCH 1/2] Ensure PR description follows a template when potential breaking changes are made --- .../workflows/breaking_change_pr_template.md | 18 +++++++ .../workflows/breaking_change_reminder.yml | 54 +++++++++++++++++++ activity/activity.go | 1 + 3 files changed, 73 insertions(+) create mode 100644 .github/workflows/breaking_change_pr_template.md create mode 100644 .github/workflows/breaking_change_reminder.yml diff --git a/.github/workflows/breaking_change_pr_template.md b/.github/workflows/breaking_change_pr_template.md new file mode 100644 index 000000000..6affbe04e --- /dev/null +++ b/.github/workflows/breaking_change_pr_template.md @@ -0,0 +1,18 @@ +**Detailed Description** +[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? diff --git a/.github/workflows/breaking_change_reminder.yml b/.github/workflows/breaking_change_reminder.yml new file mode 100644 index 000000000..286dceff0 --- /dev/null +++ b/.github/workflows/breaking_change_reminder.yml @@ -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 "\n\nPotential breaking changes detected! Please update the PR description to include following template:\n" + echo "---" + echo "$TEMPLATE" + echo "---\n" + exit 1 + fi + done diff --git a/activity/activity.go b/activity/activity.go index 23fad3583..4258c7574 100644 --- a/activity/activity.go +++ b/activity/activity.go @@ -31,6 +31,7 @@ import ( type ( // Type identifies an activity type. + // TODO: remove Type = internal.ActivityType // Info contains information about a currently executing activity. From df24ac746a93d535c9514a8ca0474f1d8b95bbb2 Mon Sep 17 00:00:00 2001 From: taylan isikdemir Date: Mon, 1 Jul 2024 14:43:46 -0700 Subject: [PATCH 2/2] fix --- .github/workflows/breaking_change_reminder.yml | 4 ++-- activity/activity.go | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/breaking_change_reminder.yml b/.github/workflows/breaking_change_reminder.yml index 286dceff0..e5e05e228 100644 --- a/.github/workflows/breaking_change_reminder.yml +++ b/.github/workflows/breaking_change_reminder.yml @@ -45,10 +45,10 @@ jobs: if [[ "$BODY" == *"$i"* ]]; then continue else - echo "\n\nPotential breaking changes detected! Please update the PR description to include following template:\n" + echo "Potential breaking changes detected! Please update the PR description to include following template:" echo "---" echo "$TEMPLATE" - echo "---\n" + echo "---" exit 1 fi done diff --git a/activity/activity.go b/activity/activity.go index 4258c7574..23fad3583 100644 --- a/activity/activity.go +++ b/activity/activity.go @@ -31,7 +31,6 @@ import ( type ( // Type identifies an activity type. - // TODO: remove Type = internal.ActivityType // Info contains information about a currently executing activity.