analyze-project.yaml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. name: Analyze Project
  2. on:
  3. workflow_call:
  4. jobs:
  5. windows:
  6. name: Windows 🪟 (PVS-Studio)
  7. runs-on: windows-2022
  8. if: github.repository_owner == 'obsproject'
  9. defaults:
  10. run:
  11. shell: pwsh
  12. steps:
  13. - uses: actions/checkout@v4
  14. with:
  15. submodules: recursive
  16. fetch-depth: 0
  17. - name: Build OBS Studio 🧱
  18. uses: ./.github/actions/build-obs
  19. env:
  20. TWITCH_CLIENTID: ${{ secrets.TWITCH_CLIENT_ID }}
  21. TWITCH_HASH: ${{ secrets.TWITCH_HASH }}
  22. RESTREAM_CLIENTID: ${{ secrets.RESTREAM_CLIENTID }}
  23. RESTREAM_HASH: ${{ secrets.RESTREAM_HASH }}
  24. YOUTUBE_CLIENTID: ${{ secrets.YOUTUBE_CLIENTID }}
  25. YOUTUBE_CLIENTID_HASH: ${{ secrets.YOUTUBE_CLIENTID_HASH }}
  26. YOUTUBE_SECRET: ${{ secrets.YOUTUBE_SECRET }}
  27. YOUTUBE_SECRET_HASH: ${{ secrets.YOUTUBE_SECRET_HASH }}
  28. GPU_PRIORITY_VAL: ${{ secrets.GPU_PRIORITY_VAL }}
  29. with:
  30. target: x64
  31. config: Debug
  32. - name: Run PVS-Studio Analysis
  33. uses: ./.github/actions/windows-analysis
  34. with:
  35. pvsUsername: ${{ secrets.PVS_NAME }}
  36. pvsKey: ${{ secrets.PVS_KEY }}
  37. target: x64
  38. config: Debug
  39. macos:
  40. name: macOS 🍏 (clang-analyze)
  41. runs-on: macos-14
  42. defaults:
  43. run:
  44. shell: zsh --no-rcs --errexit --pipefail {0}
  45. steps:
  46. - uses: actions/checkout@v4
  47. with:
  48. submodules: recursive
  49. fetch-depth: 0
  50. - name: Set Up Code Signing 🔑
  51. uses: ./.github/actions/setup-macos-codesigning
  52. id: codesign
  53. with:
  54. codesignIdentity: ${{ secrets.MACOS_SIGNING_IDENTITY }}
  55. codesignCertificate: ${{ secrets.MACOS_SIGNING_CERT }}
  56. certificatePassword: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
  57. keychainPassword: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
  58. provisioningProfile: ${{ secrets.MACOS_SIGNING_PROVISIONING_PROFILE }}
  59. notarizationUser: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}
  60. notarizationPassword: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
  61. - name: Build OBS Studio 🧱
  62. env:
  63. TWITCH_CLIENTID: ${{ secrets.TWITCH_CLIENT_ID }}
  64. TWITCH_HASH: ${{ secrets.TWITCH_HASH }}
  65. RESTREAM_CLIENTID: ${{ secrets.RESTREAM_CLIENTID }}
  66. RESTREAM_HASH: ${{ secrets.RESTREAM_HASH }}
  67. YOUTUBE_CLIENTID: ${{ secrets.YOUTUBE_CLIENTID }}
  68. YOUTUBE_CLIENTID_HASH: ${{ secrets.YOUTUBE_CLIENTID_HASH }}
  69. YOUTUBE_SECRET: ${{ secrets.YOUTUBE_SECRET }}
  70. YOUTUBE_SECRET_HASH: ${{ secrets.YOUTUBE_SECRET_HASH }}
  71. CODESIGN_IDENT: ${{ steps.codesign.outputs.codesignIdent }}
  72. CODESIGN_TEAM: ${{ steps.codesign.outputs.codesignTeam }}
  73. PROVISIONING_PROFILE: ${{ steps.codesign.outputs.provisioningProfileUUID }}
  74. run: |
  75. : Run macOS Build
  76. local -a build_args=(
  77. --config Debug
  78. --target macos-arm64
  79. --codesign
  80. --analyze
  81. )
  82. if (( ${+RUNNER_DEBUG} )) build_args+=(--debug)
  83. git fetch origin --no-tags --no-recurse-submodules -q
  84. .github/scripts/build-macos ${build_args}
  85. - name: Compile Analytics Data 📊
  86. run: |
  87. : Compile Analytics Data 📊
  88. local analytics_root='${{ github.workspace }}/analytics'
  89. local -a analytics_files=(${analytics_root}/StaticAnalyzer/obs-studio/**/*.plist)
  90. for file (${analytics_files}) {
  91. mv ${file} ${analytics_root}/${${file:t}//plist/sarif}
  92. }
  93. pushd ${analytics_root}
  94. npx @microsoft/sarif-multitool merge *.sarif
  95. popd
  96. - name: Upload SARIF report files 📦
  97. uses: github/codeql-action/upload-sarif@v3
  98. with:
  99. sarif_file: "${{ github.workspace }}/analytics/merged.sarif"
  100. category: 'clang-analyze (macOS Apple Silicon)'