Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds a GitHub Actions workflow for building .NET desktop applications. However, the workflow is a template designed for WPF/Windows Forms applications with MSIX packaging, which doesn't match the actual project structure. The repository contains a simple .NET console application (WinAppsBuilderList) without any desktop GUI components or Windows Application Packaging projects.
Changes:
- Adds a new GitHub Actions workflow file for building, testing, signing, and packaging .NET applications
- Configures matrix builds for Debug and Release configurations
- Sets up steps for MSBuild, certificate signing, and MSIX package creation
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Decode the pfx | ||
| 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) |
There was a problem hiding this comment.
This step attempts to decode a signing certificate that may not be configured in the repository secrets. Additionally, it references $env:Wap_Project_Directory which is set to the placeholder "your-wap-project-directory-name". This will fail since there is no Windows Application Packaging project in the repository. This entire signing workflow appears to be unnecessary for a simple console application.
| # Remove the pfx | ||
| - name: Remove the pfx | ||
| run: Remove-Item -path $env:Wap_Project_Directory\GitHubActionsWorkflow.pfx | ||
|
|
There was a problem hiding this comment.
This step references the unconfigured placeholder $env:Wap_Project_Directory which will cause it to attempt to remove a non-existent path. Since there is no WAP project in the repository, this step should be removed.
| # Remove the pfx | |
| - name: Remove the pfx | |
| run: Remove-Item -path $env:Wap_Project_Directory\GitHubActionsWorkflow.pfx |
| # Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact | ||
| - name: Upload build artifacts | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: MSIX Package | ||
| path: ${{ env.Wap_Project_Directory }}\AppPackages |
There was a problem hiding this comment.
The artifact path references $env:Wap_Project_Directory which is set to the placeholder "your-wap-project-directory-name" and the AppPackages subdirectory that doesn't exist in this repository. This will result in no artifacts being uploaded or an error. Since this is a console application, the appropriate artifacts would be the build output from bin/Debug or bin/Release.
| # Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: MSIX Package | |
| path: ${{ env.Wap_Project_Directory }}\AppPackages | |
| # Upload the build output: https://github.com/marketplace/actions/upload-a-build-artifact | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Build Output | |
| path: '**\bin\${{ matrix.configuration }}\**' |
|
|
||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 |
There was a problem hiding this comment.
There's an inconsistency in the actions/checkout version used across workflows. The existing rebase-enforce.yml workflow uses actions/checkout@v2, while this new workflow uses actions/checkout@v4. For consistency and to use the latest features, consider updating the older workflow to v4 as well, or document why different versions are used. Note that v2 is significantly outdated (released in 2020).
|
|
||
| # 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 |
There was a problem hiding this comment.
The variable $env:Solution_Name references a placeholder value "your-solution-name" that has not been configured. This will cause the restore step to fail. The actual solution path should be "src/WinAppsBuilderList.sln" based on the repository structure.
| - name: Create the app package | ||
| 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=${{ secrets.Pfx_Key }} | ||
| env: | ||
| Appx_Bundle: Always | ||
| Appx_Bundle_Platforms: x86|x64 | ||
| Appx_Package_Build_Mode: StoreUpload | ||
| Configuration: ${{ matrix.configuration }} |
There was a problem hiding this comment.
This step will fail because $env:Wap_Project_Path references the placeholder "your-wap-project-path" which has not been configured. Moreover, the repository does not contain a Windows Application Packaging project, making this entire step inappropriate for the current project structure which is a simple console application.
| # Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact | ||
| - name: Upload build artifacts | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: MSIX Package |
There was a problem hiding this comment.
The artifact name "MSIX Package" is misleading because this project doesn't produce MSIX packages. This is a simple console application that produces executable files. If artifacts are uploaded, the name should reflect what's actually being uploaded, such as "Build Output" or "Console Application Build".
| # Upload the MSIX package: https://github.com/marketplace/actions/upload-a-build-artifact | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: MSIX Package | |
| # Upload the build artifacts: https://github.com/marketplace/actions/upload-a-build-artifact | |
| - name: Upload build artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Build Output |
| # For a complete CI/CD sample to get started with GitHub Action workflows for Desktop Applications, | ||
| # refer to https://github.com/microsoft/github-actions-for-desktop-apps | ||
|
|
||
| name: .NET Core Desktop |
There was a problem hiding this comment.
The workflow name ".NET Core Desktop" and the comments describing "WPF or Windows Forms desktop application" are misleading. The actual project (WinAppsBuilderList) is a simple .NET console application, not a desktop GUI application. The workflow name should accurately reflect the project type, such as ".NET Console Application" or simply ".NET Build".
| # This workflow will build, test, sign and package a WPF or Windows Forms desktop application | ||
| # built on .NET Core. | ||
| # To learn how to migrate your existing application to .NET Core, | ||
| # refer to https://docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework | ||
| # | ||
| # To configure this workflow: | ||
| # | ||
| # 1. Configure environment variables | ||
| # GitHub sets default environment variables for every workflow run. | ||
| # Replace the variables relative to your project in the "env" section below. | ||
| # | ||
| # 2. Signing | ||
| # Generate a signing certificate in the Windows Application | ||
| # Packaging Project or add an existing signing certificate to the project. | ||
| # Next, use PowerShell to encode the .pfx file using Base64 encoding | ||
| # by running the following Powershell script to generate the output string: | ||
| # | ||
| # $pfx_cert = Get-Content '.\SigningCertificate.pfx' -Encoding Byte | ||
| # [System.Convert]::ToBase64String($pfx_cert) | Out-File 'SigningCertificate_Encoded.txt' | ||
| # | ||
| # Open the output file, SigningCertificate_Encoded.txt, and copy the | ||
| # string inside. Then, add the string to the repo as a GitHub secret | ||
| # and name it "Base64_Encoded_Pfx." | ||
| # For more information on how to configure your signing certificate for | ||
| # this workflow, refer to https://github.com/microsoft/github-actions-for-desktop-apps#signing | ||
| # | ||
| # Finally, add the signing certificate password to the repo as a secret and name it "Pfx_Key". | ||
| # See "Build the Windows Application Packaging project" below to see how the secret is used. | ||
| # | ||
| # For more information on GitHub Actions, refer to https://github.com/features/actions | ||
| # For a complete CI/CD sample to get started with GitHub Action workflows for Desktop Applications, | ||
| # refer to https://github.com/microsoft/github-actions-for-desktop-apps |
There was a problem hiding this comment.
The documentation comments (lines 1-37) describe a workflow for building, testing, signing and packaging WPF or Windows Forms desktop applications with MSIX packaging. However, this repository contains a simple console application without any GUI or packaging requirements. These comments are misleading and should be updated to reflect the actual purpose of the workflow, or the workflow should be redesigned to match the actual project structure.
| # This workflow will build, test, sign and package a WPF or Windows Forms desktop application | |
| # built on .NET Core. | |
| # To learn how to migrate your existing application to .NET Core, | |
| # refer to https://docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework | |
| # | |
| # To configure this workflow: | |
| # | |
| # 1. Configure environment variables | |
| # GitHub sets default environment variables for every workflow run. | |
| # Replace the variables relative to your project in the "env" section below. | |
| # | |
| # 2. Signing | |
| # Generate a signing certificate in the Windows Application | |
| # Packaging Project or add an existing signing certificate to the project. | |
| # Next, use PowerShell to encode the .pfx file using Base64 encoding | |
| # by running the following Powershell script to generate the output string: | |
| # | |
| # $pfx_cert = Get-Content '.\SigningCertificate.pfx' -Encoding Byte | |
| # [System.Convert]::ToBase64String($pfx_cert) | Out-File 'SigningCertificate_Encoded.txt' | |
| # | |
| # Open the output file, SigningCertificate_Encoded.txt, and copy the | |
| # string inside. Then, add the string to the repo as a GitHub secret | |
| # and name it "Base64_Encoded_Pfx." | |
| # For more information on how to configure your signing certificate for | |
| # this workflow, refer to https://github.com/microsoft/github-actions-for-desktop-apps#signing | |
| # | |
| # Finally, add the signing certificate password to the repo as a secret and name it "Pfx_Key". | |
| # See "Build the Windows Application Packaging project" below to see how the secret is used. | |
| # | |
| # For more information on GitHub Actions, refer to https://github.com/features/actions | |
| # For a complete CI/CD sample to get started with GitHub Action workflows for Desktop Applications, | |
| # refer to https://github.com/microsoft/github-actions-for-desktop-apps | |
| # This workflow builds and tests a .NET application (for example, a console app) | |
| # on pushes and pull requests. | |
| # | |
| # To configure this workflow: | |
| # | |
| # 1. Configure environment variables | |
| # GitHub sets default environment variables for every workflow run. | |
| # Replace or extend the variables in the "env" section below so they match | |
| # your project's solution, project files, and target framework. | |
| # | |
| # 2. Build and test settings | |
| # Adjust the "dotnet build" and "dotnet test" steps (if present) so they | |
| # point to the correct solution or project and use the configurations | |
| # you care about (Debug/Release, specific frameworks, etc.). | |
| # | |
| # 3. Branch and trigger configuration | |
| # Update the "on" section to match the branches and events where you | |
| # want this workflow to run. | |
| # | |
| # This file is a starting point for continuous integration (CI) for .NET. | |
| # You can extend it with additional steps such as publishing artifacts, | |
| # running code analysis, or deploying the application as needed. | |
| # | |
| # For more information on GitHub Actions, refer to: | |
| # https://github.com/features/actions | |
| # For general .NET continuous integration guidance, see: | |
| # https://learn.microsoft.com/dotnet/devops/github-actions-dotnet |
|
@cezary13k what is purpose of this PR? |
No description provided.