analyze-project.yaml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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: false && 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-15
  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 Environment 🔧
  51. id: setup
  52. run: |
  53. : Set Up Environment 🔧
  54. if (( ${+RUNNER_DEBUG} )) setopt XTRACE
  55. print '::group::Enable Xcode 16.4'
  56. sudo xcode-select --switch /Applications/Xcode_16.4.app/Contents/Developer
  57. print '::endgroup::'
  58. print '::group::Clean Homebrew Environment'
  59. local -a unwanted_formulas=()
  60. local -a remove_formulas=()
  61. for formula (${unwanted_formulas}) {
  62. if [[ -d ${HOMEBREW_PREFIX}/Cellar/${formula} ]] remove_formulas+=(${formula})
  63. }
  64. if (( #remove_formulas )) brew uninstall --ignore-dependencies ${remove_formulas}
  65. print '::endgroup::'
  66. - name: Set Up Code Signing 🔑
  67. uses: ./.github/actions/setup-macos-codesigning
  68. id: codesign
  69. with:
  70. codesignIdentity: ${{ secrets.MACOS_SIGNING_IDENTITY }}
  71. codesignCertificate: ${{ secrets.MACOS_SIGNING_CERT }}
  72. certificatePassword: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
  73. keychainPassword: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
  74. provisioningProfile: ${{ secrets.MACOS_SIGNING_PROVISIONING_PROFILE }}
  75. notarizationUser: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}
  76. notarizationPassword: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
  77. - name: Build OBS Studio 🧱
  78. env:
  79. TWITCH_CLIENTID: ${{ secrets.TWITCH_CLIENT_ID }}
  80. TWITCH_HASH: ${{ secrets.TWITCH_HASH }}
  81. RESTREAM_CLIENTID: ${{ secrets.RESTREAM_CLIENTID }}
  82. RESTREAM_HASH: ${{ secrets.RESTREAM_HASH }}
  83. YOUTUBE_CLIENTID: ${{ secrets.YOUTUBE_CLIENTID }}
  84. YOUTUBE_CLIENTID_HASH: ${{ secrets.YOUTUBE_CLIENTID_HASH }}
  85. YOUTUBE_SECRET: ${{ secrets.YOUTUBE_SECRET }}
  86. YOUTUBE_SECRET_HASH: ${{ secrets.YOUTUBE_SECRET_HASH }}
  87. CODESIGN_IDENT: ${{ steps.codesign.outputs.codesignIdent }}
  88. CODESIGN_TEAM: ${{ steps.codesign.outputs.codesignTeam }}
  89. PROVISIONING_PROFILE: ${{ steps.codesign.outputs.provisioningProfileUUID }}
  90. run: |
  91. : Run macOS Build
  92. local -a build_args=(
  93. --config Debug
  94. --target macos-arm64
  95. --codesign
  96. --analyze
  97. )
  98. if (( ${+RUNNER_DEBUG} )) build_args+=(--debug)
  99. git fetch origin --no-tags --no-recurse-submodules -q
  100. .github/scripts/build-macos ${build_args}
  101. - name: Compile Analytics Data 📊
  102. run: |
  103. : Compile Analytics Data 📊
  104. local analytics_root='${{ github.workspace }}/analytics'
  105. local -a analytics_files=(${analytics_root}/StaticAnalyzer/obs-studio/**/*.plist)
  106. for file (${analytics_files}) {
  107. mv ${file} ${analytics_root}/${${file:t}//plist/sarif}
  108. }
  109. pushd ${analytics_root}
  110. npx @microsoft/sarif-multitool merge --merge-runs *.sarif
  111. popd
  112. - name: Upload SARIF report files 📦
  113. uses: github/codeql-action/upload-sarif@v3
  114. with:
  115. sarif_file: "${{ github.workspace }}/analytics/merged.sarif"
  116. category: 'clang-analyze (macOS Apple Silicon)'