msvc.yml 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. name: MSVC
  2. on:
  3. push:
  4. branches: ["master"]
  5. tags: ["4.*"]
  6. pull_request:
  7. branches: ["master"]
  8. concurrency:
  9. group: ${{ github.workflow }}-${{ github.ref }}
  10. cancel-in-progress: true
  11. env:
  12. # https://github.com/microsoft/vcpkg/releases/tag/2025.07.25
  13. VCPKGGITCOMMITID: dd3097e305afa53f7b4312371f62058d2e665320
  14. jobs:
  15. code-analysis:
  16. name: code analysis (windows-vc-${{ matrix.VCPKG_PLATFORM_TOOLSET }}-${{ matrix.CMAKE_GENERATOR_PLATFORM }}-${{ matrix.BUILD_TYPE }}-${{ matrix.BUILD_SHARED_LIBS }})
  17. runs-on: windows-latest
  18. strategy:
  19. fail-fast: false
  20. matrix:
  21. BUILD_TYPE: [Release]
  22. BUILD_SHARED_LIBS: [OFF]
  23. VCPKG_PLATFORM_TOOLSET: [v143]
  24. CMAKE_GENERATOR_PLATFORM: [x64]
  25. env:
  26. SOURCE_DIR: ${{ github.workspace }}\.cache\source
  27. TOOLS_DIR: ${{ github.workspace }}\.cache\tools
  28. INSTALL_DIR: ${{ github.workspace }}\.cache\install_msvc_x64-windows_${{ matrix.BUILD_TYPE }}
  29. VCPKG_PLATFORM_TOOLSET: ${{ matrix.VCPKG_PLATFORM_TOOLSET }}
  30. CMAKE_GENERATOR_PLATFORM: ${{ matrix.CMAKE_GENERATOR_PLATFORM }}
  31. defaults:
  32. run:
  33. shell: cmd
  34. permissions:
  35. security-events: write # required for all CodeQL to report detected outcomes
  36. steps:
  37. - uses: actions/checkout@v6
  38. - name: Create directories
  39. run: |
  40. cmake -E make_directory ${{ env.SOURCE_DIR }}
  41. cmake -E make_directory ${{ env.TOOLS_DIR }}
  42. cmake -E make_directory ${{ env.INSTALL_DIR }}
  43. - name: run-vcpkg
  44. uses: lukka/run-vcpkg@v11
  45. with:
  46. # If not using a submodule for vcpkg sources, this specifies which commit
  47. # id must be checkout from a Git repo. It must not set if using a submodule
  48. # for vcpkg.
  49. vcpkgGitCommitId: '${{ env.VCPKGGITCOMMITID }}'
  50. - name: Configure
  51. run: |
  52. cmake -B build ^
  53. -A ${{ matrix.CMAKE_GENERATOR_PLATFORM }} ^
  54. -T ${{ matrix.VCPKG_PLATFORM_TOOLSET }} ^
  55. -DWITH_MYSQL=OFF ^
  56. -DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
  57. -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
  58. -DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake
  59. - name: Initialize MSVC Code Analysis
  60. uses: microsoft/[email protected]
  61. # Provide a unique ID to access the SARIF output path.
  62. id: run-analysis
  63. with:
  64. cmakeBuildDirectory: build
  65. buildConfiguration: ${{ matrix.BUILD_TYPE }}
  66. # Ruleset file that will determine what checks will be run.
  67. ruleset: NativeRecommendedRules.ruleset
  68. # Upload SARIF file to GitHub Code Scanning Alerts
  69. - name: Upload SARIF to GitHub
  70. uses: github/codeql-action/upload-sarif@v4
  71. with:
  72. sarif_file: ${{ steps.run-analysis.outputs.sarif }}
  73. compile:
  74. name: compile (${{ matrix.os }}-vc-${{ matrix.VCPKG_PLATFORM_TOOLSET }}-${{ matrix.CMAKE_GENERATOR_PLATFORM }}-${{ matrix.BUILD_TYPE }}-${{ matrix.BUILD_SHARED_LIBS }})
  75. strategy:
  76. fail-fast: false
  77. matrix:
  78. BUILD_TYPE: ["Release", "Debug"]
  79. BUILD_SHARED_LIBS: ["OFF", "ON"]
  80. CMAKE_GENERATOR_PLATFORM: ["x64", "Win32"]
  81. os: ["windows"]
  82. include:
  83. # MSVC 2022
  84. - triplet: x64-windows
  85. VCPKG_PLATFORM_TOOLSET: v143
  86. CMAKE_GENERATOR_PLATFORM: x64
  87. - triplet: x86-windows
  88. VCPKG_PLATFORM_TOOLSET: v143
  89. CMAKE_GENERATOR_PLATFORM: Win32
  90. # MSVC 2019
  91. - triplet: x86-windows
  92. VCPKG_PLATFORM_TOOLSET: v142
  93. CMAKE_GENERATOR_PLATFORM: Win32
  94. runs-on: ${{ matrix.os }}-latest
  95. env:
  96. SOURCE_DIR: ${{ github.workspace }}\.cache\source
  97. TOOLS_DIR: ${{ github.workspace }}\.cache\tools
  98. INSTALL_DIR: ${{ github.workspace }}\.cache\install_msvc_${{matrix.triplet}}_${{matrix.BUILD_TYPE}}
  99. VCPKG_PLATFORM_TOOLSET: ${{ matrix.VCPKG_PLATFORM_TOOLSET }}
  100. CMAKE_GENERATOR_PLATFORM: ${{ matrix.CMAKE_GENERATOR_PLATFORM }}
  101. defaults:
  102. run:
  103. shell: cmd
  104. steps:
  105. - uses: actions/checkout@v6
  106. - name: Install NSIS for packaging
  107. uses: repolevedavaj/[email protected]
  108. with:
  109. nsis-version: "3.11"
  110. if: ${{ matrix.BUILD_TYPE == 'Release' }}
  111. - name: Create directories
  112. run: |
  113. cmake -E make_directory ${{ env.SOURCE_DIR }}
  114. cmake -E make_directory ${{ env.TOOLS_DIR }}
  115. cmake -E make_directory ${{ env.INSTALL_DIR }}
  116. - name: run-vcpkg
  117. uses: lukka/run-vcpkg@v11
  118. with:
  119. # If not using a submodule for vcpkg sources, this specifies which commit
  120. # id must be checkout from a Git repo. It must not set if using a submodule
  121. # for vcpkg.
  122. vcpkgGitCommitId: '${{ env.VCPKGGITCOMMITID }}'
  123. - name: Build Coturn
  124. run: |
  125. cmake -E make_directory ${{ github.workspace }}/build
  126. cd ${{ github.workspace }}/build
  127. cmake ${{ github.workspace }} ^
  128. -A ${{ matrix.CMAKE_GENERATOR_PLATFORM }} ^
  129. -T ${{ matrix.VCPKG_PLATFORM_TOOLSET }} ^
  130. -DWITH_MYSQL=OFF ^
  131. -DBUILD_SHARED_LIBS=${{ matrix.BUILD_SHARED_LIBS }} ^
  132. -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} ^
  133. -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/build/install ^
  134. -DCMAKE_TOOLCHAIN_FILE=${{ env.VCPKG_ROOT }}/scripts/buildsystems/vcpkg.cmake
  135. cmake --build . --config ${{ matrix.BUILD_TYPE }}
  136. cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install
  137. - name: Package
  138. run: |
  139. 7z a coturn_windows_msvc.zip ${{ github.workspace }}\build\install\*
  140. cmake --build . --config ${{ matrix.BUILD_TYPE }} --target package
  141. working-directory: ${{ github.workspace }}\build
  142. if: ${{ matrix.BUILD_TYPE == 'Release' }}
  143. - name: Update artifacts
  144. uses: actions/upload-artifact@v6
  145. with:
  146. name: coturn_msvc-${{ matrix.VCPKG_PLATFORM_TOOLSET }}-${{ matrix.CMAKE_GENERATOR_PLATFORM }}-${{ matrix.BUILD_SHARED_LIBS }}
  147. path: |
  148. ${{ github.workspace }}\build\coturn_windows_msvc.zip
  149. ${{ github.workspace }}\build\coturn*.exe
  150. ${{ github.workspace }}\build\coturn*.md5
  151. if: ${{ matrix.BUILD_TYPE == 'Release' }}