ci: 暂时放弃自动构建

This commit is contained in:
denglihong2007
2025-03-02 15:06:31 +08:00
parent 500928bca3
commit c479da1c9f

View File

@@ -1,157 +0,0 @@
name: Release on Version Change
on:
push:
branches:
- master
permissions:
contents: write
pull-requests: read
jobs:
check-version:
runs-on: windows-latest
outputs:
version_updated: ${{ steps.check_version.outputs.updated }}
new_version: ${{ steps.get_version.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取全部提交历史以便比较标签
- name: Setup .NET 9.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Extract version from csproj
id: get_version
shell: pwsh
run: |
[xml]$csproj = Get-Content "./CRSim/CRSim.csproj"
# 确保选择包含Version的PropertyGroup
$version = $csproj.Project.PropertyGroup.Version
echo "Detected version: $version"
# 将版本设置为步骤输出
echo "version=$version" >> $env:GITHUB_OUTPUT
- name: Compare with latest tag
id: check_version
shell: pwsh
run: |
# 获取最新标签(按语义版本排序)
$latestTag = git tag --list --sort=-v:refname | Select-Object -First 1
echo "Latest tag: $latestTag"
# 获取csproj中的版本
$currentVersion = "${{ steps.get_version.outputs.version }}"
if (-not $latestTag) {
echo "首次发布,没有现有标签"
echo "updated=true" >> $env:GITHUB_OUTPUT
} elseif ($currentVersion -ne $latestTag) {
echo "检测到新版本: $currentVersion (旧版本: $latestTag)"
echo "updated=true" >> $env:GITHUB_OUTPUT
} else {
echo "版本未变化,跳过发布"
echo "updated=false" >> $env:GITHUB_OUTPUT
}
release:
needs: check-version
if: ${{ needs.check-version.outputs.version_updated == 'true' }}
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET 9.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: '9.0.x'
- name: Restore and Build
run: |
dotnet restore
dotnet build --configuration Release --no-restore
- name: Publish
run: dotnet publish -c Release -o out
- name: Create Zip Package
shell: pwsh
run: |
$version = "${{ needs.check-version.outputs.new_version }}"
Compress-Archive -Path out/* -DestinationPath "CRSim-release-$version.zip"
- name: Generate Release Notes
id: release_notes
shell: pwsh
run: |
# 获取最新 Release 版本号
$latestTag = gh release list --limit 1 --json tagName --jq ".[0].tagName" 2>$null
if (-not $latestTag) {
$latestTag = ""
}
$originalOutputEncoding = [Console]::OutputEncoding
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
try {
# 初始化日志文件UTF-8 编码)
$releaseNotesPath = "release_notes.md"
# 获取 Commit 日志
if (-not $latestTag) {
Set-Content -Path $releaseNotesPath -Value "## 初始版本" -Encoding UTF8
$commitLogs = git log --pretty=format:"%s"
} else {
$latestTag += "..HEAD"
Set-Content -Path $releaseNotesPath -Value "## 更新日志" -Encoding UTF8
$commitLogs = git log $latestTag --pretty=format:"%s"
}
} finally {
# 恢复原始编码设置
[Console]::OutputEncoding = $originalOutputEncoding
}
# 解析 Conventional Commits
$features = @()
$fixes = @()
$others = @()
foreach ($log in $commitLogs) {
if ($log -match "^feat!:? (.+)") {
$features += "- 🚀 **$($matches[1])**"
} elseif ($log -match "^fix!:? (.+)") {
$fixes += "- 🐛 **$($matches[1])**"
} elseif ($log -match "^(chore|docs|refactor|test|style): (.+)") {
$others += "- 🔧 **$($matches[2])**"
}
}
# 写入日志文件UTF-8 编码)
if ($features.Count -gt 0) {
Add-Content -Path $releaseNotesPath -Value "`n### ✨ 特性`n" -Encoding UTF8
Add-Content -Path $releaseNotesPath -Value ($features -join "`n") -Encoding UTF8
}
if ($fixes.Count -gt 0) {
Add-Content -Path $releaseNotesPath -Value "`n### 🐞 修复`n" -Encoding UTF8
Add-Content -Path $releaseNotesPath -Value ($fixes -join "`n") -Encoding UTF8
}
if ($others.Count -gt 0) {
Add-Content -Path $releaseNotesPath -Value "`n### 🛠 其他更新`n" -Encoding UTF8
Add-Content -Path $releaseNotesPath -Value ($others -join "`n") -Encoding UTF8
}
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: v${{ needs.check-version.outputs.new_version }}
name: ${{ needs.check-version.outputs.new_version }}
body_path: release_notes.md
files: CRSim-release-${{ needs.check-version.outputs.new_version }}.zip