feat.action工作流重构

This commit is contained in:
lincube
2026-08-11 23:19:35 +08:00
parent b6fde8188d
commit 43b778608a
4 changed files with 66 additions and 26 deletions

View File

@@ -22,7 +22,7 @@ jobs:
matrix:
configuration: [ Debug, Release ]
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v7
@@ -50,7 +50,7 @@ jobs:
- name: Build
run: dotnet build ${{ env.Solution_Name }} --no-restore -c ${{ matrix.configuration }} -v minimal
env:
# Skip AirAppHost build to avoid recursive build issues
# AirAppHost 已在解决方案中独立构建;跳过主程序的嵌套 AirAppHost 构建目标
SkipAirAppHostBuild: true
- name: Upload artifacts
@@ -64,7 +64,7 @@ jobs:
build-linux:
runs-on: ubuntu-latest
name: Build_Linux
steps:
- name: Checkout
uses: actions/checkout@v7
@@ -109,7 +109,7 @@ jobs:
- name: Build
run: dotnet build ${{ env.Solution_Name }} --no-restore -c Release -v minimal
env:
# Skip AirAppHost build to avoid recursive build issues
# AirAppHost 已在解决方案中独立构建;跳过主程序的嵌套 AirAppHost 构建目标
SkipAirAppHostBuild: true
- name: Upload artifacts
@@ -123,7 +123,7 @@ jobs:
build-macos:
runs-on: macos-latest
name: Build_macOS
steps:
- name: Checkout
uses: actions/checkout@v7
@@ -154,7 +154,7 @@ jobs:
- name: Build
run: dotnet build ${{ env.Solution_Name }} --no-restore -c Release -v minimal
env:
# Skip AirAppHost build to avoid recursive build issues
# AirAppHost 已在解决方案中独立构建;跳过主程序的嵌套 AirAppHost 构建目标
SkipAirAppHostBuild: true
- name: Upload artifacts
@@ -168,7 +168,7 @@ jobs:
build-android:
runs-on: ubuntu-latest
name: Build_Android
# Android head 尚未合入时允许跳过
# Android head 需要 Android workload仅验证 mobile/LanMountainDesktop.Mobile.Android
steps:
- name: Checkout
uses: actions/checkout@v7
@@ -179,7 +179,7 @@ jobs:
- name: Check Android head exists
id: check
run: |
if [ -f "LanMountainDesktop.Mobile.Android/LanMountainDesktop.Mobile.Android.csproj" ]; then
if [ -f "mobile/LanMountainDesktop.Mobile.Android/LanMountainDesktop.Mobile.Android.csproj" ]; then
echo "exists=true" >> "$GITHUB_OUTPUT"
else
echo "exists=false" >> "$GITHUB_OUTPUT"
@@ -215,7 +215,7 @@ jobs:
- name: Build Android head
if: steps.check.outputs.exists == 'true'
run: dotnet build LanMountainDesktop.Mobile.Android/LanMountainDesktop.Mobile.Android.csproj -c Release -v minimal
run: dotnet build mobile/LanMountainDesktop.Mobile.Android/LanMountainDesktop.Mobile.Android.csproj -c Release -v minimal
- name: Upload artifacts
if: steps.check.outputs.exists == 'true'
@@ -223,7 +223,7 @@ jobs:
with:
name: build-android
path: |
LanMountainDesktop.Mobile.Android/bin/Release/**/*.apk
mobile/LanMountainDesktop.Mobile.Android/bin/Release/**/*.apk
if-no-files-found: warn
retention-days: 7
@@ -252,14 +252,14 @@ jobs:
restore-keys: |
${{ runner.os }}-nuget-
- name: Pack SDK and template packages
- name: Pack AirApp SDK and template packages
shell: pwsh
run: .\scripts\Pack-PluginPackages.ps1 -Configuration Release -OutputPath .\artifacts\nuget
run: .\scripts\Pack-AirAppPackages.ps1 -Configuration Release -OutputPath .\artifacts\nuget
- name: Upload AirApp package artifacts
uses: actions/upload-artifact@v7
with:
name: plugin-packages
name: airapp-packages
path: artifacts/nuget/*.nupkg
if-no-files-found: error
retention-days: 14

View File

@@ -169,7 +169,7 @@ jobs:
run: |
$publishDir = "publish/windows-${{ matrix.arch }}"
dotnet publish LanMountainDesktop/LanMountainDesktop.csproj `
dotnet publish desktop/LanMountainDesktop/LanMountainDesktop.csproj `
-c Release `
-o ./$publishDir `
--self-contained:false `
@@ -269,7 +269,7 @@ jobs:
$arch = "${{ matrix.arch }}"
$publishDir = "publish/windows-$arch"
./LanMountainDesktop/scripts/Optimize-PublishPayload.ps1 `
./desktop/LanMountainDesktop/scripts/Optimize-PublishPayload.ps1 `
-PublishDir $publishDir `
-RuntimeIdentifier "win-$arch" `
-AssertClean
@@ -310,7 +310,7 @@ jobs:
$suffix = "${{ matrix.suffix }}"
$publishDir = "publish/windows-$arch"
$outputDir = "build-installer"
$installerScript = "LanMountainDesktop/installer/LanMountainDesktop.iss"
$installerScript = "desktop/LanMountainDesktop/installer/LanMountainDesktop.iss"
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
@@ -485,7 +485,7 @@ jobs:
- name: Publish Main App
run: |
dotnet publish LanMountainDesktop/LanMountainDesktop.csproj \
dotnet publish desktop/LanMountainDesktop/LanMountainDesktop.csproj \
-c Release \
-o ./publish/linux-x64-app \
--self-contained \
@@ -521,6 +521,26 @@ jobs:
-p:FileVersion=${{ needs.prepare.outputs.assembly_version }} \
-p:InformationalVersion=${{ needs.prepare.outputs.informational_version }}
- name: Publish AirAppHost
run: |
dotnet publish airapp/LanMountainDesktop.AirAppHost/LanMountainDesktop.AirAppHost.csproj \
-c Release \
-o ./publish/linux-x64-app \
--self-contained \
-r linux-x64 \
-p:SelfContained=true \
-p:PublishSingleFile=false \
-p:DebugType=none \
-p:DebugSymbols=false \
-p:PublishTrimmed=false \
-p:PublishReadyToRun=false \
-p:BuildingAirAppHost=true \
-p:SkipAirAppHostBuild=true \
-p:Version=${{ needs.prepare.outputs.version }} \
-p:AssemblyVersion=${{ needs.prepare.outputs.assembly_version }} \
-p:FileVersion=${{ needs.prepare.outputs.assembly_version }} \
-p:InformationalVersion=${{ needs.prepare.outputs.informational_version }}
- name: Restructure for Launcher
run: |
version="${{ needs.prepare.outputs.version }}"
@@ -581,8 +601,8 @@ jobs:
package_name="LanMountainDesktop"
package_version="${version}"
arch="amd64"
desktop_template="LanMountainDesktop/packaging/linux/LanMountainDesktop.desktop"
icon_source="LanMountainDesktop/packaging/linux/lanmountaindesktop.png"
desktop_template="desktop/LanMountainDesktop/packaging/linux/LanMountainDesktop.desktop"
icon_source="desktop/LanMountainDesktop/packaging/linux/lanmountaindesktop.png"
mkdir -p "build-deb/DEBIAN"
mkdir -p "build-deb/usr/local/bin"
@@ -669,7 +689,7 @@ jobs:
# ll-builder mounts the project directory to /project inside the container
mkdir -p "$linglongDir/publish"
cp -r "$publishDir"/* "$linglongDir/publish/"
cp -r LanMountainDesktop "$linglongDir/LanMountainDesktop"
cp -r desktop/LanMountainDesktop "$linglongDir/LanMountainDesktop"
# Build using ll-builder
cd "$linglongDir"
@@ -743,8 +763,8 @@ jobs:
EOF
# Copy icon
cp LanMountainDesktop/packaging/linux/lanmountaindesktop.png "$appimageDir/AppDir/"
cp LanMountainDesktop/packaging/linux/lanmountaindesktop.png \
cp desktop/LanMountainDesktop/packaging/linux/lanmountaindesktop.png "$appimageDir/AppDir/"
cp desktop/LanMountainDesktop/packaging/linux/lanmountaindesktop.png \
"$appimageDir/AppDir/usr/share/icons/hicolor/256x256/apps/"
# Create AppRun script
@@ -848,7 +868,7 @@ jobs:
EOF
# Copy icon
cp LanMountainDesktop/packaging/linux/lanmountaindesktop.png \
cp desktop/LanMountainDesktop/packaging/linux/lanmountaindesktop.png \
"$flatpakDir/source/"
# Build Flatpak
@@ -968,7 +988,7 @@ jobs:
- name: Publish Main App
run: |
dotnet publish LanMountainDesktop/LanMountainDesktop.csproj \
dotnet publish desktop/LanMountainDesktop/LanMountainDesktop.csproj \
-c Release \
-o ./publish/macos-${{ matrix.arch }}-app \
--self-contained:false \
@@ -1004,12 +1024,32 @@ jobs:
-p:FileVersion=${{ needs.prepare.outputs.assembly_version }} \
-p:InformationalVersion=${{ needs.prepare.outputs.informational_version }}
- name: Publish AirAppHost
run: |
dotnet publish airapp/LanMountainDesktop.AirAppHost/LanMountainDesktop.AirAppHost.csproj \
-c Release \
-o ./publish/macos-${{ matrix.arch }}-app \
--self-contained false \
-r osx-${{ matrix.arch }} \
-p:SelfContained=false \
-p:PublishSingleFile=false \
-p:DebugType=none \
-p:DebugSymbols=false \
-p:PublishTrimmed=false \
-p:PublishReadyToRun=false \
-p:BuildingAirAppHost=true \
-p:SkipAirAppHostBuild=true \
-p:Version=${{ needs.prepare.outputs.version }} \
-p:AssemblyVersion=${{ needs.prepare.outputs.assembly_version }} \
-p:FileVersion=${{ needs.prepare.outputs.assembly_version }} \
-p:InformationalVersion=${{ needs.prepare.outputs.informational_version }}
- name: Optimize and Guard macOS Payload
run: |
arch="${{ matrix.arch }}"
publishDir="publish/macos-${arch}-app"
pwsh ./LanMountainDesktop/scripts/Optimize-PublishPayload.ps1 \
pwsh ./desktop/LanMountainDesktop/scripts/Optimize-PublishPayload.ps1 \
-PublishDir "$publishDir" \
-RuntimeIdentifier "osx-${arch}" \
-AssertClean