mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-24 02:14:26 +08:00
157 lines
2.9 KiB
Markdown
157 lines
2.9 KiB
Markdown
|
|
# 03-自动打包与发布
|
|||
|
|
|
|||
|
|
配置 GitHub Actions 自动打包 .laapp 并发布到 GitHub Releases。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 发布工作流
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
# .github/workflows/release.yml
|
|||
|
|
name: Release
|
|||
|
|
|
|||
|
|
on:
|
|||
|
|
push:
|
|||
|
|
tags:
|
|||
|
|
- 'v*'
|
|||
|
|
|
|||
|
|
env:
|
|||
|
|
DOTNET_VERSION: '10.0.x'
|
|||
|
|
|
|||
|
|
jobs:
|
|||
|
|
build-and-release:
|
|||
|
|
runs-on: windows-latest
|
|||
|
|
|
|||
|
|
steps:
|
|||
|
|
- name: Checkout
|
|||
|
|
uses: actions/checkout@v4
|
|||
|
|
|
|||
|
|
- name: Setup .NET
|
|||
|
|
uses: actions/setup-dotnet@v4
|
|||
|
|
with:
|
|||
|
|
dotnet-version: ${{ env.DOTNET_VERSION }}
|
|||
|
|
|
|||
|
|
- name: Get Version
|
|||
|
|
id: version
|
|||
|
|
run: |
|
|||
|
|
$version = $env:GITHUB_REF -replace 'refs/tags/v', ''
|
|||
|
|
echo "VERSION=$version" >> $env:GITHUB_OUTPUT
|
|||
|
|
|
|||
|
|
- name: Restore
|
|||
|
|
run: dotnet restore
|
|||
|
|
|
|||
|
|
- name: Build
|
|||
|
|
run: dotnet build --configuration Release --no-restore
|
|||
|
|
|
|||
|
|
- name: Package
|
|||
|
|
run: |
|
|||
|
|
$version = "${{ steps.version.outputs.VERSION }}"
|
|||
|
|
Rename-Item -Path "bin/Release/net10.0/MyPlugin.laapp" -NewName "MyPlugin-$version.laapp"
|
|||
|
|
|
|||
|
|
- name: Create Release
|
|||
|
|
uses: softprops/action-gh-release@v1
|
|||
|
|
with:
|
|||
|
|
files: bin/Release/net10.0/*.laapp
|
|||
|
|
generate_release_notes: true
|
|||
|
|
env:
|
|||
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 发布流程
|
|||
|
|
|
|||
|
|
### 1. 创建标签
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建版本标签
|
|||
|
|
git tag -a v1.0.0 -m "Release version 1.0.0"
|
|||
|
|
|
|||
|
|
# 推送标签到 GitHub
|
|||
|
|
git push origin v1.0.0
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 自动触发
|
|||
|
|
|
|||
|
|
推送标签后,GitHub Actions 会自动:
|
|||
|
|
1. 检出代码
|
|||
|
|
2. 构建项目
|
|||
|
|
3. 打包 .laapp
|
|||
|
|
4. 创建 Release
|
|||
|
|
5. 上传产物
|
|||
|
|
|
|||
|
|
### 3. 查看 Release
|
|||
|
|
|
|||
|
|
在 GitHub 仓库页面 → Releases 查看自动创建的发布。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 高级配置
|
|||
|
|
|
|||
|
|
### 预发布版本
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
- name: Create Release
|
|||
|
|
uses: softprops/action-gh-release@v1
|
|||
|
|
with:
|
|||
|
|
files: bin/Release/net10.0/*.laapp
|
|||
|
|
prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 生成变更日志
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
- name: Generate Changelog
|
|||
|
|
id: changelog
|
|||
|
|
uses: mikepenz/release-changelog-builder-action@v4
|
|||
|
|
with:
|
|||
|
|
configuration: .github/changelog-config.json
|
|||
|
|
env:
|
|||
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|||
|
|
|
|||
|
|
- name: Create Release
|
|||
|
|
uses: softprops/action-gh-release@v1
|
|||
|
|
with:
|
|||
|
|
body: ${{ steps.changelog.outputs.changelog }}
|
|||
|
|
files: bin/Release/net10.0/*.laapp
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 💡 最佳实践
|
|||
|
|
|
|||
|
|
### 版本号管理
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
- name: Update Version
|
|||
|
|
run: |
|
|||
|
|
$version = "${{ github.ref_name }}" -replace '^v', ''
|
|||
|
|
$json = Get-Content plugin.json | ConvertFrom-Json
|
|||
|
|
$json.version = $version
|
|||
|
|
$json | ConvertTo-Json | Set-Content plugin.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 多文件发布
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
- name: Create Release
|
|||
|
|
uses: softprops/action-gh-release@v1
|
|||
|
|
with:
|
|||
|
|
files: |
|
|||
|
|
bin/Release/net10.0/*.laapp
|
|||
|
|
README.md
|
|||
|
|
LICENSE
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 下一步
|
|||
|
|
|
|||
|
|
学习多平台构建:
|
|||
|
|
|
|||
|
|
👉 **[04-多平台构建策略](04-多平台构建策略.md)**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*最后更新:2026年4月*
|