mirror of
https://github.com/alibaba/higress.git
synced 2026-02-26 21:50:53 +08:00
188 lines
6.9 KiB
YAML
188 lines
6.9 KiB
YAML
name: Generate Release Notes
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*.*.*"
|
|
workflow_dispatch: ~
|
|
|
|
jobs:
|
|
generate-release-notes:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
DASHSCOPE_API_KEY: ${{ secrets.HIGRESS_OPENAI_API_KEY }}
|
|
MODEL_NAME: ${{ secrets.HIGRESS_OPENAI_API_MODEL }}
|
|
MODEL_SERVER: ${{ secrets.MODEL_SERVER }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: 1.24
|
|
|
|
- name: Clone GitHub MCP Server
|
|
run: |
|
|
git clone https://github.com/github/github-mcp-server.git
|
|
cd github-mcp-server
|
|
go build -o ../github-mcp-serve ./cmd/github-mcp-server
|
|
cd ..
|
|
chmod u+x github-mcp-serve
|
|
|
|
- name: Setup Python
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.10"
|
|
|
|
- name: Clone Higress Report Agent
|
|
run: |
|
|
git clone https://github.com/higress-group/higress-report-agent.git
|
|
mv github-mcp-serve higress-report-agent/
|
|
|
|
- name: Create Release Report Script
|
|
run: |
|
|
cat > generate_release_report.sh << 'EOF'
|
|
#!/bin/bash
|
|
# Script to generate release notes for Higress projects
|
|
|
|
echo "Fetching GitHub generated release notes for ${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}..."
|
|
curl -L \
|
|
"https://github.com/${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}/releases/tag/${RELEASE_VERSION}" \
|
|
-o release_page.html
|
|
|
|
echo "Extracting PR numbers from ${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME} release notes..."
|
|
PR_NUMS=$(cat release_page.html | grep -o "/${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}/pull/[0-9]*" | grep -o "[0-9]*$" | sort -n | uniq | tr '\n' ',')
|
|
PR_NUMS=${PR_NUMS%,}
|
|
if [ -z "${PR_NUMS}" ]; then
|
|
echo "No PR numbers found in release notes for ${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME} tag=${RELEASE_VERSION}."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Identifying important PRs..."
|
|
IMPORTANT_PR_NUMS=$(cat release_page.html | grep -o "<strong>.*/${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}/pull/[0-9]*.*</strong>" | grep -o "pull/[0-9]*" | grep -o "[0-9]*" | sort -n | uniq | tr '\n' ',')
|
|
IMPORTANT_PR_NUMS=${IMPORTANT_PR_NUMS%,}
|
|
|
|
rm release_page.html
|
|
|
|
echo "Extracted PR numbers for ${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}: ${PR_NUMS}"
|
|
echo "Important PR numbers: ${IMPORTANT_PR_NUMS}"
|
|
|
|
echo "Generating detailed release notes for ${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}..."
|
|
cd higress-report-agent
|
|
pip install uv
|
|
uv sync
|
|
if [ -n "${IMPORTANT_PR_NUMS}" ]; then
|
|
uv run report_main.py --mode 2 --choice 2 --pr_nums ${PR_NUMS} --important_prs ${IMPORTANT_PR_NUMS}
|
|
else
|
|
uv run report_main.py --mode 2 --choice 2 --pr_nums ${PR_NUMS}
|
|
fi
|
|
cp report.md ../
|
|
cp report.EN.md ../
|
|
cd ..
|
|
|
|
# 去除版本号前缀v
|
|
CLEAN_VERSION=${RELEASE_VERSION#v}
|
|
|
|
echo "Creating release notes directory for version ${RELEASE_VERSION}..."
|
|
mkdir -p release-notes/${CLEAN_VERSION}
|
|
|
|
echo "# ${REPORT_TITLE}" >>release-notes/${CLEAN_VERSION}/README_ZH.md
|
|
sed 's/# Release Notes//' report.md >>release-notes/${CLEAN_VERSION}/README_ZH.md
|
|
echo -e "\n" >>release-notes/${CLEAN_VERSION}/README_ZH.md
|
|
|
|
echo "# ${REPORT_TITLE}" >>release-notes/${CLEAN_VERSION}/README.md
|
|
sed 's/# Release Notes//' report.EN.md >>release-notes/${CLEAN_VERSION}/README.md
|
|
echo -e "\n" >>release-notes/${CLEAN_VERSION}/README.md
|
|
|
|
rm report.md
|
|
rm report.EN.md
|
|
echo "${REPORT_TITLE} release notes saved to release-notes/${CLEAN_VERSION}/"
|
|
|
|
EOF
|
|
chmod +x generate_release_report.sh
|
|
|
|
- name: Generate Release Notes for Higress
|
|
env:
|
|
GITHUB_REPO_OWNER: alibaba
|
|
GITHUB_REPO_NAME: higress
|
|
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
REPORT_TITLE: Higress
|
|
run: |
|
|
export RELEASE_VERSION=$(cat ${GITHUB_WORKSPACE}/VERSION)
|
|
bash generate_release_report.sh
|
|
|
|
- name: Generate Release Notes for Higress Console
|
|
env:
|
|
GITHUB_REPO_OWNER: higress-group
|
|
GITHUB_REPO_NAME: higress-console
|
|
GITHUB_PERSONAL_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
REPORT_TITLE: Higress Console
|
|
run: |
|
|
export RELEASE_VERSION=$(grep "^higress-console:" ${GITHUB_WORKSPACE}/DEP_VERSION | head -n1 | sed 's/higress-console: //')
|
|
bash generate_release_report.sh
|
|
|
|
- name: Create Update Release Notes Script
|
|
run: |
|
|
cat > update_release_note.sh << 'EOF'
|
|
#!/bin/bash
|
|
CLEAN_VERSION=${RELEASE_VERSION#v}
|
|
|
|
RELEASE_INFO=$(curl -s -L \
|
|
-H "Accept: application/vnd.github+json" \
|
|
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
|
https://api.github.com/repos/${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}/releases/tags/${RELEASE_VERSION})
|
|
RELEASE_ID=$(echo $RELEASE_INFO | jq -r .id)
|
|
|
|
RELEASE_NOTES=$(cat release-notes/${CLEAN_VERSION}/README.md)
|
|
JSON_DATA=$(jq -n \
|
|
--arg tag "$RELEASE_VERSION" \
|
|
--arg name "$RELEASE_VERSION" \
|
|
--arg body "$RELEASE_NOTES" \
|
|
'{tag_name: $tag, name: $name, body: $body, draft: false, prerelease: false}')
|
|
|
|
curl -L \
|
|
-X PATCH \
|
|
-H "Accept: application/vnd.github+json" \
|
|
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
|
https://api.github.com/repos/${GITHUB_REPO_OWNER}/${GITHUB_REPO_NAME}/releases/${RELEASE_ID} \
|
|
-d "$JSON_DATA"
|
|
|
|
EOF
|
|
chmod +x update_release_note.sh
|
|
|
|
- name: Update Release Notes
|
|
env:
|
|
GITHUB_REPO_OWNER: alibaba
|
|
GITHUB_REPO_NAME: higress
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
export RELEASE_VERSION=$(cat ${GITHUB_WORKSPACE}/VERSION)
|
|
bash update_release_note.sh
|
|
|
|
- name: Clean
|
|
run: |
|
|
rm generate_release_report.sh
|
|
rm update_release_note.sh
|
|
rm -rf higress-report-agent
|
|
rm -rf github-mcp-server
|
|
|
|
- name: Create Pull Request
|
|
uses: peter-evans/create-pull-request@v7
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
commit-message: "Add release notes"
|
|
branch: add-release-notes
|
|
title: "Add release notes"
|
|
body: |
|
|
This PR adds release notes.
|
|
|
|
- Automatically generated by GitHub Actions
|
|
labels: release notes, automated
|
|
base: main
|