mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-22 17:24:27 +08:00
216 lines
3.7 KiB
Markdown
216 lines
3.7 KiB
Markdown
# 01-GitHub Actions入门
|
||
|
||
GitHub Actions 是自动化构建、测试和发布插件的强大工具。本文介绍如何为插件项目配置 CI/CD 流程。
|
||
|
||
---
|
||
|
||
## 🎯 什么是 GitHub Actions
|
||
|
||
GitHub Actions 是 GitHub 提供的持续集成/持续部署(CI/CD)服务,可以:
|
||
|
||
- ✅ 自动构建插件
|
||
- ✅ 运行单元测试
|
||
- ✅ 打包 .laapp 文件
|
||
- ✅ 自动发布到 GitHub Releases
|
||
|
||
---
|
||
|
||
## 📁 工作流文件位置
|
||
|
||
```
|
||
.github/workflows/
|
||
├── build.yml # 构建工作流
|
||
├── release.yml # 发布工作流
|
||
└── code-quality.yml # 代码质量检查
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 基础工作流示例
|
||
|
||
### 最简单的构建工作流
|
||
|
||
```yaml
|
||
# .github/workflows/build.yml
|
||
name: Build Plugin
|
||
|
||
on:
|
||
push:
|
||
branches: [main, master]
|
||
pull_request:
|
||
branches: [main, master]
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: windows-latest
|
||
|
||
steps:
|
||
# 1. 检出代码
|
||
- name: Checkout
|
||
uses: actions/checkout@v4
|
||
|
||
# 2. 设置 .NET
|
||
- name: Setup .NET
|
||
uses: actions/setup-dotnet@v4
|
||
with:
|
||
dotnet-version: '10.0.x'
|
||
|
||
# 3. 还原依赖
|
||
- name: Restore
|
||
run: dotnet restore
|
||
|
||
# 4. 构建
|
||
- name: Build
|
||
run: dotnet build --configuration Release --no-restore
|
||
|
||
# 5. 上传构建产物
|
||
- name: Upload Artifact
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: plugin-package
|
||
path: bin/Release/net10.0/*.laapp
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 工作流详解
|
||
|
||
### 触发条件(on)
|
||
|
||
```yaml
|
||
on:
|
||
# 推送到指定分支时触发
|
||
push:
|
||
branches: [main, master, develop]
|
||
|
||
# 创建 Pull Request 时触发
|
||
pull_request:
|
||
branches: [main, master]
|
||
|
||
# 手动触发
|
||
workflow_dispatch:
|
||
|
||
# 定时触发(每天凌晨2点)
|
||
schedule:
|
||
- cron: '0 2 * * *'
|
||
|
||
# 创建标签时触发(用于发布)
|
||
push:
|
||
tags:
|
||
- 'v*'
|
||
```
|
||
|
||
### 运行环境(runs-on)
|
||
|
||
```yaml
|
||
jobs:
|
||
build:
|
||
runs-on: windows-latest # Windows 环境
|
||
# 或
|
||
runs-on: ubuntu-latest # Linux 环境
|
||
# 或
|
||
runs-on: macos-latest # macOS 环境
|
||
```
|
||
|
||
### 矩阵构建(多平台)
|
||
|
||
```yaml
|
||
jobs:
|
||
build:
|
||
strategy:
|
||
matrix:
|
||
os: [windows-latest, ubuntu-latest, macos-latest]
|
||
dotnet: ['10.0.x']
|
||
|
||
runs-on: ${{ matrix.os }}
|
||
|
||
steps:
|
||
- uses: actions/setup-dotnet@v4
|
||
with:
|
||
dotnet-version: ${{ matrix.dotnet }}
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 常用 Actions
|
||
|
||
### 检出代码
|
||
|
||
```yaml
|
||
- uses: actions/checkout@v4
|
||
with:
|
||
fetch-depth: 0 # 获取完整历史(用于生成版本号)
|
||
```
|
||
|
||
### 设置 .NET
|
||
|
||
```yaml
|
||
- uses: actions/setup-dotnet@v4
|
||
with:
|
||
dotnet-version: '10.0.x'
|
||
```
|
||
|
||
### 上传产物
|
||
|
||
```yaml
|
||
- uses: actions/upload-artifact@v4
|
||
with:
|
||
name: plugin-package
|
||
path: bin/Release/net10.0/*.laapp
|
||
retention-days: 30 # 保留30天
|
||
```
|
||
|
||
### 下载产物
|
||
|
||
```yaml
|
||
- uses: actions/download-artifact@v4
|
||
with:
|
||
name: plugin-package
|
||
path: ./artifacts
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 最佳实践
|
||
|
||
### 1. 缓存依赖
|
||
|
||
```yaml
|
||
- uses: actions/cache@v4
|
||
with:
|
||
path: ~/.nuget/packages
|
||
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
|
||
restore-keys: |
|
||
${{ runner.os }}-nuget-
|
||
```
|
||
|
||
### 2. 使用语义化版本
|
||
|
||
```yaml
|
||
- name: Get Version
|
||
id: version
|
||
run: |
|
||
VERSION=$(echo ${GITHUB_REF#refs/tags/} | sed 's/^v//')
|
||
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
|
||
```
|
||
|
||
### 3. 条件执行
|
||
|
||
```yaml
|
||
- name: Deploy
|
||
if: github.ref == 'refs/heads/main' # 只在 main 分支执行
|
||
run: echo "Deploying..."
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 下一步
|
||
|
||
学习自动打包配置:
|
||
|
||
👉 **[02-配置自动构建](02-配置自动构建.md)**
|
||
|
||
---
|
||
|
||
*最后更新:2026年4月*
|