Files
prompt-optimizer/.github/workflows/release.yml
T
linshen 0617868cfd ci: gate docker and release on tests
Make docker builds and desktop releases depend on the shared test workflow to avoid duplicate runs and ensure only tested revisions ship.
2026-01-21 23:05:11 +08:00

674 lines
25 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Release Desktop Apps
on:
push:
tags:
- 'v*.*.*' # 正式版本: v1.0.0, v2.1.3
- 'v*.*.*-*' # 预览版本: v1.0.0-beta.1, v1.0.0-rc.1
workflow_dispatch:
inputs:
version:
description: '版本号(例如: v2.0.3)'
required: true
type: string
env:
NODE_VERSION: '22'
PNPM_VERSION: '10.6.1'
jobs:
test:
uses: ./.github/workflows/test.yml
# 构建 Windows 版本
build-windows:
needs: test
runs-on: windows-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取完整的git历史
fetch-tags: true # 确保获取所有tags
- name: 安装 pnpm
uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
run_install: false
- name: 设置 Node.js 环境
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: 动态配置 package.json
shell: pwsh
run: |
$pkgPath = "packages/desktop/package.json"
$pkgJson = Get-Content $pkgPath -Raw | ConvertFrom-Json
# 1. 从 Git 标签或手动输入提取版本号 (移除 'v' 前缀)
if ("${{ github.event_name }}" -eq "workflow_dispatch") {
$tagVersion = "${{ inputs.version }}".replace("v", "")
Write-Host "📝 Using manual input version: $tagVersion"
} else {
$tagVersion = "${{ github.ref }}".replace("refs/tags/v", "")
Write-Host "🏷️ Using git tag version: $tagVersion"
}
$pkgJson.version = $tagVersion
Write-Host "✅ Set version to: $tagVersion"
# 2. 设置仓库地址 (自动感知当前仓库)
$repoUrl = "https://github.com/${{ github.repository }}.git"
$pkgJson.repository.url = $repoUrl
Write-Host "✅ Set repository URL to: $repoUrl"
# 3. 从当前仓库信息提取 owner 和 repo
$repoInfo = "${{ github.repository }}".split("/")
$repoOwner = $repoInfo[0]
$repoName = $repoInfo[1]
Write-Host "✅ Set repository owner to: $repoOwner"
Write-Host "✅ Set repository name to: $repoName"
# 4. 判断版本类型
$isPrerelease = $False
$versionType = "release"
if ($tagVersion -match "-(alpha|beta|rc)") {
$isPrerelease = $True
$versionType = "prerelease"
Write-Host "🧪 Detected prerelease version"
} elseif ($tagVersion -match "-(hotfix|patch)") {
$isPrerelease = $False
$versionType = "hotfix"
Write-Host "🔧 Detected hotfix version"
} else {
$isPrerelease = $False
$versionType = "release"
Write-Host "🚀 Detected stable release version"
}
# 5. 设置 publish 配置 (固定为公开仓库)
$publishConfig = @{
provider = "github"
owner = $repoOwner
repo = $repoName
private = $False
}
$pkgJson.build.publish = $publishConfig
Write-Host "✅ Set publish config (owner: $repoOwner, repo: $repoName, private: false)"
# 6. 将修改写回文件
$pkgJson | ConvertTo-Json -Depth 10 | Set-Content $pkgPath -Encoding UTF8
Write-Host "✅ package.json updated successfully"
# 7. 输出配置摘要
Write-Host ""
Write-Host "📋 Configuration Summary:"
Write-Host " Version: $tagVersion"
Write-Host " Type: $versionType"
Write-Host " Repository: $repoUrl"
Write-Host " Owner: $repoOwner"
Write-Host " Repo: $repoName"
Write-Host " Private: false (fixed)"
Write-Host " Prerelease: $isPrerelease"
- name: 安装依赖
run: pnpm install
- name: 构建 Desktop 应用
env:
GH_TOKEN: ${{ secrets.GH_TOKEN_FOR_UPDATER }}
run: pnpm build:desktop
- name: 验证构建产物
shell: bash
run: |
echo "Checking build artifacts..."
ls -la packages/desktop/dist/ || echo "No dist directory found"
# 检查是否有构建产物
exe_files=$(find packages/desktop/dist -name "*.exe" 2>/dev/null | wc -l)
zip_files=$(find packages/desktop/dist -name "*.zip" 2>/dev/null | wc -l)
echo "Found $exe_files .exe files and $zip_files .zip files"
if [ "$exe_files" -eq 0 ] && [ "$zip_files" -eq 0 ]; then
echo "Error: No build artifacts (.exe or .zip) found in packages/desktop/dist/"
echo "Directory contents:"
find packages/desktop/dist -type f 2>/dev/null || echo "Directory not found or empty"
exit 1
fi
echo "Build artifacts verification passed"
- name: 上传 Windows 构建产物
uses: actions/upload-artifact@v4
with:
name: windows-build
path: |
packages/desktop/dist/PromptOptimizer-*.exe
packages/desktop/dist/PromptOptimizer-*.zip
packages/desktop/dist/latest*.yml
retention-days: 30
# 构建 macOS 版本
build-macos:
needs: test
runs-on: macos-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取完整的git历史
fetch-tags: true # 确保获取所有tags
- name: 安装 pnpm
uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
run_install: false
- name: 设置 Node.js 环境
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: 动态配置 package.json
run: |
PKG_PATH="packages/desktop/package.json"
# 1. 从 Git 标签或手动输入提取版本号 (移除 'v' 前缀)
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
TAG_VERSION="${{ inputs.version }}"
TAG_VERSION="${TAG_VERSION#v}"
echo "📝 Using manual input version: $TAG_VERSION"
else
TAG_VERSION="${{ github.ref }}"
TAG_VERSION="${TAG_VERSION#refs/tags/v}"
echo "🏷️ Using git tag version: $TAG_VERSION"
fi
echo "✅ Set version to: $TAG_VERSION"
# 2. 设置仓库地址 (自动感知当前仓库)
REPO_URL="https://github.com/${{ github.repository }}.git"
echo "✅ Set repository URL to: $REPO_URL"
# 3. 从当前仓库信息提取 owner 和 repo
IFS='/' read -r REPO_OWNER REPO_NAME <<< "${{ github.repository }}"
echo "✅ Set repository owner to: $REPO_OWNER"
echo "✅ Set repository name to: $REPO_NAME"
# 4. 判断版本类型
IS_PRERELEASE=false
VERSION_TYPE="release"
if [[ $TAG_VERSION =~ -(alpha|beta|rc) ]]; then
IS_PRERELEASE=true
VERSION_TYPE="prerelease"
echo "🧪 Detected prerelease version"
elif [[ $TAG_VERSION =~ -(hotfix|patch) ]]; then
IS_PRERELEASE=false
VERSION_TYPE="hotfix"
echo "🔧 Detected hotfix version"
else
IS_PRERELEASE=false
VERSION_TYPE="release"
echo "🚀 Detected stable release version"
fi
# 5. 使用 jq 更新 package.json
jq --arg version "$TAG_VERSION" \
--arg repo_url "$REPO_URL" \
--arg repo_owner "$REPO_OWNER" \
--arg repo_name "$REPO_NAME" \
'.version = $version |
.repository.url = $repo_url |
.build.publish = {provider: "github", owner: $repo_owner, repo: $repo_name, private: false}' \
"$PKG_PATH" > "${PKG_PATH}.tmp" && mv "${PKG_PATH}.tmp" "$PKG_PATH"
echo "✅ package.json updated successfully"
# 6. 输出配置摘要
echo ""
echo "📋 Configuration Summary:"
echo " Version: $TAG_VERSION"
echo " Type: $VERSION_TYPE"
echo " Repository: $REPO_URL"
echo " Owner: $REPO_OWNER"
echo " Repo: $REPO_NAME"
echo " Private: false (fixed)"
echo " Prerelease: $IS_PRERELEASE"
- name: 安装依赖
run: pnpm install
- name: 构建 Desktop 应用
env:
GH_TOKEN: ${{ secrets.GH_TOKEN_FOR_UPDATER }}
run: pnpm build:desktop
- name: 验证构建产物
run: |
echo "Checking build artifacts..."
ls -la packages/desktop/dist/ || echo "No dist directory found"
# 检查是否有构建产物
dmg_files=$(find packages/desktop/dist -name "*.dmg" 2>/dev/null | wc -l)
zip_files=$(find packages/desktop/dist -name "*.zip" 2>/dev/null | wc -l)
echo "Found $dmg_files .dmg files and $zip_files .zip files"
if [ "$dmg_files" -eq 0 ] && [ "$zip_files" -eq 0 ]; then
echo "Error: No build artifacts (.dmg or .zip) found in packages/desktop/dist/"
echo "Directory contents:"
find packages/desktop/dist -type f 2>/dev/null || echo "Directory not found or empty"
exit 1
fi
echo "Build artifacts verification passed"
- name: 上传 macOS 构建产物
uses: actions/upload-artifact@v4
with:
name: macos-build
path: |
packages/desktop/dist/*.dmg
packages/desktop/dist/*.zip
packages/desktop/dist/*.yml
retention-days: 30
# 构建 Linux 版本
build-linux:
needs: test
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取完整的git历史
fetch-tags: true # 确保获取所有tags
- name: 安装 pnpm
uses: pnpm/action-setup@v2
with:
version: ${{ env.PNPM_VERSION }}
run_install: false
- name: 设置 Node.js 环境
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'pnpm'
- name: 动态配置 package.json
run: |
PKG_PATH="packages/desktop/package.json"
# 1. 从 Git 标签或手动输入提取版本号 (移除 'v' 前缀)
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
TAG_VERSION="${{ inputs.version }}"
TAG_VERSION="${TAG_VERSION#v}"
echo "📝 Using manual input version: $TAG_VERSION"
else
TAG_VERSION="${{ github.ref }}"
TAG_VERSION="${TAG_VERSION#refs/tags/v}"
echo "🏷️ Using git tag version: $TAG_VERSION"
fi
echo "✅ Set version to: $TAG_VERSION"
# 2. 设置仓库地址 (自动感知当前仓库)
REPO_URL="https://github.com/${{ github.repository }}.git"
echo "✅ Set repository URL to: $REPO_URL"
# 3. 从当前仓库信息提取 owner 和 repo
IFS='/' read -r REPO_OWNER REPO_NAME <<< "${{ github.repository }}"
echo "✅ Set repository owner to: $REPO_OWNER"
echo "✅ Set repository name to: $REPO_NAME"
# 4. 判断版本类型
IS_PRERELEASE=false
VERSION_TYPE="release"
if [[ $TAG_VERSION =~ -(alpha|beta|rc) ]]; then
IS_PRERELEASE=true
VERSION_TYPE="prerelease"
echo "🧪 Detected prerelease version"
elif [[ $TAG_VERSION =~ -(hotfix|patch) ]]; then
IS_PRERELEASE=false
VERSION_TYPE="hotfix"
echo "🔧 Detected hotfix version"
else
IS_PRERELEASE=false
VERSION_TYPE="release"
echo "🚀 Detected stable release version"
fi
# 5. 使用 jq 更新 package.json
jq --arg version "$TAG_VERSION" \
--arg repo_url "$REPO_URL" \
--arg repo_owner "$REPO_OWNER" \
--arg repo_name "$REPO_NAME" \
'.version = $version |
.repository.url = $repo_url |
.build.publish = {provider: "github", owner: $repo_owner, repo: $repo_name, private: false}' \
"$PKG_PATH" > "${PKG_PATH}.tmp" && mv "${PKG_PATH}.tmp" "$PKG_PATH"
echo "✅ package.json updated successfully"
# 6. 输出配置摘要
echo ""
echo "📋 Configuration Summary:"
echo " Version: $TAG_VERSION"
echo " Type: $VERSION_TYPE"
echo " Repository: $REPO_URL"
echo " Owner: $REPO_OWNER"
echo " Repo: $REPO_NAME"
echo " Private: false (fixed)"
echo " Prerelease: $IS_PRERELEASE"
- name: 安装依赖
run: pnpm install
- name: 构建 Desktop 应用
env:
GH_TOKEN: ${{ secrets.GH_TOKEN_FOR_UPDATER }}
run: pnpm build:desktop
- name: 验证构建产物
run: |
echo "Checking build artifacts..."
ls -la packages/desktop/dist/ || echo "No dist directory found"
# 检查是否有构建产物
appimage_files=$(find packages/desktop/dist -name "*.AppImage" 2>/dev/null | wc -l)
zip_files=$(find packages/desktop/dist -name "*.zip" 2>/dev/null | wc -l)
echo "Found $appimage_files .AppImage files and $zip_files .zip files"
if [ "$appimage_files" -eq 0 ] && [ "$zip_files" -eq 0 ]; then
echo "Error: No build artifacts (.AppImage or .zip) found in packages/desktop/dist/"
echo "Directory contents:"
find packages/desktop/dist -type f 2>/dev/null || echo "Directory not found or empty"
exit 1
fi
echo "Build artifacts verification passed"
- name: 上传 Linux 构建产物
uses: actions/upload-artifact@v4
with:
name: linux-build
path: |
packages/desktop/dist/*.AppImage
packages/desktop/dist/*.zip
packages/desktop/dist/*.yml
retention-days: 30
# 创建 GitHub Release
create-release:
needs: [build-windows, build-macos, build-linux]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: 检出代码
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取完整的git历史
fetch-tags: true # 确保获取所有tags
- name: 获取版本号和类型
id: version
run: |
# 从 Git 标签或手动输入获取版本号
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
VERSION="${{ inputs.version }}"
echo "📝 Using manual input version: $VERSION"
else
VERSION=${GITHUB_REF#refs/tags/}
echo "🏷️ Using git tag version: $VERSION"
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"
# 详细的版本类型判断
IS_PRERELEASE=false
VERSION_TYPE="release"
RELEASE_NAME_PREFIX=""
if [[ $VERSION =~ -(alpha|beta|rc) ]]; then
IS_PRERELEASE=true
VERSION_TYPE="prerelease"
RELEASE_NAME_PREFIX="Preview "
echo "🧪 Detected prerelease version"
elif [[ $VERSION =~ -(hotfix|patch) ]]; then
IS_PRERELEASE=false
VERSION_TYPE="hotfix"
RELEASE_NAME_PREFIX="Hotfix "
echo "🔧 Detected hotfix version"
else
IS_PRERELEASE=false
VERSION_TYPE="release"
RELEASE_NAME_PREFIX="Release "
echo "🚀 Detected stable release version"
fi
echo "is_prerelease=$IS_PRERELEASE" >> $GITHUB_OUTPUT
echo "version_type=$VERSION_TYPE" >> $GITHUB_OUTPUT
echo "release_name_prefix=$RELEASE_NAME_PREFIX" >> $GITHUB_OUTPUT
- name: 下载所有构建产物
uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: 显示构建产物
run: |
echo "构建产物列表:"
find ./artifacts -type f -name "*" | sort
- name: 移除调试文件
run: |
echo "Removing debug files..."
find ./artifacts -type f -name "builder-debug.yml" -delete
echo "Final artifact list after cleaning:"
find ./artifacts -type f | sort
- name: 生成 Release Notes
id: release_notes
run: |
# 获取当前tag
CURRENT_TAG=${{ steps.version.outputs.version }}
echo "Current tag: $CURRENT_TAG"
# 获取所有tags并调试输出
echo "All tags (sorted):"
git tag --sort=-version:refname | head -10
# 改进的上一个tag获取逻辑
# 1. 先尝试获取所有正式版本tag (不包含预览版)
STABLE_TAGS=$(git tag --sort=-version:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' || true)
echo "Stable tags found: $STABLE_TAGS"
# 2. 获取所有tag (包含预览版)
ALL_TAGS=$(git tag --sort=-version:refname)
# 3. 根据当前tag类型选择合适的比较策略
PREVIOUS_TAG=""
if [[ $CURRENT_TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
# 当前是正式版,找上一个正式版
PREVIOUS_TAG=$(echo "$STABLE_TAGS" | grep -v "^$CURRENT_TAG$" | head -1 || true)
echo "Current is stable release, previous stable tag: $PREVIOUS_TAG"
else
# 当前是预览版,找上一个任意版本
PREVIOUS_TAG=$(echo "$ALL_TAGS" | grep -v "^$CURRENT_TAG$" | head -1 || true)
echo "Current is prerelease, previous tag: $PREVIOUS_TAG"
fi
# 生成commit历史(处理多行和长commit)
COMMITS=""
if [ -n "$PREVIOUS_TAG" ] && git rev-parse "$PREVIOUS_TAG" >/dev/null 2>&1 && git rev-parse "$CURRENT_TAG" >/dev/null 2>&1; then
echo "Generating commits from $PREVIOUS_TAG to $CURRENT_TAG"
COMMITS=$(git log --pretty=format:"%s|%h" $PREVIOUS_TAG..$CURRENT_TAG | while IFS='|' read -r subject hash; do
# 截断过长的commit message(保留前80个字符)
if [ ${#subject} -gt 80 ]; then
subject="${subject:0:77}..."
fi
echo "- $subject ([${hash}](https://github.com/${{ github.repository }}/commit/${hash}))"
done)
elif git rev-parse "$CURRENT_TAG" >/dev/null 2>&1; then
echo "No previous tag found or invalid, showing commits for current tag"
COMMITS=$(git log --pretty=format:"%s|%h" --max-count=10 | while IFS='|' read -r subject hash; do
# 截断过长的commit message(保留前80个字符)
if [ ${#subject} -gt 80 ]; then
subject="${subject:0:77}..."
fi
echo "- $subject ([${hash}](https://github.com/${{ github.repository }}/commit/${hash}))"
done)
fi
# 检查是否有commits
if [ -z "$COMMITS" ]; then
echo "No commits found, using fallback message"
COMMITS="- 首次发布"
else
echo "Generated commits:"
echo "$COMMITS"
fi
# 限制commits数量(最多显示20个)
COMMITS_LIMITED=$(echo "$COMMITS" | head -20)
COMMITS_COUNT=$(echo "$COMMITS" | wc -l)
if [ $COMMITS_COUNT -gt 20 ]; then
COMMITS_LIMITED="$COMMITS_LIMITED
... 以及其他 $((COMMITS_COUNT - 20)) 个提交"
fi
# 获取本次发布的贡献者(排除主要作者)
CONTRIBUTORS=""
if [ -n "$PREVIOUS_TAG" ] && git rev-parse "$PREVIOUS_TAG" >/dev/null 2>&1; then
# 获取贡献者列表,排除主要作者和机器人
CONTRIBUTORS=$(git log --pretty=format:"%an|%ae" $PREVIOUS_TAG..$CURRENT_TAG 2>/dev/null | \
sort -u | \
grep -v -E "^(linshen|linshenkx|且炼时光)\|" | \
grep -v -E "\[bot\]@" | \
grep -v -E "^GitButler\|" | \
cut -d'|' -f1 | \
sort -u || true)
else
CONTRIBUTORS=$(git log --pretty=format:"%an|%ae" --max-count=50 2>/dev/null | \
sort -u | \
grep -v -E "^(linshen|linshenkx|且炼时光)\|" | \
grep -v -E "\[bot\]@" | \
grep -v -E "^GitButler\|" | \
cut -d'|' -f1 | \
sort -u || true)
fi
# 格式化贡献者列表
CONTRIBUTORS_SECTION=""
if [ -n "$CONTRIBUTORS" ]; then
CONTRIBUTORS_LIST=$(echo "$CONTRIBUTORS" | while read -r name; do
[ -n "$name" ] && echo "- @$name"
done | grep -v "^$" || true)
if [ -n "$CONTRIBUTORS_LIST" ]; then
CONTRIBUTORS_SECTION="
### 🙏 致谢
感谢以下贡献者对本次发布的贡献:
$CONTRIBUTORS_LIST
"
echo "Found contributors: $CONTRIBUTORS"
fi
fi
# 根据版本类型设置不同的图标和描述
VERSION_ICON="🚀"
VERSION_DESC="稳定版本"
STABILITY_NOTE=""
if [[ $CURRENT_TAG =~ -(alpha|beta|rc) ]]; then
VERSION_ICON="🧪"
VERSION_DESC="预览版本"
STABILITY_NOTE="
> ⚠️ **注意**: 这是一个预览版本,可能包含实验性功能。建议在非生产环境中使用。"
elif [[ $CURRENT_TAG =~ -(hotfix|patch) ]]; then
VERSION_ICON="🔧"
VERSION_DESC="紧急修复版本"
STABILITY_NOTE="
> 🔧 **修复版本**: 此版本主要包含重要问题的修复,建议尽快更新。"
fi
# 创建release notes
cat > release_notes.md << EOF
## $VERSION_ICON Prompt Optimizer $CURRENT_TAG
**版本类型**: $VERSION_DESC$STABILITY_NOTE
### 📦 下载
- **Windows**: \`PromptOptimizer-*-win-x64.exe\` (安装程序) 或 \`PromptOptimizer-*-win-x64.zip\` (便携版)
- **macOS (Apple Silicon)**: \`PromptOptimizer-*-darwin-arm64.dmg\` (安装程序) 或 \`PromptOptimizer-*-darwin-arm64.zip\` (便携版)
- **macOS (Intel)**: \`PromptOptimizer-*-darwin-x64.dmg\` (安装程序) 或 \`PromptOptimizer-*-darwin-x64.zip\` (便携版)
- **Linux**: \`PromptOptimizer-*-linux-x86_64.AppImage\` (便携版) 或 \`PromptOptimizer-*-linux-x64.zip\` (便携版)
### 🔧 安装说明
- **Windows**:
- **安装程序**: 下载 \`.exe\` 文件,双击运行安装向导
- **便携版**: 下载 \`.zip\` 文件,解压后运行 \`PromptOptimizer.exe\`
- **macOS**:
- **Apple Silicon (M1/M2/M3)**: 下载 \`darwin-arm64\` 版本
- **Intel 芯片**: 下载 \`darwin-x64\` 版本
- **安装程序**: 下载 \`.dmg\` 文件,双击挂载后拖拽到应用程序文件夹
- **便携版**: 下载 \`.zip\` 文件,解压后运行 \`PromptOptimizer.app\`
- ⚠️ **安全提示**: 如果打开应用时提示「已损坏」或「无法验证开发者」,请在终端执行以下命令后重试:
\`\`\`bash
xattr -rd com.apple.quarantine /Applications/PromptOptimizer.app
\`\`\`
或者对于 .dmg 文件:
\`\`\`bash
xattr -rd com.apple.quarantine ~/Downloads/PromptOptimizer-*.dmg
\`\`\`
- **Linux**:
- **AppImage**: 下载 \`.AppImage\` 文件,添加执行权限后直接运行
- **便携版**: 下载 \`.zip\` 文件,解压后运行 \`PromptOptimizer\`
### 📝 更新内容
$COMMITS_LIMITED
$CONTRIBUTORS_SECTION
### 🔗 更多信息
- **项目主页**: [GitHub Repository](https://github.com/${{ github.repository }})
- **问题反馈**: [Issues](https://github.com/${{ github.repository }}/issues)
- **讨论交流**: [Discussions](https://github.com/${{ github.repository }}/discussions)
---
**提示**: 如果需要查看完整的提交历史,请访问项目的 [GitHub Commits](https://github.com/${{ github.repository }}/commits)
EOF
echo "Generated release notes:"
cat release_notes.md
- name: 创建 Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.version.outputs.version }}
name: ${{ steps.version.outputs.release_name_prefix }}${{ steps.version.outputs.version }}
body_path: release_notes.md
files: |
./artifacts/windows-build/*
./artifacts/macos-build/*
./artifacts/linux-build/*
draft: false
prerelease: ${{ steps.version.outputs.is_prerelease == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}