diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml new file mode 100644 index 0000000..c93703e --- /dev/null +++ b/.github/workflows/msbuild.yml @@ -0,0 +1,62 @@ +name: MSBuild + +on: [push, pull_request] + +env: + # Path to the solution file relative to the root of the project. + SOLUTION_FILE_PATH: .\Pseudo3DCLIGame\Pseudo3DCLIGame.vcxproj + + # Configuration type to build. + # You can convert this to a build matrix if you need coverage of multiple configuration types. + # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix + BUILD_CONFIGURATION: Release + +permissions: + contents: read + +jobs: + build: + strategy: + matrix: + os: [windows-latest, windows-2022, windows-2019] + configuration: [Release, Debug] + platform: [x64, Win32] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v1.3.1 + + - name: Restore NuGet packages + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: nuget restore ${{ env.SOLUTION_FILE_PATH }} + + - name: Build + working-directory: ${{ env.GITHUB_WORKSPACE }} + # Add additional options to the MSBuild command line here (like platform or verbosity level). + # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference + run: msbuild /m /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} /p:PlatformToolset=${{ (matrix.os == 'windows-latest' || matrix.os == 'windows-2022') && '"v143"' || '"v142"' }} ${{ env.SOLUTION_FILE_PATH }} + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3 + with: + # Artifact name + name: ${{ vars.REPOSITORY_NAME }}-build-${{ matrix.os }}-${{ matrix.configuration }}-${{ matrix.platform }}-${{ github.sha }} # optional, default is artifact + + # A file, directory or wildcard pattern that describes what to upload + path: Pseudo3DCLIGame\${{ matrix.platform == 'x64' && 'x64\' || '' }}${{ matrix.configuration }} + + # The desired behavior if no files are found using the provided path. + # Available Options: + # warn: Output a warning but do not fail the action + # error: Fail the action with an error message + # ignore: Do not output any warnings or errors, the action does not fail + if-no-files-found: warn # optional, default is warn + + # Duration after which artifact will expire in days. 0 means using default retention. + # Minimum 1 day. Maximum 90 days unless changed from the repository settings page. + retention-days: 90 # optional