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