diff --git a/.github/workflows/DuckStation-Builder.yaml b/.github/workflows/DuckStation-Builder.yaml new file mode 100644 index 0000000000..b2fbe7c42e --- /dev/null +++ b/.github/workflows/DuckStation-Builder.yaml @@ -0,0 +1,61 @@ +name: DuckStation-Builder + +on: + workflow_dispatch: + +jobs: + + build: + + strategy: + matrix: + configuration: [Debug, Release] + + runs-on: windows-latest + + env: + Solution_Name: duckstation.sln + UWP_Project_Directory: src/duckstation-uwp + UWP_Project_Path: src/duckstation-uwp/duckstation-uwp.vcxproj + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + + - name: Setup MSBuild.exe + uses: microsoft/setup-msbuild@v2 + +# Execute all unit tests in the solution + - name: Execute unit tests + run: dotnet test + +# Restore the application to populate the obj folder with RuntimeIdentifiers + - name: Restore the application + run: msbuild $env:Solution_Name /t:Restore /p:Configuration=$env:Configuration + env: + Configuration: ${{ matrix.configuration }} + + - name: Decode the pfx and save it + run: | + $pfx_cert_byte = [System.Convert]::FromBase64String("${{ secrets.DUCKSTATION_PFX }}") + $certificatePath = "./GitHubActionsWorkflow.pfx" + [IO.File]::WriteAllBytes("$certificatePath", $pfx_cert_byte) + + - name: Create the app package + run: msbuild $env:UWP_Project_Path /p:Configuration=Release /p:UapAppxPackageBuildMode=SideloadOnly /p:AppxBundle=Never /p:PackageCertificateKeyFile=GitHubActionsWorkflow.pfx /p:PackageCertificatePassword=${{ secrets.PFX_PASSWORD }} + + - name: Remove the pfx + run: Remove-Item -Path "./GitHubActionsWorkflow.pfx" + + - name: Upload build artifacts + uses: actions/upload-artifact@v3 + with: + name: MSIX Package + path: ${{ env.UWP_Project_Directory }}\AppPackages