- Introduced WSL editor launch modes in SettingsPage with options for internal, remote, and UNC path launches. - Enhanced settings saving to include the new WSL launch mode. - Added an update section to check for application updates, download, and install them with progress tracking. - Updated Toast component to handle error messages with a copy button for convenience. - Expanded commands to include project tags and templates management, along with WSL proxy synchronization features.
132 lines
4.9 KiB
YAML
132 lines
4.9 KiB
YAML
name: Release
|
||
|
||
on:
|
||
push:
|
||
tags:
|
||
- 'v*'
|
||
|
||
jobs:
|
||
release:
|
||
runs-on: windows-latest
|
||
steps:
|
||
- uses: actions/checkout@v4
|
||
|
||
- uses: pnpm/action-setup@v4
|
||
with:
|
||
version: 9
|
||
|
||
- name: Setup Node.js
|
||
uses: actions/setup-node@v4
|
||
with:
|
||
node-version: '20'
|
||
cache: 'pnpm'
|
||
|
||
- name: Install Rust
|
||
uses: dtolnay/rust-toolchain@stable
|
||
|
||
- name: Rust cache
|
||
uses: swatinem/rust-cache@v2
|
||
with:
|
||
workspaces: './src-tauri -> target'
|
||
|
||
- run: pnpm install --frozen-lockfile
|
||
|
||
# 构建 Tauri 应用,tauri-action 自动签名并创建 GitHub Release
|
||
- name: Build & Release
|
||
uses: tauri-apps/tauri-action@v0
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
||
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
|
||
with:
|
||
tagName: ${{ github.ref_name }}
|
||
releaseName: Dev Manager ${{ github.ref_name }}
|
||
releaseBody: |
|
||
## 更新内容
|
||
请查看提交记录了解详情。
|
||
releaseDraft: false
|
||
prerelease: false
|
||
|
||
# 找到生成的安装包和签名文件
|
||
- name: Collect artifacts
|
||
id: artifacts
|
||
shell: pwsh
|
||
run: |
|
||
$tag = "${{ github.ref_name }}"
|
||
$version = $tag.TrimStart('v')
|
||
|
||
$nsisDir = "src-tauri/target/release/bundle/nsis"
|
||
|
||
# 安装包(用于首次下载)
|
||
$installer = Get-ChildItem $nsisDir -Filter "*_x64-setup.exe" | Select-Object -First 1
|
||
# 更新包(updater 用)
|
||
$updateZip = Get-ChildItem $nsisDir -Filter "*.nsis.zip" | Select-Object -First 1
|
||
$sigFile = Get-ChildItem $nsisDir -Filter "*.nsis.zip.sig" | Select-Object -First 1
|
||
|
||
echo "INSTALLER=$($installer.FullName)" >> $env:GITHUB_OUTPUT
|
||
echo "UPDATE_ZIP=$($updateZip.FullName)" >> $env:GITHUB_OUTPUT
|
||
echo "SIG_FILE=$($sigFile.FullName)" >> $env:GITHUB_OUTPUT
|
||
echo "VERSION=$version" >> $env:GITHUB_OUTPUT
|
||
echo "INSTALLER_NAME=$($installer.Name)" >> $env:GITHUB_OUTPUT
|
||
echo "UPDATE_ZIP_NAME=$($updateZip.Name)" >> $env:GITHUB_OUTPUT
|
||
|
||
# 上传到阿里云 OSS
|
||
- name: Install ossutil
|
||
shell: pwsh
|
||
run: |
|
||
Invoke-WebRequest -Uri "https://gosspublic.alicdn.com/ossutil/1.7.17/ossutil64.zip" -OutFile ossutil.zip
|
||
Expand-Archive ossutil.zip -DestinationPath ossutil
|
||
echo "$PWD/ossutil" >> $env:GITHUB_PATH
|
||
|
||
- name: Upload to OSS
|
||
shell: pwsh
|
||
env:
|
||
OSS_KEY_ID: ${{ secrets.OSS_KEY_ID }}
|
||
OSS_KEY_SECRET: ${{ secrets.OSS_KEY_SECRET }}
|
||
OSS_BUCKET: ${{ secrets.OSS_BUCKET }}
|
||
OSS_ENDPOINT: ${{ secrets.OSS_ENDPOINT }}
|
||
run: |
|
||
$tag = "${{ github.ref_name }}"
|
||
$bucket = "oss://$env:OSS_BUCKET"
|
||
$endpoint = "https://$env:OSS_ENDPOINT"
|
||
|
||
# 配置 ossutil
|
||
ossutil64/ossutil64.exe config -e $endpoint -i $env:OSS_KEY_ID -k $env:OSS_KEY_SECRET
|
||
|
||
# 上传安装包和更新包
|
||
ossutil64/ossutil64.exe cp "${{ steps.artifacts.outputs.INSTALLER }}" "$bucket/releases/$tag/${{ steps.artifacts.outputs.INSTALLER_NAME }}" -f
|
||
ossutil64/ossutil64.exe cp "${{ steps.artifacts.outputs.UPDATE_ZIP }}" "$bucket/releases/$tag/${{ steps.artifacts.outputs.UPDATE_ZIP_NAME }}" -f
|
||
ossutil64/ossutil64.exe cp "${{ steps.artifacts.outputs.SIG_FILE }}" "$bucket/releases/$tag/${{ steps.artifacts.outputs.UPDATE_ZIP_NAME }}.sig" -f
|
||
|
||
# 生成并上传 latest.json(国内客户端更新检测入口)
|
||
- name: Generate latest.json
|
||
shell: pwsh
|
||
env:
|
||
OSS_KEY_ID: ${{ secrets.OSS_KEY_ID }}
|
||
OSS_KEY_SECRET: ${{ secrets.OSS_KEY_SECRET }}
|
||
OSS_BUCKET: ${{ secrets.OSS_BUCKET }}
|
||
OSS_ENDPOINT: ${{ secrets.OSS_ENDPOINT }}
|
||
run: |
|
||
$tag = "${{ github.ref_name }}"
|
||
$version = "${{ steps.artifacts.outputs.VERSION }}"
|
||
$date = (Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ')
|
||
$baseUrl = "https://$env:OSS_BUCKET.$env:OSS_ENDPOINT/releases/$tag"
|
||
$zipName = "${{ steps.artifacts.outputs.UPDATE_ZIP_NAME }}"
|
||
$sig = (Get-Content "${{ steps.artifacts.outputs.SIG_FILE }}" -Raw).Trim()
|
||
|
||
$json = [ordered]@{
|
||
version = $version
|
||
pub_date = $date
|
||
notes = "版本 $tag 已发布"
|
||
platforms = [ordered]@{
|
||
'windows-x86_64' = [ordered]@{
|
||
signature = $sig
|
||
url = "$baseUrl/$zipName"
|
||
}
|
||
}
|
||
} | ConvertTo-Json -Depth 5
|
||
|
||
$json | Out-File -FilePath latest.json -Encoding utf8NoBOM
|
||
|
||
ossutil64/ossutil64.exe cp latest.json "oss://$env:OSS_BUCKET/latest.json" -f
|