Skip to content

Commit

Permalink
fix: changelog (spidernet-io#2299)
Browse files Browse the repository at this point in the history
  • Loading branch information
weizhoublue committed Sep 1, 2023
1 parent 3bf0fc4 commit 00a7ad8
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 26 deletions.
13 changes: 7 additions & 6 deletions .github/workflows/call-release-changelog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ name: Call Release Changelog

env:
SCRIPT_PATH: "./tools/scripts/changelog.sh"
LABEL_FEATURE: "pr/release/feature-new"
LABEL_BUG: "pr/release/bug"
LABEL_FEATURE: "release/feature-new"
LABEL_CHANGED: "release/feature-changed"
LABEL_BUG: "release/bug"
DEST_BRANCH: github_pages
DEST_DIRECTORY: 'changelogs/'
PR_LABEL: pr/release/robot_update_githubpage
Expand All @@ -26,9 +27,8 @@ on:
required: true
default: v0.2.0
begin_tag:
description: 'start commit based on which tag'
description: '[optional] start commit based on which tag'
required: false
default: v0.1.0

permissions: write-all

Expand Down Expand Up @@ -83,15 +83,16 @@ jobs:
run: |
set -x
export LABEL_FEATURE=${{ env.LABEL_FEATURE }}
export LABEL_CHANGED=${{ env.LABEL_CHANGED }}
export LABEL_BUG=${{ env.LABEL_BUG }}
export PROJECT_REPO=${{ github.repository }}
export GH_TOKEN=${{ github.token }}
mkdir changelog
if ${{ env.RUN_begin_tag == '' }} ; then
${{ env.SCRIPT_PATH }} ./changelog ${{ env.RUN_dest_tag }} ${{ github.repository }} \
${{ env.SCRIPT_PATH }} ./changelog ${{ env.RUN_dest_tag }} \
|| { echo "error, failed to generate changelog " ; exit 1 ; }
else
${{ env.SCRIPT_PATH }} ./changelog ${{ env.RUN_dest_tag }} ${{ env.RUN_begin_tag }} ${{ github.repository }} \
${{ env.SCRIPT_PATH }} ./changelog ${{ env.RUN_dest_tag }} ${{ env.RUN_begin_tag }} \
|| { echo "error, failed to generate changelog " ; exit 1 ; }
fi
FILE_NAME=` ls changelog `
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-label-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
types: [opened, labeled, unlabeled, synchronize]

env:
LEASE_ONE_OF_LABELS: "pr/release/bug pr/release/feature-new pr/release/feature-changed pr/release/doc pr/release/robot_update_githubpage pr/release/chart pr/release/changelog pr/release/none-required"
LEASE_ONE_OF_LABELS: "release/bug release/feature-new release/feature-changed release/none pr/robot_update"
FORBID_LABELS: "pr/not-ready not-ready"

jobs:
Expand Down
6 changes: 3 additions & 3 deletions docs/develop/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ If a tag vx.x.x is pushed , the following steps will automatically run:

changelogs is generated by historical PR label:

label "pr/release/feature-new" to be classified to "New Features"
label "release/feature-new" to be classified to "New Features"

label "pr/release/feature-changed" to be classified to "Changed Features"
label "release/feature-changed" to be classified to "Changed Features"

label "pr/release/feature-bug" to be classified to "Fixes"
label "release/bug" to be classified to "Fixes"

5. build the chart package with the pushed tag, and submit a PR to branch 'github_pages'

Expand Down
58 changes: 42 additions & 16 deletions tools/scripts/changelog.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
# SPDX-License-Identifier: Apache-2.0

# usage:
# GH_TOKEN=${{ github.token }} LABEL_FEATURE="release/feature-new" LABEL_BUG="release/bug" PROJECT_REPO="spidernet-io/spiderpool" changelog.sh ./ v0.3.6 "spidernet-io/spiderpool"
# GH_TOKEN=${{ github.token }} LABEL_FEATURE="release/feature-new" LABEL_BUG="release/bug" PROJECT_REPO="spidernet-io/spiderpool" changelog.sh ./ v0.3.6 v0.3.5 "spidernet-io/spiderpool"
# GH_TOKEN=${{ github.token }} LABEL_FEATURE="release/feature-new" LABEL_CHANGED="release/feature-changed" LABEL_BUG="release/bug" PROJECT_REPO="xxx/xxx" changelog.sh ./ v0.3.6
# GH_TOKEN=${{ github.token }} LABEL_FEATURE="release/feature-new" LABEL_CHANGED="release/feature-changed" LABEL_BUG="release/bug" PROJECT_REPO="xxx/xxx" changelog.sh ./ v0.3.6 v0.3.5


CURRENT_DIR_PATH=$(cd `dirname $0`; pwd)
Expand All @@ -16,24 +16,29 @@ set -o errexit
set -o nounset
set -o pipefail

#required
# optional
OUTPUT_DIR=${1}
#required
# required
DEST_TAG=${2}
# optional
START_TAG=${3:-""}
GITHUB_REPO=${4:-"spidernet-io/spiderpool"}

[ -n "${GH_TOKEN}" ] || { echo "error, miss GH_TOKEN"; exit 1 ; }


LABEL_FEATURE=${LABEL_FEATURE:-"release/feature-new"}
LABEL_CHANGED=${LABEL_BUG:-"release/feature-changed"}
LABEL_BUG=${LABEL_BUG:-"release/bug"}
PROJECT_REPO=${PROJECT_REPO:-"spidernet-io/spiderpool"}
PROJECT_REPO=${PROJECT_REPO:-""}
[ -n "$PROJECT_REPO" ] || { echo "miss PROJECT_REPO"; exit 1 ; }
[ -n "${GH_TOKEN}" ] || { echo "error, miss GH_TOKEN"; exit 1 ; }

( cd ${OUTPUT_DIR} ) || { echo "error, OUTPUT_DIR '${OUTPUT_DIR}' is not a valid directory" ; exit 1 ; }
OUTPUT_DIR=$(cd ${OUTPUT_DIR}; pwd)
echo "generate changelog to directory ${OUTPUT_DIR}"
cd ${OUTPUT_DIR}

# change to root for git cli
cd ${PROJECT_ROOT_PATH}

#============================

ORIGIN_START_TAG=${START_TAG}
if [ -z "${START_TAG}" ] ; then
Expand Down Expand Up @@ -116,18 +121,20 @@ TOTAL_COUNT="0"
PR_LIST=""
#
FEATURE_PR=""
CHANGED_PR=""
FIX_PR=""
for COMMIT in ${ALL_COMMIT} ; do
# API RATE LIMIT
# https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#rate-limiting
# When using GITHUB_TOKEN, the rate limit is 1,000 requests per hour per repository
# GitHub Enterprise Cloud's rate limit applies, and the limit is 15,000 requests per hour per repository.
PR=` curl -s -H "Accept: application/vnd.github.groot-preview+json" -H "Authorization: Bearer ${GH_TOKEN}" https://api.github.com/repos/${GITHUB_REPO}/commits/${COMMIT}/pulls | jq -r '.[].number' `
[ -n "${PR}" ] || { echo "error, failed to find PR number for commit ${COMMIT} " ; continue ; }
COMMIT_INFO=` curl -s -H "Accept: application/vnd.github.groot-preview+json" -H "Authorization: Bearer ${GH_TOKEN}" https://api.github.com/repos/${PROJECT_REPO}/commits/${COMMIT}/pulls `
PR=` jq -r '.[].number' <<< "${COMMIT_INFO}" `
[ -n "${PR}" ] || { echo "warning, failed to find PR number for commit ${COMMIT} " ; echo "${COMMIT_INFO}" ; echo "" ; continue ; }
if grep " ${PR} " <<< " ${PR_LIST} " &>/dev/null ; then
continue
continue
else
PR_LIST+=" ${PR} "
PR_LIST+=" ${PR} "
fi
(( TOTAL_COUNT+=1 ))
INFO=` gh pr view ${PR} `
Expand All @@ -137,9 +144,15 @@ for COMMIT in ${ALL_COMMIT} ; do
PR_URL="https://github.com/${PROJECT_REPO}/pull/${PR}"
#
if grep -E "[[:space:]]${LABEL_FEATURE}[[:space:]]" <<< " ${LABELS} " &>/dev/null ; then
echo "get new feature PR ${PR}"
FEATURE_PR+="* ${TITLE} : [PR ${PR}](${PR_URL})
"
elif grep -E "[[:space:]]${LABEL_CHANGED}[[:space:]]" <<< " ${LABELS} " &>/dev/null ; then
echo "get changed feature PR ${PR}"
CHANGED_PR+="* ${TITLE} : [PR ${PR}](${PR_URL})
"
elif grep -E "[[:space:]]${LABEL_BUG}[[:space:]]" <<< " ${LABELS} " &>/dev/null ; then
echo "get bug fix PR ${PR}"
FIX_PR+="* ${TITLE} : [PR ${PR}](${PR_URL})
"
fi
Expand All @@ -154,7 +167,7 @@ echo "***" >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
#
if [ -n "${FEATURE_PR}" ]; then
echo "## Feature" >> ${FILE_CHANGELOG}
echo "## New Feature" >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
while read LINE ; do
echo "${LINE}" >> ${FILE_CHANGELOG}
Expand All @@ -164,6 +177,17 @@ if [ -n "${FEATURE_PR}" ]; then
echo "" >> ${FILE_CHANGELOG}
fi
#
if [ -n "${CHANGED_PR}" ]; then
echo "## Changed Feature" >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
while read LINE ; do
echo "${LINE}" >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
done <<< "${CHANGED_PR}"
echo "***" >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
fi
#
if [ -n "${FIX_PR}" ]; then
echo "## Fix" >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
Expand All @@ -175,8 +199,10 @@ if [ -n "${FIX_PR}" ]; then
echo "" >> ${FILE_CHANGELOG}
fi
#
echo "## Totoal PR" >> ${FILE_CHANGELOG}
echo "## Totoal " >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
echo "Pull request number: ${TOTAL_COUNT}" >> ${FILE_CHANGELOG}
echo "" >> ${FILE_CHANGELOG}
echo "[ ${TOTAL_COUNT} PR](https://github.com/${PROJECT_REPO}/compare/${START_TAG}...${DEST_TAG})" >> ${FILE_CHANGELOG}
echo "[ Commits ](https://github.com/${PROJECT_REPO}/compare/${START_TAG}...${DEST_TAG})" >> ${FILE_CHANGELOG}
echo "--------------------"
echo "generate changelog to ${FILE_CHANGELOG}"

0 comments on commit 00a7ad8

Please sign in to comment.