Skip to content

Commit

Permalink
add script to generate changelog for a PR (#21719)
Browse files Browse the repository at this point in the history
* add script to generate changelog for a PR

* handle enterprise changelogs

* add command to generate changelog

* remove script to handle changelog release
  • Loading branch information
jm96441n authored Sep 12, 2024
1 parent 0cc0fa7 commit 8c197db
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
9 changes: 9 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,14 @@ envoy-regen: ## Regenerating envoy golden files
@find "command/connect/envoy/testdata" -name '*.golden' -delete
@go test -tags '$(GOTAGS)' ./command/connect/envoy -update


##@ Changelog

.PHONY: gen-changelog
gen-changelog: ## Generate changelog entry for the current branch based on the currently open PR for that branch
@$(SHELL) $(CURDIR)/build-support/scripts/gen-changelog.sh


##@ Help

# The help target prints out all targets with their descriptions organized
Expand All @@ -634,3 +642,4 @@ envoy-regen: ## Regenerating envoy golden files
.PHONY: help
help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

73 changes: 73 additions & 0 deletions build-support/scripts/gen-changelog.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#! /bin/bash
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1

set -eo pipefail

pr_number=$(gh pr list -H "$(git rev-parse --abbrev-ref HEAD)" -q ".[0].number" --json "number")

# check if this changelog is referencing an enterprise change
curdir=$(pwd)

filename = ".changelog/$pr_number.txt"
if [[ ! $curdir == *"enterprise"* ]]; then
is_enterprise = "n"
read -p "Is this an enterprise PR? (y/n): " is_enterprise

if [[ $is_enterprise == "y" ]]; then
filename = ".changelog/_$pr_number.txt"
fi
else
filename = ".changelog/_$pr_number.txt"
fi

# create a new changelog file
touch $filename

echo "Created a new changelog file for PR $pr_number."

# prompt user to pick from list of types of changlog from "breaking-change", "security", "feature", "deprecation", or "bug"
echo "Please select the type of change:"
echo "1. breaking-change"
echo "2. security"
echo "3. feature"
echo "4. deprecation"
echo "5. bug"

if [ -z "$1" ]; then
read -p "Enter your choice: " choice
else
choice=$1
fi

type=""

case $choice in
1)
type="breaking-change"
;;
2)
type="security"
;;
3)
type="feature"
;;
4)
type="deprecation"
;;
5)
type="bug"
;;
*)
echo "Invalid choice. Please select a number from 1 to 5."
exit 1
;;
esac

msg=""

read -ep $'Please enter the changelog message:\n' msg

echo -e "\`\`\`release-note:$type\n$msg\n\`\`\`" >>"$filename"

cat .changelog/$pr_number.txt

0 comments on commit 8c197db

Please sign in to comment.