diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml new file mode 100644 index 0000000..a5cfaa7 --- /dev/null +++ b/.github/workflows/dotnet-desktop.yml @@ -0,0 +1,67 @@ +name: .NET Core Desktop CI/CD + +on: + push: + branches: [ "main" ] + +jobs: + build: + strategy: + matrix: + configuration: [Debug, Release] + + runs-on: windows-latest + + env: + Solution_Name: MyApp.sln + Test_Project_Path: MyApp.Tests/MyApp.Tests.csproj + Wap_Project_Directory: MyApp.Package + Wap_Project_Path: MyApp.Package/MyApp.Package.wapproj + + steps: + - name: Checkout source + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install .NET 8 SDK + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + + - name: Setup MSBuild + uses: microsoft/setup-msbuild@v2 + + - name: Run unit tests + run: dotnet test $env:Test_Project_Path + + - name: Restore solution + run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + env: + Configuration: ${{ matrix.configuration }} + + - name: Decode signing certificate + run: | + $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.Base64_Encoded_Pfx }}") + $certificatePath = Join-Path -Path $env:Wap_Project_Directory -ChildPath GitHubActionsWorkflow.pfx + [IO.File]::WriteAllBytes("$certificatePath", $pfx_cert_byte) + + - name: Build and package MSIX + env: + PFX_PASSWORD: ${{ secrets.Pfx_Key }} + run: msbuild $env:Wap_Project_Path /p:Configuration=$env:Configuration /p:UapAppxPackageBuildMode=$env:Appx_Package_Build_Mode /p:AppxBundle=$env:Appx_Bundle /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword="$env:PFX_PASSWORD" + env: + Appx_Bundle: Always + Appx_Bundle_Platforms: x86|x64 + Appx_Package_Build_Mode: StoreUpload + Configuration: ${{ matrix.configuration }} + + - name: Remove temporary certificate + if: always() + run: Remove-Item -path $env:Wap_Project_Directory\GitHubActionsWorkflow.pfx + + - name: Upload MSIX artifacts + uses: actions/upload-artifact@v4 + with: + name: MSIX-Package + path: ${{ env.Wap_Project_Directory }}\bin\${{ matrix.configuration }}