From 43b778608ae514d62583145841d9109b3d5b7f75 Mon Sep 17 00:00:00 2001 From: lincube Date: Tue, 11 Aug 2026 23:19:35 +0800 Subject: [PATCH] =?UTF-8?q?feat.action=E5=B7=A5=E4=BD=9C=E6=B5=81=E9=87=8D?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 26 ++++---- .github/workflows/release.yml | 64 +++++++++++++++---- AGENTS.md | 2 +- ...inPackages.ps1 => Pack-AirAppPackages.ps1} | 0 4 files changed, 66 insertions(+), 26 deletions(-) rename scripts/{Pack-PluginPackages.ps1 => Pack-AirAppPackages.ps1} (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 62ac3b2..e75abf9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 550a19f..5a168c7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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 diff --git a/AGENTS.md b/AGENTS.md index f8fa3f6..55ec7ff 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -43,7 +43,7 @@ dotnet test LanMountainDesktop.slnx -c Debug AirApp 本地包生成: ```powershell -./scripts/Pack-PluginPackages.ps1 +./scripts/Pack-AirAppPackages.ps1 ``` ## 4. 改动前后必做检查 diff --git a/scripts/Pack-PluginPackages.ps1 b/scripts/Pack-AirAppPackages.ps1 similarity index 100% rename from scripts/Pack-PluginPackages.ps1 rename to scripts/Pack-AirAppPackages.ps1