Test matrix #207
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Build OBS-studio-webrtc' | |
on: | |
push: | |
branches: | |
- "**" | |
tags: | |
- "m**" | |
pull_request: | |
paths-ignore: | |
- 'LICENSE' | |
- 'README.md' | |
- 'RELEASE_NOTES.md' | |
workflow_dispatch: | |
env: | |
CACHE_REVISION: '006' | |
CEF_BUILD_VERSION_MAC: '5060' | |
CEF_HASH_MAC_X86_64: '88b950aa0bfc001061c35e7f1f3fefba856a6afb35e38b2b7b42ddd8dd239182' | |
CEF_HASH_MAC_ARM64: '98679b92eea6ea9959ac5aa54f46ca60681d8a86c768c35f496dbdd409bf0642' | |
CEF_BUILD_VERSION_LINUX: '5060' | |
CEF_BUILD_VERSION_WIN: '5060' | |
QT_VERSION_MAC: '6.3.1' | |
QT_HASH_MAC_X86_64: 'a83f72a11023b03b6cb2dc365f0a66ad9df31163bbb4fe2df32d601856a9fad3' | |
QT_HASH_MAC_ARM64: '2f30af90c049670a5660656adbb440668aa1b0567f75a5f29e1def9108928403' | |
QT_HASH_MAC_UNIVERSAL: '252e6684f43ab9c6f262c73af739e2296ce391b998da2c4ee04c254aaa07db18' | |
QT_VERSION_WIN: '6.3.1' | |
DEPS_VERSION_MAC: '2022-08-02' | |
DEPS_HASH_MAC_X86_64: '7637e52305e6fc53014b5aabd583f1a4490b1d97450420e977cae9a336a29525' | |
DEPS_HASH_MAC_ARM64: '755e0fa69b17a3ae444e1befa9d91d77e3cafe628fbd1c6333686091826595cd' | |
DEPS_VERSION_WIN: '2022-08-02' | |
VLC_VERSION_MAC: '3.0.8' | |
VLC_HASH_MAC: 'e0149ef4a20a19b9ecd87309c2d27787ee3f47dfd47c6639644bc1f6fd95bdf6' | |
VLC_VERSION_WIN: '3.0.0-git' | |
SPARKLE_VERSION: '1.26.0' | |
SPARKLE_HASH: '8312cbf7528297a49f1b97692c33cb8d33254c396dc51be394e9484e4b6833a0' | |
MACOSX_DEPLOYMENT_TARGET_X86_64: '10.15' | |
MACOSX_DEPLOYMENT_TARGET_ARM64: '11.0' | |
CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
CODESIGN_TEAM_ID: ${{ secrets.CODESIGN_TEAM_ID }} | |
CODESIGN_IDENT_USER: ${{ secrets.CODESIGN_IDENT_USER }} | |
NOTARIZE_APP_SPECIFIC_PASSWORD: ${{ secrets.NOTARIZE_APP_SPECIFIC_PASSWORD }} | |
OBS_VERSION: "1.5.1-28.1.2-m112" | |
LIBWEBRTC_RELEASE_TAG: "m112-release" | |
LIBWEBRTC_VERSION: "112.0" | |
VENDOR: "Millicast" | |
USE_RELEASE_NOTES_FROM_FILE: 'false' | |
BUILD_TYPE: "RelWithDebInfo" | |
jobs: | |
preprocessing: | |
runs-on: ubuntu-latest | |
outputs: | |
# actually cheating so that the matrix uses the expected webrtc version | |
LIBWEBRTC_VERSION: ${{ env.LIBWEBRTC_VERSION }} | |
VENDOR: ${{ env.VENDOR }} | |
steps: | |
- name: 'Info' | |
run: | | |
echo pipelines will use | |
echo LIBWEBRTC_VERSION = ${{ env.LIBWEBRTC_VERSION }} | |
echo VENDOR = ${{ env.VENDOR }} | |
build: | |
needs: [preprocessing] | |
if: success() | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
mode: [ubuntu20-ndi, ubuntu20-no-ndi, ubuntu22-ndi, ubuntu22-no-ndi, macos-ndi, macos-no-ndi, macos-arm64-ndi, macos-arm64-no-ndi, windows-ndi, windows-no-ndi] | |
include: | |
- mode: ubuntu20-no-ndi | |
build_flavour: no-ndi | |
os: ubuntu-20.04 | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-.*64-Release-.*.sh.*" | |
install_dependencies: git submodule update --init --recursive && ./CI/linux/01_install_dependencies.sh --disable-pipewire | |
build_obs: ./CI/linux/02_build_obs.sh --disable-pipewire --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
create_artifact: ./CI/linux/03_package_obs.sh --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
target_arch: '' | |
- mode: ubuntu20-ndi | |
build_flavour: ndi | |
os: ubuntu-20.04 | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-.*64-Release-.*.sh.*" | |
install_dependencies: git submodule update --init --recursive && ./CI/linux/01_install_dependencies.sh --disable-pipewire | |
build_obs: ./CI/linux/04_do_magic_for_ndi.sh && ./CI/linux/02_build_obs.sh --disable-pipewire --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
create_artifact: ./CI/linux/03_package_obs.sh --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
target_arch: '' | |
- mode: ubuntu22-no-ndi | |
build_flavour: no-ndi | |
os: ubuntu-22.04 | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-.*64-Release-.*.sh.*" | |
install_dependencies: git submodule update --init --recursive && ./CI/linux/01_install_dependencies.sh --disable-pipewire | |
build_obs: ./CI/linux/02_build_obs.sh --disable-pipewire --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
create_artifact: ./CI/linux/03_package_obs.sh --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
target_arch: '' | |
- mode: ubuntu22-ndi | |
build_flavour: ndi | |
os: ubuntu-22.04 | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-.*64-Release-.*.sh.*" | |
install_dependencies: git submodule update --init --recursive && ./CI/linux/01_install_dependencies.sh --disable-pipewire | |
build_obs: ./CI/linux/04_do_magic_for_ndi.sh && ./CI/linux/02_build_obs.sh --disable-pipewire --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
create_artifact: ./CI/linux/03_package_obs.sh --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
target_arch: '' | |
- mode: macos-no-ndi | |
build_flavour: no-ndi | |
os: macos-12 | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-x64-Release-H264-OpenSSL_1_1_1.*.dmg.*" | |
install_dependencies: ./CI/macos/01_install_dependencies.sh --architecture x86_64 | |
build_obs: ./CI/macos/02_build_obs.sh --codesign --architecture x86_64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
create_artifact: ./CI/macos/03_package_obs.sh --codesign --notarize --architecture x86_64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
target_arch: 'x86_64' | |
keychain_path: ./tmp_action_runner/cosmosoftware.keychain-db | |
- mode: macos-ndi | |
target_arch: 'x86_64' | |
build_flavour: ndi | |
os: macos-12 | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-x64-Release-H264-OpenSSL_1_1_1.*.dmg.*" | |
install_dependencies: export MACOSX_DEPLOYMENT_TARGET_X86_64='10.15' && ./CI/macos/01_install_dependencies.sh --architecture x86_64 | |
build_obs: ./CI/macos/02_build_obs.sh --codesign --architecture x86_64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
create_artifact: CI/macos/03_package_obs.sh --codesign --notarize --architecture x86_64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
keychain_path: ./tmp_action_runner/cosmosoftware.keychain-db | |
- mode: macos-arm64-no-ndi | |
target_arch: 'arm64' | |
build_flavour: no-ndi | |
os: ['self-hosted', 'macOS', 'ARM64', 'native'] | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-arm64-Release-H264-OpenSSL_1_1_1.*.dmg.*" | |
install_dependencies: ./CI/macos/01_install_dependencies.sh --architecture arm64 | |
build_obs: ./CI/macos/02_build_obs.sh --codesign --architecture arm64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
create_artifact: ./CI/macos/03_package_obs.sh --codesign --notarize --architecture arm64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
keychain_path: /Users/dolbyvoice/Library/Keychains/cosmosoftware.keychain-db | |
- mode: macos-arm64-ndi | |
build_flavour: ndi | |
target_arch: 'arm64' | |
os: ['self-hosted', 'macOS', 'ARM64', 'native'] | |
shell: bash | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-arm64-Release-H264-OpenSSL_1_1_1.*.dmg.*" | |
install_dependencies: ./CI/macos/01_install_dependencies.sh --architecture arm64 | |
build_obs: ./CI/macos/02_build_obs.sh --codesign --architecture arm64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
create_artifact: ./CI/macos/03_package_obs.sh --codesign --notarize --architecture arm64 --vendor ${{ needs.preprocessing.outputs.VENDOR }} --ndi | |
keychain_path: /Users/dolbyvoice/Library/Keychains/cosmosoftware.keychain-db | |
- mode: windows-no-ndi | |
build_flavour: no-ndi | |
os: windows-2022 | |
shell: powershell | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-x64-Mt-Release-.*.exe.*" | |
install_dependencies: ./CI/windows/01_install_dependencies.ps1 -BuildArch x64 | |
build_obs: ./CI/windows/02_build_obs.ps1 -BuildArch x64 -Vendor ${{ needs.preprocessing.outputs.VENDOR }} | |
create_artifact: ./CI/windows/03_package_obs.ps1 -BuildArch x64 -Package | |
target_arch: 'x64' | |
- mode: windows-ndi | |
build_flavour: ndi | |
os: windows-2022 | |
shell: powershell | |
libwebrtc_asset_pattern: "^libWebRTC-${{ needs.preprocessing.outputs.LIBWEBRTC_VERSION }}-x64-Mt-Release-.*.exe.*" | |
install_dependencies: ./CI/windows/01_install_dependencies.ps1 -BuildArch x64 | |
build_obs: ./CI/windows/02_build_obs.ps1 -BuildArch x64 -Vendor ${{ needs.preprocessing.outputs.VENDOR }} -Ndi ON | |
create_artifact: ./CI/windows/03_package_obs.ps1 -BuildArch x64 -Package -Ndi ON | |
target_arch: 'x64' | |
steps: | |
- name: 'Checkout the code' | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: 'Generate access token for MacOS/Linux' | |
if: ${{ !startsWith(matrix.mode, 'windows') }} | |
id: accessTokenUnix | |
uses: dolby-io-internal/[email protected] | |
with: | |
gh_app_priv_key: ${{ secrets.GH_APP_RELEASECREATOR_PRIV_KEY }} | |
gh_app_id: ${{ secrets.GH_APP_ID }} | |
gh_app_installation_id: ${{ secrets.GH_APP_INSTALLATION_ID }} | |
- name: 'Generate access token for Windows' | |
if: ${{ startsWith(matrix.mode, 'windows') }} | |
id: accessTokenWindows | |
uses: dolby-io-internal/[email protected] | |
with: | |
gh_app_priv_key: ${{ secrets.GH_APP_RELEASECREATOR_PRIV_KEY }} | |
gh_app_id: ${{ secrets.GH_APP_ID }} | |
gh_app_installation_id: ${{ secrets.GH_APP_INSTALLATION_ID }} | |
- name: 'Download libWebRTC for MacOS/Linux' | |
if: ${{ !startsWith(matrix.mode, 'windows') }} | |
uses: ./.github/actions/download_libwebrtc | |
with: | |
access_token: ${{ steps.accessTokenUnix.outputs.token }} | |
release_tag: ${{ env.LIBWEBRTC_RELEASE_TAG }} | |
asset_pattern: ${{ matrix.libwebrtc_asset_pattern }} | |
- name: 'Download libWebRTC for Windows' | |
if: ${{ startsWith(matrix.mode, 'windows') }} | |
uses: ./.github/actions/download_libwebrtc/win | |
with: | |
access_token: ${{ steps.accessTokenWindows.outputs.token }} | |
release_tag: ${{ env.LIBWEBRTC_RELEASE_TAG }} | |
asset_pattern: ${{ matrix.libwebrtc_asset_pattern }} | |
- name: 'Remove formulas for MacOS' | |
if: ${{ startsWith(matrix.mode, 'macos') }} | |
run: | | |
REMOVE_FORMULAS="" | |
for FORMULA in ${{ env.BLOCKED_FORMULAS }}; do | |
if [ -d "/usr/local/opt/${FORMULA}" ]; then | |
REMOVE_FORMULAS="${REMOVE_FORMULAS}${FORMULA} " | |
fi | |
done | |
if [ -n "${REMOVE_FORMULAS}" ]; then | |
brew uninstall ${REMOVE_FORMULAS} | |
fi | |
env: | |
BLOCKED_FORMULAS: 'speexdsp curl php composer' | |
- name: 'Add msbuild to PATH' | |
if: ${{ startsWith(matrix.mode, 'windows') }} | |
uses: microsoft/[email protected] | |
- name: 'Setup additional build environment variables' | |
if: ${{ !startsWith(matrix.mode, 'windows') }} | |
id: setupUnix | |
run: | | |
echo "CACHE_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV | |
echo "commitHash=$(git rev-parse --short=9 HEAD)" >> $GITHUB_OUTPUT | |
echo "DEPS_BUILD_DIR_=$(dirname ${{ github.workspace }})/obs-build-dependencies" >> $GITHUB_ENV | |
- name: 'Setup additional build environment variables' | |
if: ${{ startsWith(matrix.mode, 'windows') }} | |
id: setupWindows | |
run: | | |
$CommitHash = git rev-parse --short=9 HEAD | |
"commitHash=${CommitHash}" >> $env:GITHUB_OUTPUT | |
"DEPS_BUILD_DIR_=${{ github.workspace }}\\..\\obs-build-dependencies" >> $env:GITHUB_ENV | |
- name: 'Install dependencies' | |
run: ${{ matrix.install_dependencies }} | |
env: | |
DEPS_BUILD_DIR: ${{ env.DEPS_BUILD_DIR_ }} | |
- name: 'Setup plugins for MacOS/Linux' | |
if: ${{ !startsWith(matrix.mode, 'windows') }} | |
run: | | |
set -e | |
git stash | |
rm -rf ${{ github.workspace }}/plugins/obs-ndi | |
rm -rf ${{ github.workspace }}/plugins/obs-browser | |
git submodule update --init --recursive | |
- name: 'Setup plugings for Windows' | |
if: ${{ startsWith(matrix.mode, 'windows') }} | |
run: | | |
git stash | |
Remove-Item ${{ github.workspace }}\\plugins\\obs-ndi -Recurse -Force | |
Remove-Item ${{ github.workspace }}\\plugins\\obs-browser -Recurse -Force | |
git submodule update --init --recursive | |
- name: 'Install MacOS cert, create keychain / unlock keychain' | |
if: ${{ startsWith(matrix.mode, 'macos') }} | |
run: | | |
if [[ ${MATRIX_MODE_} != *"arm64"* ]];then | |
echo "Install cert and create keychain..." | |
echo -n ${MACOS_SIGNING_CERT} | base64 --decode -o ${CERTIFACTE_PATH} | |
security create-keychain -p "${KEYCHAIN_PASSWORD}" ${KEYCHAIN_PATH} | |
security set-keychain-settings -lut 3600 $KEYCHAIN_PATH | |
security unlock-keychain -p "${KEYCHAIN_PASSWORD}" ${KEYCHAIN_PATH} | |
security import ${CERTIFACTE_PATH} -P ${MACOS_SIGNING_CERT_PASSWORD} -A -t cert -f pkcs12 -k ${KEYCHAIN_PATH} | |
security list-keychain -d user -s ${KEYCHAIN_PATH} | |
fi | |
security -v unlock-keychain -p ${KEYCHAIN_PASSWORD} ${KEYCHAIN_PATH} && echo "Keychain is unlocked" || exit 1 | |
env: | |
MATRIX_MODE_: ${{ matrix.mode }} | |
MACOS_SIGNING_CERT: ${{ secrets.MACOS_SIGNING_CERT }} | |
MACOS_SIGNING_CERT_PASSWORD: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }} | |
KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} | |
KEYCHAIN_PATH: ${{ matrix.keychain_path }} | |
CERTIFACTE_PATH: ${{ github.workspace }}/app-signing-cert.p12 | |
- name: 'Build OBS - ${{ matrix.build_flavour }}' | |
run: ${{ matrix.build_obs }} | |
- name: 'Create artifact - ${{ matrix.build_flavour }}' | |
if: ${{ github.event_name != 'pull_request' }} | |
run: ${{ matrix.create_artifact }} | |
# macos_build_x86_64: | |
# name: 'MacOS-x86_64' | |
# runs-on: [macos-12] | |
# | |
# | |
# - name: 'Create build artifact' | |
# run: | | |
# | |
# ARTIFACT_NAME=$(basename $(find build/. -name "obs-webrtc*.dmg")) | |
# echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | |
# echo "ARTIFACT READY: ${ARTIFACT_NAME}" | |
# env: | |
# CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
# CODESIGN_TEAM_ID: ${{ secrets.CODESIGN_TEAM_ID }} | |
# CODESIGN_IDENT_USER: ${{ secrets.CODESIGN_IDENT_USER }} | |
# NOTARIZE_APP_SPECIFIC_PASSWORD: ${{ secrets.NOTARIZE_APP_SPECIFIC_PASSWORD }} | |
# | |
# - name: 'Upload build Artifact' | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: 'obs-studio-macos-${{ env.TARGET_ARCH }}-${{ steps.setup.outputs.commitHash }}' | |
# path: '${{ github.workspace }}/build/${{ env.FILE_NAME }}' | |
# | |
# | |
# - name: 'Create build artifact' | |
# run: | | |
# CI/macos/03_package_obs.sh --codesign --notarize --architecture ${{ env.TARGET_ARCH }} --ndi | |
# ARTIFACT_NAME=$(basename $(find build/. -name "obs-webrtc-ndi*.dmg")) | |
# echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | |
# echo "ARTIFACT READY: ${ARTIFACT_NAME}" | |
# env: | |
# CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
# CODESIGN_TEAM_ID: ${{ secrets.CODESIGN_TEAM_ID }} | |
# CODESIGN_IDENT_USER: ${{ secrets.CODESIGN_IDENT_USER }} | |
# NOTARIZE_APP_SPECIFIC_PASSWORD: ${{ secrets.NOTARIZE_APP_SPECIFIC_PASSWORD }} | |
# | |
# - name: 'Upload build Artifact' | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: 'obs-studio-macos-${{ env.TARGET_ARCH }}-${{ steps.setup.outputs.commitHash }}-ndi' | |
# path: '${{ github.workspace }}/build/${{ env.FILE_NAME }}' | |
# | |
# macos_build_arm64: | |
# name: 'MacOS-arm64' | |
# runs-on: ['self-hosted', 'macOS', 'ARM64'] | |
# | |
# | |
# # Geneate OBS without obs-ndi plugin | |
# - name: 'Build OBS - no NDI' | |
# run: CI/macos/02_build_obs.sh --codesign --architecture ${{ env.TARGET_ARCH }} | |
# env: | |
# CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
# CODESIGN_TEAM_ID: ${{ secrets.CODESIGN_TEAM_ID }} | |
# CODESIGN_IDENT_USER: ${{ secrets.CODESIGN_IDENT_USER }} | |
# NOTARIZE_APP_SPECIFIC_PASSWORD: ${{ secrets.NOTARIZE_APP_SPECIFIC_PASSWORD }} | |
# | |
# - name: 'Create build artifact' | |
# run: | | |
# CI/macos/03_package_obs.sh --codesign --notarize --architecture ${{ env.TARGET_ARCH }} | |
# ARTIFACT_NAME=$(basename $(find build/. -name "obs-webrtc*.dmg")) | |
# echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | |
# echo "ARTIFACT READY: ${ARTIFACT_NAME}" | |
# env: | |
# CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
# CODESIGN_TEAM_ID: ${{ secrets.CODESIGN_TEAM_ID }} | |
# CODESIGN_IDENT_USER: ${{ secrets.CODESIGN_IDENT_USER }} | |
# NOTARIZE_APP_SPECIFIC_PASSWORD: ${{ secrets.NOTARIZE_APP_SPECIFIC_PASSWORD }} | |
# | |
# - name: 'Upload build Artifact' | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: 'obs-studio-macos-${{ env.TARGET_ARCH }}-${{ steps.setup.outputs.commitHash }}' | |
# path: '${{ github.workspace }}/build/${{ env.FILE_NAME }}' | |
# | |
# # Geneate OBS with obs-ndi plugin | |
# - name: 'Build OBS - with NDI' | |
# run: CI/macos/02_build_obs.sh --codesign --architecture ${{ env.TARGET_ARCH }} --ndi | |
# env: | |
# CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
# CODESIGN_TEAM_ID: ${{ secrets.CODESIGN_TEAM_ID }} | |
# CODESIGN_IDENT_USER: ${{ secrets.CODESIGN_IDENT_USER }} | |
# NOTARIZE_APP_SPECIFIC_PASSWORD: ${{ secrets.NOTARIZE_APP_SPECIFIC_PASSWORD }} | |
# | |
# - name: 'Create build artifact' | |
# run: | | |
# CI/macos/03_package_obs.sh --codesign --notarize --architecture ${{ env.TARGET_ARCH }} --ndi | |
# ARTIFACT_NAME=$(basename $(find build/. -name "obs-webrtc-ndi*.dmg")) | |
# echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | |
# echo "ARTIFACT READY: ${ARTIFACT_NAME}" | |
# env: | |
# CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
# CODESIGN_TEAM_ID: ${{ secrets.CODESIGN_TEAM_ID }} | |
# CODESIGN_IDENT_USER: ${{ secrets.CODESIGN_IDENT_USER }} | |
# NOTARIZE_APP_SPECIFIC_PASSWORD: ${{ secrets.NOTARIZE_APP_SPECIFIC_PASSWORD }} | |
# | |
# - name: 'Upload build Artifact' | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: 'obs-studio-macos-${{ env.TARGET_ARCH }}-${{ steps.setup.outputs.commitHash }}-ndi' | |
# path: '${{ github.workspace }}/build/${{ env.FILE_NAME }}' | |
# linux_build: | |
# name: 'Linux' | |
# | |
# - name: 'Build OBS with ${{ matrix.ndi }}' | |
# run: | | |
# if [[ ${IS_NDI} == 'no_ndi' ]]; then | |
# ./CI/linux/02_build_obs.sh --disable-pipewire --vendor ${{ env.VENDOR }} | |
# else | |
# pushd plugins/obs-ndi | |
# mkdir BUILD | |
# cd BUILD | |
# cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLINUX_PORTABLE=OFF -DUBUNTU_VERSION=${UBUNTU_VERSION} | |
# make -j4 | |
# cpack | |
# cd ../release | |
# mv *.deb ../../../package_${{ vendor }} | |
# popd | |
# cd build | |
# rm CMakeCache.txt | |
# cd .. | |
# ./CI/linux/02_build_obs.sh --disable-pipewire --vendor ${{ env.VENDOR }} --ndi | |
# fi | |
# env: | |
# IS_NDI: ${{ matrix.ndi }} | |
# UBUNTU_VERSION: ${{ matrix.ubuntu }} | |
# | |
# - name: 'Create build artifact' | |
# if: ${{ success() && github.event_name != 'pull_request' }} | |
# run: | | |
# if [[ ${IS_NDI} == 'no_ndi' ]];then | |
# ./CI/linux/03_package_obs.sh --vendor ${{ env.VENDOR }} | |
# else | |
# ./CI/linux/03_package_obs.sh --vendor ${{ env.VENDOR }} --ndi | |
# fi | |
# ARTIFACT_NAME=$(basename $(find build/. -name "obs-webrtc-*.deb" | sort -rn | head -1)) | |
# echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | |
# env: | |
# UBUNTU_VERSION: $${ matrix.ubuntu }} | |
# IS_NDI: ${{ matrix.ndi }} | |
# | |
# - name: 'Upload build Artifact' | |
# if: ${{ success() && github.event_name != 'pull_request' }} | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: 'obs-studio-${{ matrix.ubuntu }}-${{ steps.setup.outputs.commitHash }}-${{ matrix.ndi }}' | |
# path: '${{ github.workspace }}/build/${{ env.FILE_NAME }}' | |
# windows_build: | |
# name: 'Windows_x64' | |
# runs-on: [windows-2022] | |
# env: | |
# CMAKE_GENERATOR: 'Visual Studio 17 2022' | |
# CMAKE_SYSTEM_VERSION: '10.0.18363.657' | |
# VIRTUALCAM-GUID: 'A3FCE0F5-3493-419F-958A-ABA1250EC20B' | |
# TARGET_ARCH: 'x64' | |
# steps: | |
# | |
# - name: 'Build OBS' | |
# run: CI/windows/02_build_obs.ps1 -BuildArch ${{ env.TARGET_ARCH }} -Vendor ${{ env.VENDOR }} | |
# | |
# - name: 'Sign obs64.exe' | |
# run: | | |
# Write-Host "Singing obs64.exe" | |
# | |
# - name: 'Create build artifact' | |
# if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }} | |
# run: | | |
# CI/windows/03_package_obs.ps1 -BuildArch ${{ env.TARGET_ARCH }} -Package | |
# $ArtifactName = Get-ChildItem -filter "obs-webrtc-*-windows-${{ env.TARGET_ARCH }}.zip" -File -Recurse | |
# Write-Output "FILE_NAME=${ArtifactName}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | |
# Write-Host $env:FILE_NAME | |
# | |
# - name: 'Upload build artifact' | |
# if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }} | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: 'obs-studio-windows-${{ env.TARGET_ARCH }}-${{ steps.setup.outputs.commitHash }}' | |
# path: '${{ env.FILE_NAME }}' | |
# | |
# - name: 'Build OBS' | |
# run: CI/windows/02_build_obs.ps1 -BuildArch ${{ env.TARGET_ARCH }} -Vendor ${{ env.VENDOR }} -Ndi ON | |
# | |
# - name: 'Sign obs64.exe' | |
# run: | | |
# Write-Host "Singing obs64.exe" | |
# | |
# - name: 'Create build artifact' | |
# if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }} | |
# run: | | |
# CI/windows/03_package_obs.ps1 -BuildArch ${{ env.TARGET_ARCH }} -Package -Ndi ON | |
# $ArtifactName = Get-ChildItem -filter "obs-webrtc-*-windows-${{ env.TARGET_ARCH }}.zip" -File -Recurse | |
# Write-Output "FILE_NAME=${ArtifactName}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append | |
# Write-Host $env:FILE_NAME | |
# | |
# - name: 'Upload build artifact' | |
# if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }} | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: 'obs-studio-windows-${{ env.TARGET_ARCH }}-${{ steps.setup.outputs.commitHash }}' | |
# path: '${{ env.FILE_NAME }}' | |
# | |
# deployment_production: | |
# needs: [windows_build, linux_build, macos_build_arm64, macos_build_x86_64] | |
# if: | | |
# success() && | |
# github.event_name != 'pull_request' && | |
# startsWith(github.ref, 'refs/tags/m') | |
# environment: | |
# name: production | |
# url: ${{ vars.ENV_RELEASE_URL }} | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: 'Checkout the code' | |
# uses: actions/checkout@v4 | |
# - name: 'Generate access token' | |
# id: accessToken | |
# uses: dolby-io-internal/[email protected] | |
# with: | |
# gh_app_priv_key: ${{ secrets.GH_APP_PRIV_KEY }} | |
# gh_app_id: ${{ secrets.GH_APP_ID }} | |
# gh_app_installation_id: ${{ secrets.GH_APP_INSTALLATION_ID }} | |
# - name: 'Prepare release notes' | |
# id: releaseNotes | |
# run: | | |
# if [[ -f ${{ github.workspace }}/RELEASE_NOTES.md && ${{ env.USE_RELEASE_NOTES_FROM_FILE }} == 'true' ]];then | |
# export RELEASE_NOTES=$( cat ${{ github.workspace }}/RELEASE_NOTES.md ) | |
# else | |
# export OBS_STUDIO_VERSION_=$(echo ${VERSIONS_//-/ } | awk '{printf $2}') | |
# export WEBRTC_VERSION_=$(echo ${VERSIONS_//-/ } | awk '{printf $3}') | |
# export RELEASE_NOTES="Release ${{ github.ref_name }} (OBS-Studio ${OBS_STUDIO_VERSION_} WebRTC ${WEBRTC_VERSION_})" | |
# fi | |
# echo "RELEASE_NOTES=${RELEASE_NOTES}" >> "${GITHUB_OUTPUT}" | |
# env: | |
# VERSIONS_: ${{ env.OBS_VERSION }} | |
# - name: 'Define release type' | |
# id: 'releaseType' | |
# run: | | |
# IS_DRAFT=true | |
# IS_PRERELEASE=false | |
# if [[ ${REF_NAME} == *"alpha"* || ${REF_NAME} == *"beta"* ]];then | |
# export IS_PRERELEASE=true | |
# fi | |
# echo "IS_DRAFT=${IS_DRAFT}" >> "${GITHUB_OUTPUT}" | |
# echo "IS_PRERELEASE=${IS_PRERELEASE}" >> "${GITHUB_OUTPUT}" | |
# env: | |
# REF_NAME: ${{ github.ref_name }} | |
# - name: 'Create release - production' | |
# uses: dolby-io-internal/dolbyio-create-release@main | |
# with: | |
# deployment: ${{ vars.ENV_DEPLOYMENT }} | |
# release_tag: ${{ github.ref_name }} | |
# release_repository: ${{ github.repository }} | |
# access_token: ${{ steps.accessToken.outputs.token }} | |
# release_notes: ${{ steps.releaseNotes.outputs.RELEASE_NOTES }} | |
# is_prerelease: ${{ steps.releaseType.outputs.IS_PRERELEASE }} | |
# is_draft: ${{ steps.releaseType.outputs.IS_DRAFT }} | |
# attach_assets: 'true' |