mirror of
https://github.com/linyqh/NarratoAI.git
synced 2025-12-12 11:22:51 +00:00
cicd 测试 2
This commit is contained in:
parent
0650a215f6
commit
7dcdce448f
104
.github/workflows/auto-release-generator.yml
vendored
104
.github/workflows/auto-release-generator.yml
vendored
@ -5,45 +5,57 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
paths:
|
paths:
|
||||||
- '**/project_version' # 假设版本号存储在这个文件中,根据实际情况调整
|
- 'project_version' # 确保路径准确,不使用通配符
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-version-and-release:
|
check-version-and-release:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write # 用于创建 releases
|
||||||
|
pull-requests: write # 可能需要的额外权限
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # 获取完整历史以检查变更
|
fetch-depth: 0 # 获取完整历史以检查变更
|
||||||
|
|
||||||
|
- name: Debug Environment
|
||||||
|
run: |
|
||||||
|
echo "工作目录内容:"
|
||||||
|
ls -la
|
||||||
|
echo "project_version 文件内容:"
|
||||||
|
cat project_version || echo "文件不存在"
|
||||||
|
|
||||||
- name: Check if version changed
|
- name: Check if version changed
|
||||||
id: check-version
|
id: check-version
|
||||||
run: |
|
run: |
|
||||||
git fetch origin main
|
|
||||||
|
|
||||||
# 获取当前版本号
|
# 获取当前版本号
|
||||||
CURRENT_VERSION=$(cat project_version)
|
if [ -f "project_version" ]; then
|
||||||
echo "Current version: $CURRENT_VERSION"
|
CURRENT_VERSION=$(cat project_version)
|
||||||
|
echo "Current version: $CURRENT_VERSION"
|
||||||
# 获取上一个版本号(如果存在)
|
|
||||||
if git show origin/main:project_version &>/dev/null; then
|
|
||||||
PREVIOUS_VERSION=$(git show origin/main:project_version)
|
|
||||||
echo "Previous version: $PREVIOUS_VERSION"
|
|
||||||
|
|
||||||
if [[ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]]; then
|
# 获取上一个提交中的版本号
|
||||||
echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
|
git fetch origin main
|
||||||
|
if git show HEAD~1:project_version &>/dev/null; then
|
||||||
|
PREVIOUS_VERSION=$(git show HEAD~1:project_version)
|
||||||
|
echo "Previous version from commit: $PREVIOUS_VERSION"
|
||||||
|
|
||||||
|
if [[ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]]; then
|
||||||
|
echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION"
|
||||||
|
echo "version_changed=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "Version unchanged"
|
||||||
|
echo "version_changed=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Cannot find previous version, assuming first release"
|
||||||
echo "version_changed=true" >> $GITHUB_OUTPUT
|
echo "version_changed=true" >> $GITHUB_OUTPUT
|
||||||
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
||||||
else
|
|
||||||
echo "Version unchanged"
|
|
||||||
echo "version_changed=false" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "First version detected"
|
echo "project_version file not found"
|
||||||
echo "version_changed=true" >> $GITHUB_OUTPUT
|
echo "version_changed=false" >> $GITHUB_OUTPUT
|
||||||
echo "current_version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
@ -60,8 +72,23 @@ jobs:
|
|||||||
if: steps.check-version.outputs.version_changed == 'true'
|
if: steps.check-version.outputs.version_changed == 'true'
|
||||||
id: get-commits
|
id: get-commits
|
||||||
run: |
|
run: |
|
||||||
# 获取上次发布以来的所有提交信息
|
# 尝试获取上一个标签,如果没有则获取最近50个提交
|
||||||
COMMITS=$(git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~50)..HEAD --pretty=format:"%s")
|
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
|
||||||
|
if [ -z "$LAST_TAG" ]; then
|
||||||
|
echo "No previous tags found, getting last 50 commits"
|
||||||
|
COMMITS=$(git log -50 --pretty=format:"%s")
|
||||||
|
else
|
||||||
|
echo "Previous tag found: $LAST_TAG"
|
||||||
|
COMMITS=$(git log $LAST_TAG..HEAD --pretty=format:"%s")
|
||||||
|
# 如果没有提交,获取最近的10个提交
|
||||||
|
if [ -z "$COMMITS" ]; then
|
||||||
|
COMMITS=$(git log -10 --pretty=format:"%s")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Commits to be included in release notes:"
|
||||||
|
echo "$COMMITS"
|
||||||
|
|
||||||
echo "commits<<EOF" >> $GITHUB_OUTPUT
|
echo "commits<<EOF" >> $GITHUB_OUTPUT
|
||||||
echo "$COMMITS" >> $GITHUB_OUTPUT
|
echo "$COMMITS" >> $GITHUB_OUTPUT
|
||||||
echo "EOF" >> $GITHUB_OUTPUT
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
@ -88,17 +115,25 @@ jobs:
|
|||||||
version = os.environ.get("CURRENT_VERSION")
|
version = os.environ.get("CURRENT_VERSION")
|
||||||
|
|
||||||
# 调用API生成发布说明
|
# 调用API生成发布说明
|
||||||
response = openai.chat.completions.create(
|
try:
|
||||||
model="deepseek-ai/DeepSeek-V3",
|
response = openai.chat.completions.create(
|
||||||
messages=[
|
model="deepseek-ai/DeepSeek-V3",
|
||||||
{"role": "system", "content": "你是一个专业的软件发布说明生成助手。请根据提供的git提交信息,生成一个结构化的发布说明,包括新功能、改进、修复的bug等类别。使用中文回复。"},
|
messages=[
|
||||||
{"role": "user", "content": f"请根据以下git提交信息,生成一个版本{version}的发布说明:\n\n{commits}"}
|
{"role": "system", "content": "你是一个专业的软件发布说明生成助手。请根据提供的git提交信息,生成一个结构化的发布说明,包括新功能、改进、修复的bug等类别。使用中文回复。"},
|
||||||
],
|
{"role": "user", "content": f"请根据以下git提交信息,生成一个版本{version}的发布说明:\n\n{commits}"}
|
||||||
temperature=0.7,
|
],
|
||||||
)
|
temperature=0.7,
|
||||||
|
)
|
||||||
|
release_notes = response.choices[0].message.content
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error calling OpenAI API: {e}")
|
||||||
|
release_notes = f"# 版本 {version} 发布\n\n## 更新内容\n\n"
|
||||||
|
# 简单处理提交信息
|
||||||
|
for line in commits.strip().split("\n"):
|
||||||
|
if line:
|
||||||
|
release_notes += f"- {line}\n"
|
||||||
|
|
||||||
# 输出生成的发布说明
|
# 输出生成的发布说明
|
||||||
release_notes = response.choices[0].message.content
|
|
||||||
print(release_notes)
|
print(release_notes)
|
||||||
|
|
||||||
# 保存到GitHub输出
|
# 保存到GitHub输出
|
||||||
@ -110,6 +145,12 @@ jobs:
|
|||||||
|
|
||||||
python generate_release_notes.py < <(echo "${{ steps.get-commits.outputs.commits }}")
|
python generate_release_notes.py < <(echo "${{ steps.get-commits.outputs.commits }}")
|
||||||
|
|
||||||
|
- name: Debug release notes
|
||||||
|
if: steps.check-version.outputs.version_changed == 'true'
|
||||||
|
run: |
|
||||||
|
echo "Generated release notes:"
|
||||||
|
echo "${{ steps.generate-notes.outputs.release_notes }}"
|
||||||
|
|
||||||
- name: Create GitHub Release
|
- name: Create GitHub Release
|
||||||
if: steps.check-version.outputs.version_changed == 'true'
|
if: steps.check-version.outputs.version_changed == 'true'
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
@ -119,5 +160,4 @@ jobs:
|
|||||||
body: ${{ steps.generate-notes.outputs.release_notes }}
|
body: ${{ steps.generate-notes.outputs.release_notes }}
|
||||||
draft: false
|
draft: false
|
||||||
prerelease: false
|
prerelease: false
|
||||||
env:
|
token: ${{ secrets.GIT_TOKEN }}
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user