azure-pipelines.yml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. variables:
  2. macosSignAndNotarize: false
  3. isReleaseMode: ${{ and(eq(variables['isReleaseMode'], true), startsWith(variables['Build.SourceBranch'], 'refs/tags/')) }}
  4. trigger:
  5. branches:
  6. include:
  7. - master
  8. tags:
  9. include:
  10. - '*'
  11. jobs:
  12. - job: 'Build_Windows'
  13. pool:
  14. vmImage: 'windows-2019'
  15. variables:
  16. build_config: RelWithDebInfo
  17. DepsBasePath: 'D:\obsdependencies'
  18. DepsPath32: '$(DepsBasePath)\win32'
  19. DepsPath64: '$(DepsBasePath)\win64'
  20. QtBaseDir: 'D:\QtDep'
  21. QTDIR32: '$(QtBaseDir)\5.10.1\msvc2017'
  22. QTDIR64: '$(QtBaseDir)\5.10.1\msvc2017_64'
  23. OBSPath: 'D:\obs-studio'
  24. steps:
  25. - checkout: self
  26. submodules: true
  27. - script: ./ci/windows/install-qt-win.cmd
  28. displayName: 'Install Qt'
  29. env:
  30. QtBaseDir: $(QtBaseDir)
  31. - task: Cache@2
  32. displayName: Restore cached OBS Studio dependencies
  33. inputs:
  34. key: 'obsdeps | "$(Agent.OS)"'
  35. restoreKeys: |
  36. obsdeps | "$(Agent.OS)"
  37. path: $(DepsBasePath)
  38. - script: ./ci/windows/download-obs-deps.cmd
  39. displayName: 'Download OBS Studio dependencies'
  40. - task: Cache@2
  41. displayName: Restore cached OBS Studio builds
  42. inputs:
  43. key: 'obs | "$(Agent.OS)"'
  44. restoreKeys: |
  45. obs | "$(Agent.OS)"
  46. path: $(OBSPath)
  47. - script: ./ci/windows/prepare-obs-windows.cmd
  48. displayName: 'Checkout & CMake OBS Studio'
  49. env:
  50. build_config: $(build_config)
  51. DepsPath32: $(DepsPath32)
  52. DepsPath64: $(DepsPath64)
  53. QTDIR32: $(QTDIR32)
  54. QTDIR64: $(QTDIR64)
  55. OBSPath: $(OBSPath)
  56. - task: MSBuild@1
  57. displayName: 'Build OBS Studio 32-bit'
  58. inputs:
  59. msbuildArguments: '/m /p:Configuration=$(build_config)'
  60. solution: '$(OBSPath)\build32\obs-studio.sln'
  61. - task: MSBuild@1
  62. displayName: 'Build OBS Studio 64-bit'
  63. inputs:
  64. msbuildArguments: '/m /p:Configuration=$(build_config)'
  65. solution: '$(OBSPath)\build64\obs-studio.sln'
  66. - script: ./ci/windows/prepare-windows.cmd
  67. displayName: 'CMake Plugin'
  68. env:
  69. build_config: $(build_config)
  70. QTDIR32: $(QTDIR32)
  71. QTDIR64: $(QTDIR64)
  72. OBSPath: $(OBSPath)
  73. - task: MSBuild@1
  74. displayName: 'Build Plugin 32-bit'
  75. inputs:
  76. msbuildArguments: '/m /p:Configuration=$(build_config)'
  77. solution: '.\build32\main.sln'
  78. - task: MSBuild@1
  79. displayName: 'Build Plugin 64-bit'
  80. inputs:
  81. msbuildArguments: '/m /p:Configuration=$(build_config)'
  82. solution: '.\build64\main.sln'
  83. - script: ./ci/windows/package-windows.cmd
  84. displayName: 'Package Plugin'
  85. - task: PublishBuildArtifacts@1
  86. displayName: 'Upload package artifacts'
  87. inputs:
  88. pathtoPublish: './package'
  89. artifactName: 'windows_build'
  90. - job: 'Build_Linux'
  91. pool:
  92. vmImage: 'ubuntu-18.04'
  93. variables:
  94. BUILD_REASON: $(Build.Reason)
  95. BRANCH_SHORT_NAME: $(Build.SourceBranchName)
  96. BRANCH_FULL_NAME: $(Build.SourceBranch)
  97. steps:
  98. - checkout: self
  99. submodules: true
  100. - script: ./ci/linux/install-dependencies-ubuntu.sh
  101. displayName: 'Install dependencies'
  102. - script: ./ci/linux/build-ubuntu.sh
  103. displayName: 'Build Plugin'
  104. - script: ./ci/linux/package-ubuntu.sh
  105. displayName: 'Package Plugin'
  106. - task: PublishBuildArtifacts@1
  107. inputs:
  108. pathtoPublish: './package'
  109. artifactName: 'deb_build'
  110. - job: 'Build_macOS'
  111. pool:
  112. vmImage: 'macos-10.14'
  113. steps:
  114. - checkout: self
  115. submodules: true
  116. - script: ./ci/macos/install-dependencies-macos.sh
  117. displayName: 'Install dependencies'
  118. - script: ./ci/macos/install-build-obs-macos.sh
  119. displayName: 'Build OBS'
  120. - script: ./ci/macos/build-macos.sh
  121. displayName: 'Build Plugin'
  122. - task: InstallAppleCertificate@1
  123. displayName: 'Install release signing certificates'
  124. condition: eq(variables['isReleaseMode'], true)
  125. inputs:
  126. certSecureFile: 'Certificates.p12'
  127. certPwd: $(secrets.macOS.certificatesImportPassword)
  128. - script: ./ci/macos/package-macos.sh
  129. displayName: 'Package Plugin'
  130. env:
  131. RELEASE_MODE: $(isReleaseMode)
  132. CODE_SIGNING_IDENTITY: $(secrets.macOS.codeSigningIdentity)
  133. INSTALLER_SIGNING_IDENTITY: $(secrets.macOS.installerSigningIdentity)
  134. AC_USERNAME: $(secrets.macOS.notarization.username)
  135. AC_PASSWORD: $(secrets.macOS.notarization.password)
  136. AC_PROVIDER_SHORTNAME: $(secrets.macOS.notarization.providerShortName)
  137. - task: PublishBuildArtifacts@1
  138. inputs:
  139. pathtoPublish: './release'
  140. artifactName: 'macos_build'