mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
ci(github): add macOS variant
This commit is contained in:
259
.github/workflows/main.yml
vendored
259
.github/workflows/main.yml
vendored
@ -1,11 +1,11 @@
|
|||||||
name: "CI Multiplatform Build"
|
name: 'CI Multiplatform Build'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
paths-ignore:
|
paths-ignore:
|
||||||
- 'docs/**'
|
- 'docs/**'
|
||||||
branches:
|
branches:
|
||||||
- master
|
- '*'
|
||||||
tags:
|
tags:
|
||||||
- '[45].[0-9]+.[0-9]+*'
|
- '[45].[0-9]+.[0-9]+*'
|
||||||
pull_request:
|
pull_request:
|
||||||
@ -25,8 +25,8 @@ jobs:
|
|||||||
QT_VERSION: '5.15.2'
|
QT_VERSION: '5.15.2'
|
||||||
WINDOWS_DEPS_CACHE_VERSION: '1' # Change whenever updating Qt dependency URL, in order to force a cache reset
|
WINDOWS_DEPS_CACHE_VERSION: '1' # Change whenever updating Qt dependency URL, in order to force a cache reset
|
||||||
WINDOWS_DEPS_VERSION: '2019'
|
WINDOWS_DEPS_VERSION: '2019'
|
||||||
CMAKE_GENERATOR: "Visual Studio 16 2019"
|
CMAKE_GENERATOR: 'Visual Studio 16 2019'
|
||||||
CMAKE_SYSTEM_VERSION: "10.0"
|
CMAKE_SYSTEM_VERSION: '10.0'
|
||||||
steps:
|
steps:
|
||||||
- name: 'Add msbuild to PATH'
|
- name: 'Add msbuild to PATH'
|
||||||
uses: microsoft/setup-msbuild@v1.0.2
|
uses: microsoft/setup-msbuild@v1.0.2
|
||||||
@ -35,20 +35,20 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: ${{ github.workspace }}/obs-websocket
|
path: ${{ github.workspace }}/obs-websocket
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
- name: 'Checkout OBS-Studio'
|
- name: 'Checkout OBS Studio'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
repository: obsproject/obs-studio
|
repository: obsproject/obs-studio
|
||||||
path: ${{ github.workspace }}/obs-studio
|
path: ${{ github.workspace }}/obs-studio
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
- name: 'Get OBS-Studio Git Info'
|
- name: 'Get OBS Studio Git Info'
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
git fetch --prune --unshallow
|
git fetch --prune --unshallow
|
||||||
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
||||||
echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
||||||
- name: 'Checkout last OBS-Studio release (${{ env.OBS_GIT_TAG }})'
|
- name: 'Checkout last OBS Studio release (${{ env.OBS_GIT_TAG }})'
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
@ -78,8 +78,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: Qt_${{ env.QT_VERSION }}.7z
|
path: Qt_${{ env.QT_VERSION }}.7z
|
||||||
key: 'qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }}'
|
key: 'qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }}'
|
||||||
restore-keys: |
|
|
||||||
qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }}
|
|
||||||
- name: 'Download Prerequisite: Qt'
|
- name: 'Download Prerequisite: Qt'
|
||||||
if: steps.qtcache.outputs.cache-hit != 'true'
|
if: steps.qtcache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
@ -87,20 +85,18 @@ jobs:
|
|||||||
- name: 'Extract Prerequisite: Qt'
|
- name: 'Extract Prerequisite: Qt'
|
||||||
run: |
|
run: |
|
||||||
7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}\cmbuild\QT"
|
7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}\cmbuild\QT"
|
||||||
- name: 'Restore Cached OBS-Studio Dependencies'
|
- name: 'Restore Cached OBS Studio Dependencies'
|
||||||
id: obscache
|
id: obscache
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: ${{ github.workspace }}\cmbuild\deps\**
|
path: ${{ github.workspace }}\cmbuild\deps\**
|
||||||
key: 'obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }}'
|
key: 'obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }}'
|
||||||
restore-keys: |
|
- name: 'Install Prerequisite: Pre-built OBS Studio dependencies'
|
||||||
obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }}
|
|
||||||
- name: 'Install Prerequisite: Pre-built OBS-Studio dependencies'
|
|
||||||
if: steps.obscache.outputs.cache-hit != 'true'
|
if: steps.obscache.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C -
|
curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C -
|
||||||
7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}\cmbuild\deps"
|
7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}\cmbuild\deps"
|
||||||
- name: 'Restore OBS-Studio 32-bit Build v${{ env.OBS_GIT_TAG }} from Cache'
|
- name: 'Restore OBS Studio 32-bit Build v${{ env.OBS_GIT_TAG }} from Cache'
|
||||||
id: build-cache-obs-32
|
id: build-cache-obs-32
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
env:
|
env:
|
||||||
@ -108,22 +104,20 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: ${{ github.workspace }}/obs-studio/build32
|
path: ${{ github.workspace }}/obs-studio/build32
|
||||||
key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }}
|
key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }}
|
||||||
restore-keys: |
|
- name: 'Configure OBS Studio 32-bit'
|
||||||
${{ runner.os }}-${{ env.CACHE_NAME }}-
|
|
||||||
- name: 'Configure OBS-Studio 32-bit'
|
|
||||||
if: steps.build-cache-obs-32.outputs.cache-hit != 'true'
|
if: steps.build-cache-obs-32.outputs.cache-hit != 'true'
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
if(!(Test-Path -Path ".\build32")){New-Item -ItemType directory -Path .\build32}
|
if(!(Test-Path -Path ".\build32")){New-Item -ItemType directory -Path .\build32}
|
||||||
cd .\build32
|
cd .\build32
|
||||||
cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win32" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF ..
|
cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win32" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF ..
|
||||||
- name: 'Build OBS-Studio 32-bit'
|
- name: 'Build OBS Studio 32-bit'
|
||||||
if: steps.build-cache-obs-32.outputs.cache-hit != 'true'
|
if: steps.build-cache-obs-32.outputs.cache-hit != 'true'
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
msbuild /m /p:Configuration=RelWithDebInfo .\build32\libobs\libobs.vcxproj
|
msbuild /m /p:Configuration=RelWithDebInfo .\build32\libobs\libobs.vcxproj
|
||||||
msbuild /m /p:Configuration=RelWithDebInfo .\build32\UI\obs-frontend-api\obs-frontend-api.vcxproj
|
msbuild /m /p:Configuration=RelWithDebInfo .\build32\UI\obs-frontend-api\obs-frontend-api.vcxproj
|
||||||
- name: 'Restore OBS-Studio 64-bit Build v${{ env.OBS_GIT_TAG }} from Cache'
|
- name: 'Restore OBS Studio 64-bit Build v${{ env.OBS_GIT_TAG }} from Cache'
|
||||||
id: build-cache-obs-64
|
id: build-cache-obs-64
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v1
|
||||||
env:
|
env:
|
||||||
@ -131,16 +125,14 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: ${{ github.workspace }}/obs-studio/build64
|
path: ${{ github.workspace }}/obs-studio/build64
|
||||||
key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }}
|
key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }}
|
||||||
restore-keys: |
|
- name: 'Configure OBS Studio 64-bit'
|
||||||
${{ runner.os }}-${{ env.CACHE_NAME }}-
|
|
||||||
- name: 'Configure OBS-Studio 64-bit'
|
|
||||||
if: steps.build-cache-obs-64.outputs.cache-hit != 'true'
|
if: steps.build-cache-obs-64.outputs.cache-hit != 'true'
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
if(!(Test-Path -Path ".\build64")){New-Item -ItemType directory -Path .\build64}
|
if(!(Test-Path -Path ".\build64")){New-Item -ItemType directory -Path .\build64}
|
||||||
cd .\build64
|
cd .\build64
|
||||||
cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win64" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF ..
|
cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win64" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF ..
|
||||||
- name: 'Build OBS-Studio 64-bit'
|
- name: 'Build OBS Studio 64-bit'
|
||||||
if: steps.build-cache-obs-64.outputs.cache-hit != 'true'
|
if: steps.build-cache-obs-64.outputs.cache-hit != 'true'
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
@ -188,7 +180,7 @@ jobs:
|
|||||||
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows-Installer'
|
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows-Installer'
|
||||||
path: ${{ github.workspace }}/obs-websocket/package/*.exe
|
path: ${{ github.workspace }}/obs-websocket/package/*.exe
|
||||||
ubuntu64:
|
ubuntu64:
|
||||||
name: "Linux/Ubuntu 64-bit"
|
name: 'Linux/Ubuntu 64-bit'
|
||||||
runs-on: [ubuntu-latest]
|
runs-on: [ubuntu-latest]
|
||||||
if: contains(github.event.head_commit.message, '[skip ci]') != true
|
if: contains(github.event.head_commit.message, '[skip ci]') != true
|
||||||
steps:
|
steps:
|
||||||
@ -197,20 +189,20 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
path: ${{ github.workspace }}/obs-websocket
|
path: ${{ github.workspace }}/obs-websocket
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
- name: 'Checkout OBS-Studio'
|
- name: 'Checkout OBS Studio'
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
repository: obsproject/obs-studio
|
repository: obsproject/obs-studio
|
||||||
path: ${{ github.workspace }}/obs-studio
|
path: ${{ github.workspace }}/obs-studio
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
- name: 'Get OBS-Studio Git Info'
|
- name: 'Get OBS Studio Git Info'
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
git fetch --prune --unshallow
|
git fetch --prune --unshallow
|
||||||
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
||||||
echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
||||||
- name: 'Checkout last OBS-Studio release (${{ env.OBS_GIT_TAG }})'
|
- name: 'Checkout last OBS Studio release (${{ env.OBS_GIT_TAG }})'
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
run: |
|
run: |
|
||||||
@ -284,21 +276,21 @@ jobs:
|
|||||||
libx11-xcb-dev \
|
libx11-xcb-dev \
|
||||||
libxcb1-dev \
|
libxcb1-dev \
|
||||||
libxss-dev \
|
libxss-dev \
|
||||||
- name: 'Configure OBS-Studio'
|
- name: 'Configure OBS Studio'
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
mkdir ./build
|
mkdir ./build
|
||||||
cd ./build
|
cd ./build
|
||||||
cmake -DDISABLE_PLUGINS=YES -DENABLE_SCRIPTING=NO -DUNIX_STRUCTURE=YES -DCMAKE_INSTALL_PREFIX=/usr ..
|
cmake -DDISABLE_PLUGINS=YES -DENABLE_SCRIPTING=NO -DUNIX_STRUCTURE=YES -DCMAKE_INSTALL_PREFIX=/usr ..
|
||||||
- name: 'Build OBS-Studio'
|
- name: 'Build OBS Studio'
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
cd ./build
|
cd ./build
|
||||||
make -j4 libobs obs-frontend-api
|
make -j4 libobs obs-frontend-api
|
||||||
- name: 'Install OBS-Studio'
|
- name: 'Install OBS Studio'
|
||||||
working-directory: ${{ github.workspace }}/obs-studio
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@ -355,3 +347,210 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64'
|
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64'
|
||||||
path: '${{ github.workspace }}/obs-websocket/package/*.deb'
|
path: '${{ github.workspace }}/obs-websocket/package/*.deb'
|
||||||
|
macOS:
|
||||||
|
name: 'macOS 64-bit'
|
||||||
|
runs-on: [macos-latest]
|
||||||
|
if: contains(github.event.head_commit.message, '[skip ci]') != true
|
||||||
|
env:
|
||||||
|
MACOS_DEPS_VERSION: '2022-01-01'
|
||||||
|
MACOS_DEPS_CACHE_VERSION: '2' # Change whenever updating dependencies version, in order to force a cache reset
|
||||||
|
steps:
|
||||||
|
- name: 'Checkout obs-websocket'
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
path: ${{ github.workspace }}/obs-websocket
|
||||||
|
submodules: 'recursive'
|
||||||
|
- name: 'Checkout OBS Studio'
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
repository: obsproject/obs-studio
|
||||||
|
path: ${{ github.workspace }}/obs-studio
|
||||||
|
submodules: 'recursive'
|
||||||
|
- name: 'Install Prerequisite: Binary Signing Certificate'
|
||||||
|
uses: apple-actions/import-codesign-certs@v1
|
||||||
|
with:
|
||||||
|
p12-file-base64: ${{ secrets.MACOS_SIGNING_CERT }}
|
||||||
|
p12-password: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
|
||||||
|
create-keychain: true
|
||||||
|
keychain-password: ${{ secrets.MACOS_TEMP_CI_KEYCHAIN_PASSWORD }}
|
||||||
|
- name: 'Install Prerequisite: Installer Signing Certificate'
|
||||||
|
uses: apple-actions/import-codesign-certs@v1
|
||||||
|
with:
|
||||||
|
p12-file-base64: ${{ secrets.MACOS_INSTALLER_CERT }}
|
||||||
|
p12-password: ${{ secrets.MACOS_INSTALLER_CERT_PASSWORD }}
|
||||||
|
create-keychain: false
|
||||||
|
keychain-password: ${{ secrets.MACOS_TEMP_CI_KEYCHAIN_PASSWORD }}
|
||||||
|
- name: 'Get OBS Studio Git Info'
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
|
run: |
|
||||||
|
git fetch --prune --unshallow
|
||||||
|
echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
|
||||||
|
echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
||||||
|
- name: 'Checkout last OBS Studio release (${{ env.OBS_GIT_TAG }})'
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
|
run: |
|
||||||
|
git checkout ${{ env.OBS_GIT_TAG }}
|
||||||
|
git submodule update
|
||||||
|
- name: 'Get obs-websocket git info'
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket
|
||||||
|
run: |
|
||||||
|
git fetch --prune --unshallow
|
||||||
|
GIT_HASH=$(git rev-parse --short HEAD)
|
||||||
|
echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV
|
||||||
|
GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG=""
|
||||||
|
echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV
|
||||||
|
if [ "$GIT_TAG" ] ; then \
|
||||||
|
VERSION="$GIT_TAG" \
|
||||||
|
VERSION_SUFFIX=$(echo "$GIT_TAG" | cut -c6-20) ; \
|
||||||
|
else \
|
||||||
|
VERSION="$GIT_HASH-git" \
|
||||||
|
VERSION_SUFFIX="-$GIT_HASH-git" ; \
|
||||||
|
fi
|
||||||
|
echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV
|
||||||
|
echo "CMAKE_VERSION_SUFFIX=$VERSION_SUFFIX" >> $GITHUB_ENV
|
||||||
|
- name: 'Install Packages'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
curl -L -O http://s.sudre.free.fr/Software/files/Packages.dmg
|
||||||
|
sudo hdiutil attach ./Packages.dmg
|
||||||
|
sudo installer -pkg /Volumes/Packages\ 1.2.10/Install\ Packages.pkg -target /
|
||||||
|
- name: 'Restore Cached Qt & OBS Studio dependencies'
|
||||||
|
id: deps-cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ${{ github.workspace }}/obsdeps/**
|
||||||
|
key: 'deps-cache-${{ env.MACOS_DEPS_CACHE_VERSION }} | ${{ runner.os }}'
|
||||||
|
- name: 'Install Prerequisite: Qt + OBS Studio dependencies'
|
||||||
|
if: steps.deps-cache.outputs.cache-hit != 'true'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p obsdeps
|
||||||
|
curl -L -O https://github.com/obsproject/obs-deps/releases/download/${{ env.MACOS_DEPS_VERSION }}/macos-deps-qt-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz
|
||||||
|
tar -xf macos-deps-qt-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz -C "./obsdeps"
|
||||||
|
curl -L -O https://github.com/obsproject/obs-deps/releases/download/${{ env.MACOS_DEPS_VERSION }}/macos-deps-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz
|
||||||
|
tar -xf macos-deps-${{ env.MACOS_DEPS_VERSION }}-universal.tar.xz -C "./obsdeps"
|
||||||
|
- run: xattr -r -d com.apple.quarantine ./obsdeps
|
||||||
|
shell: bash
|
||||||
|
- name: 'Configue OBS Studio'
|
||||||
|
if: steps.cache-obs-build.outputs.cache-hit != 'true'
|
||||||
|
working-directory: ${{ github.workspace }}/obs-studio
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p ./build
|
||||||
|
cd ./build
|
||||||
|
cmake .. \
|
||||||
|
-DQTDIR=${{ github.workspace }}/obsdeps \
|
||||||
|
-DDepsPath=${{ github.workspace }}/obsdeps \
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
||||||
|
-DDISABLE_PLUGINS=true \
|
||||||
|
-DENABLE_SCRIPTING=0 \
|
||||||
|
-DCMAKE_PREFIX_PATH=${{ github.workspace }}/obsdeps/lib/cmake
|
||||||
|
- name: 'Build OBS Studio'
|
||||||
|
if: steps.cache-obs-build.outputs.cache-hit != 'true'
|
||||||
|
working-directory: ${{ github.workspace }}/obs-studio/build
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
make -j4 libobs obs-frontend-api
|
||||||
|
- name: 'Configure obs-websocket'
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
||||||
|
-DQTDIR=${{ github.workspace }}/obsdeps \
|
||||||
|
-DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs \
|
||||||
|
-DLIBOBS_LIB=${{ github.workspace }}/obs-studio/libobs \
|
||||||
|
-DOBS_FRONTEND_LIB="${{ github.workspace }}/obs-studio/build/UI/obs-frontend-api/libobs-frontend-api.dylib" \
|
||||||
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=/usr
|
||||||
|
- name: 'Build obs-websocket'
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket/build
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
make -j4
|
||||||
|
- name: 'Relink Qt'
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket/build
|
||||||
|
run: |
|
||||||
|
install_name_tool \
|
||||||
|
-change /tmp/obsdeps/lib/QtWidgets.framework/Versions/5/QtWidgets \
|
||||||
|
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets \
|
||||||
|
-change /tmp/obsdeps/lib/QtGui.framework/Versions/5/QtGui \
|
||||||
|
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui \
|
||||||
|
-change /tmp/obsdeps/lib/QtCore.framework/Versions/5/QtCore \
|
||||||
|
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore \
|
||||||
|
-change /tmp/obsdeps/lib/QtNetwork.framework/Versions/5/QtNetwork \
|
||||||
|
@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork \
|
||||||
|
-change /tmp/obsdeps/lib/QtSvg.framework/Versions/5/QtSvg \
|
||||||
|
@executable_path/../Frameworks/QtSvg.framework/Versions/5/QtSvg \
|
||||||
|
./obs-websocket.so
|
||||||
|
- name: 'Sign plugin binary'
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket/build
|
||||||
|
run: |
|
||||||
|
codesign --sign "${{ secrets.MACOS_SIGNING_IDENTITY }}" ./obs-websocket.so
|
||||||
|
- name: 'Set PR Artifact Filename'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "MACOS_FILENAME=obs-websocket-${{ env.PACKAGE_VERSION }}-macOS.pkg" >> $GITHUB_ENV
|
||||||
|
echo "MACOS_FILENAME_UNSIGNED=obs-websocket-${{ env.PACKAGE_VERSION }}-macOS-Unsigned.pkg" >> $GITHUB_ENV
|
||||||
|
- name: 'Package ${{ env.MACOS_FILENAME_UNSIGNED }}'
|
||||||
|
if: success()
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
packagesbuild ./CI/macos/obs-websocket.pkgproj
|
||||||
|
mv ./release/obs-websocket.pkg ./release/${{ env.MACOS_FILENAME_UNSIGNED }}
|
||||||
|
- name: 'Sign plugin package'
|
||||||
|
if: ${{ env.GIT_TAG != '' }}
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket
|
||||||
|
run: |
|
||||||
|
productsign \
|
||||||
|
--sign "${{ secrets.MACOS_INSTALLER_IDENTITY }}" \
|
||||||
|
./release/${{ env.MACOS_FILENAME_UNSIGNED }} \
|
||||||
|
./release/${{ env.MACOS_FILENAME }}
|
||||||
|
rm ./release/${{ env.MACOS_FILENAME_UNSIGNED }}
|
||||||
|
- name: 'Notarize package'
|
||||||
|
if: ${{ env.GIT_TAG != '' }}
|
||||||
|
shell: bash
|
||||||
|
working-directory: ${{ github.workspace }}/obs-websocket
|
||||||
|
run: |
|
||||||
|
zip -r ./release/${{ env.MACOS_FILENAME }}.zip ./release/${{ env.MACOS_FILENAME }}
|
||||||
|
UPLOAD_RESULT=$(xcrun altool --notarize-app \
|
||||||
|
--primary-bundle-id "com.obsproject.obs-websocket" \
|
||||||
|
--username "${{ secrets.MACOS_NOTARIZATION_USERNAME }}" \
|
||||||
|
--password "${{ secrets.MACOS_NOTARIZATION_PASSWORD }}" \
|
||||||
|
--asc-provider "${{ secrets.ASC_PROVIDER_SHORTNAME }}" \
|
||||||
|
--file "./release/${{ env.MACOS_FILENAME }}.zip")
|
||||||
|
|
||||||
|
rm ./release/${{ env.MACOS_FILENAME }}.zip
|
||||||
|
|
||||||
|
REQUEST_UUID=$(echo $UPLOAD_RESULT | awk -F ' = ' '/RequestUUID/ {print $2}')
|
||||||
|
|
||||||
|
# Pieces of code borrowed from rednoah/notarized-app
|
||||||
|
while sleep 30 && date; do
|
||||||
|
CHECK_RESULT=$(xcrun altool \
|
||||||
|
--notarization-info "$REQUEST_UUID" \
|
||||||
|
--username "${{ secrets.MACOS_NOTARIZATION_USERNAME }}" \
|
||||||
|
--password "${{ secrets.MACOS_NOTARIZATION_PASSWORD }}" \
|
||||||
|
--asc-provider "${{ secrets.ASC_PROVIDER_SHORTNAME }}")
|
||||||
|
|
||||||
|
if ! grep -q "Status: in progress" <<< "$CHECK_RESULT"; then
|
||||||
|
xcrun stapler staple ./release/${{ env.MACOS_FILENAME }}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
- name: 'Publish Packages'
|
||||||
|
if: success()
|
||||||
|
uses: actions/upload-artifact@v2-preview
|
||||||
|
with:
|
||||||
|
name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-macOS'
|
||||||
|
path: '${{ github.workspace }}/obs-websocket/release/*.pkg'
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
brew "jack"
|
|
||||||
brew "speexdsp"
|
|
||||||
brew "cmake"
|
|
||||||
brew "freetype"
|
|
||||||
brew "fdk-aac"
|
|
@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS build script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HAS_CMAKE=$(type cmake 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_CMAKE}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] CMake not installed - please run 'install-dependencies-macos.sh' first."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[obs-websocket] Building 'obs-websocket' for macOS."
|
|
||||||
mkdir -p build && cd build
|
|
||||||
cmake .. \
|
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
|
||||||
-DQTDIR=/tmp/obsdeps \
|
|
||||||
-DLIBOBS_INCLUDE_DIR=../../obs-studio/libobs \
|
|
||||||
-DLIBOBS_LIB=../../obs-studio/libobs \
|
|
||||||
-DOBS_FRONTEND_LIB="$(pwd)/../../obs-studio/build/UI/obs-frontend-api/libobs-frontend-api.dylib" \
|
|
||||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
||||||
&& make -j4
|
|
@ -1,39 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS obs-studio build script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HAS_CMAKE=$(type cmake 2>/dev/null)
|
|
||||||
HAS_GIT=$(type git 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_CMAKE}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] CMake not installed - please run 'install-dependencies-macos.sh' first."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${HAS_GIT}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] Git not installed - please install Xcode developer tools or via Homebrew."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Build obs-studio
|
|
||||||
cd ..
|
|
||||||
echo "[obs-websocket] Cloning obs-studio from GitHub.."
|
|
||||||
git clone https://github.com/obsproject/obs-studio
|
|
||||||
cd obs-studio
|
|
||||||
OBSLatestTag=$(git describe --tags --abbrev=0)
|
|
||||||
git checkout $OBSLatestTag
|
|
||||||
mkdir build && cd build
|
|
||||||
echo "[obs-websocket] Building obs-studio.."
|
|
||||||
cmake .. \
|
|
||||||
-DQTDIR=/tmp/obsdeps \
|
|
||||||
-DDepsPath=/tmp/obsdeps \
|
|
||||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
|
||||||
-DDISABLE_PLUGINS=true \
|
|
||||||
-DENABLE_SCRIPTING=0 \
|
|
||||||
-DCMAKE_PREFIX_PATH=/tmp/obsdeps/lib/cmake \
|
|
||||||
&& make -j4
|
|
@ -1,57 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS install dependencies script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
HAS_BREW=$(type brew 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_BREW}" = "" ]; then
|
|
||||||
echo "[obs-websocket - Error] Please install Homebrew (https://www.brew.sh/) to build obs-websocket on macOS."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# OBS Studio Brew Deps
|
|
||||||
echo "[obs-websocket] Updating Homebrew.."
|
|
||||||
brew update >/dev/null
|
|
||||||
echo "[obs-websocket] Checking installed Homebrew formulas.."
|
|
||||||
|
|
||||||
if [ -d /usr/local/opt/openssl@1.0.2t ]; then
|
|
||||||
brew uninstall openssl@1.0.2t
|
|
||||||
brew untap local/openssl
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d /usr/local/opt/python@2.7.17 ]; then
|
|
||||||
brew uninstall python@2.7.17
|
|
||||||
brew untap local/python2
|
|
||||||
fi
|
|
||||||
|
|
||||||
brew bundle --file ./CI/macos/Brewfile
|
|
||||||
|
|
||||||
# Fetch and install Packages app
|
|
||||||
# =!= NOTICE =!=
|
|
||||||
# Installs a LaunchDaemon under /Library/LaunchDaemons/fr.whitebox.packages.build.dispatcher.plist
|
|
||||||
# =!= NOTICE =!=
|
|
||||||
|
|
||||||
HAS_PACKAGES=$(type packagesbuild 2>/dev/null)
|
|
||||||
|
|
||||||
if [ "${HAS_PACKAGES}" = "" ]; then
|
|
||||||
echo "[obs-websocket] Installing Packaging app (might require password due to 'sudo').."
|
|
||||||
curl -L -O http://s.sudre.free.fr/Software/files/Packages.dmg
|
|
||||||
sudo hdiutil attach ./Packages.dmg
|
|
||||||
sudo installer -pkg /Volumes/Packages\ 1.2.9/Install\ Packages.pkg -target /
|
|
||||||
fi
|
|
||||||
|
|
||||||
# OBS Deps
|
|
||||||
echo "[obs-websocket] Installing obs-websocket dependency 'OBS Deps ${OBS_DEPS_VERSION}'.."
|
|
||||||
wget --quiet --retry-connrefused --waitretry=1 https://github.com/obsproject/obs-deps/releases/download/${OBS_DEPS_VERSION}/macos-deps-${OBS_DEPS_VERSION}.tar.gz
|
|
||||||
tar -xf ./macos-deps-${OBS_DEPS_VERSION}.tar.gz -C /tmp
|
|
||||||
|
|
||||||
# Qt deps
|
|
||||||
echo "[obs-websocket] Installing obs-websocket dependency 'Qt ${QT_VERSION}'.."
|
|
||||||
curl -L -O https://github.com/obsproject/obs-deps/releases/download/${OBS_DEPS_VERSION}/macos-qt-${QT_VERSION}-${OBS_DEPS_VERSION}.tar.gz
|
|
||||||
tar -xf ./macos-qt-${QT_VERSION}-${OBS_DEPS_VERSION}.tar.gz -C "/tmp"
|
|
||||||
xattr -r -d com.apple.quarantine /tmp/obsdeps
|
|
@ -514,7 +514,7 @@
|
|||||||
<key>CONCLUSION_ACTION</key>
|
<key>CONCLUSION_ACTION</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>IDENTIFIER</key>
|
<key>IDENTIFIER</key>
|
||||||
<string>fr.palakis.obs-websocket</string>
|
<string>com.obsproject.obs-websocket</string>
|
||||||
<key>OVERWRITE_PERMISSIONS</key>
|
<key>OVERWRITE_PERMISSIONS</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>VERSION</key>
|
<key>VERSION</key>
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
OSTYPE=$(uname)
|
|
||||||
|
|
||||||
if [ "${OSTYPE}" != "Darwin" ]; then
|
|
||||||
echo "[obs-websocket - Error] macOS package script can be run on Darwin-type OS only."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[obs-websocket] Preparing package build"
|
|
||||||
|
|
||||||
GIT_HASH=$(git rev-parse --short HEAD)
|
|
||||||
GIT_BRANCH_OR_TAG=$(git name-rev --name-only HEAD | awk -F/ '{print $NF}')
|
|
||||||
|
|
||||||
VERSION="$GIT_HASH-$GIT_BRANCH_OR_TAG"
|
|
||||||
|
|
||||||
FILENAME_UNSIGNED="obs-websocket-$VERSION-Unsigned.pkg"
|
|
||||||
FILENAME="obs-websocket-$VERSION.pkg"
|
|
||||||
|
|
||||||
echo "[obs-websocket] Modifying obs-websocket.so linking"
|
|
||||||
install_name_tool \
|
|
||||||
-change /tmp/obsdeps/lib/QtWidgets.framework/Versions/5/QtWidgets \
|
|
||||||
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets \
|
|
||||||
-change /tmp/obsdeps/lib/QtGui.framework/Versions/5/QtGui \
|
|
||||||
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui \
|
|
||||||
-change /tmp/obsdeps/lib/QtCore.framework/Versions/5/QtCore \
|
|
||||||
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore \
|
|
||||||
-change /tmp/obsdeps/lib/QtNetwork.framework/Versions/5/QtNetwork \
|
|
||||||
@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork \
|
|
||||||
-change /tmp/obsdeps/lib/QtSvg.framework/Versions/5/QtSvg \
|
|
||||||
@executable_path/../Frameworks/QtSvg.framework/Versions/5/QtSvg \
|
|
||||||
./build/obs-websocket.so
|
|
||||||
|
|
||||||
# Check if replacement worked
|
|
||||||
echo "[obs-websocket] Dependencies for obs-websocket"
|
|
||||||
otool -L ./build/obs-websocket.so
|
|
||||||
|
|
||||||
if [[ "$RELEASE_MODE" == "True" ]]; then
|
|
||||||
echo "[obs-websocket] Signing plugin binary: obs-websocket.so"
|
|
||||||
codesign --sign "$CODE_SIGNING_IDENTITY" ./build/obs-websocket.so
|
|
||||||
else
|
|
||||||
echo "[obs-websocket] Skipped plugin codesigning"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[obs-websocket] Actual package build"
|
|
||||||
packagesbuild ./CI/macos/obs-websocket.pkgproj
|
|
||||||
|
|
||||||
echo "[obs-websocket] Renaming obs-websocket.pkg to $FILENAME"
|
|
||||||
mv ./release/obs-websocket.pkg ./release/$FILENAME_UNSIGNED
|
|
||||||
|
|
||||||
if [[ "$RELEASE_MODE" == "True" ]]; then
|
|
||||||
echo "[obs-websocket] Signing installer: $FILENAME"
|
|
||||||
productsign \
|
|
||||||
--sign "$INSTALLER_SIGNING_IDENTITY" \
|
|
||||||
./release/$FILENAME_UNSIGNED \
|
|
||||||
./release/$FILENAME
|
|
||||||
rm ./release/$FILENAME_UNSIGNED
|
|
||||||
|
|
||||||
echo "[obs-websocket] Submitting installer $FILENAME for notarization"
|
|
||||||
zip -r ./release/$FILENAME.zip ./release/$FILENAME
|
|
||||||
UPLOAD_RESULT=$(xcrun altool \
|
|
||||||
--notarize-app \
|
|
||||||
--primary-bundle-id "fr.palakis.obs-websocket" \
|
|
||||||
--username "$AC_USERNAME" \
|
|
||||||
--password "$AC_PASSWORD" \
|
|
||||||
--asc-provider "$AC_PROVIDER_SHORTNAME" \
|
|
||||||
--file "./release/$FILENAME.zip")
|
|
||||||
rm ./release/$FILENAME.zip
|
|
||||||
|
|
||||||
REQUEST_UUID=$(echo $UPLOAD_RESULT | awk -F ' = ' '/RequestUUID/ {print $2}')
|
|
||||||
echo "Request UUID: $REQUEST_UUID"
|
|
||||||
|
|
||||||
echo "[obs-websocket] Wait for notarization result"
|
|
||||||
# Pieces of code borrowed from rednoah/notarized-app
|
|
||||||
while sleep 30 && date; do
|
|
||||||
CHECK_RESULT=$(xcrun altool \
|
|
||||||
--notarization-info "$REQUEST_UUID" \
|
|
||||||
--username "$AC_USERNAME" \
|
|
||||||
--password "$AC_PASSWORD" \
|
|
||||||
--asc-provider "$AC_PROVIDER_SHORTNAME")
|
|
||||||
echo $CHECK_RESULT
|
|
||||||
|
|
||||||
if ! grep -q "Status: in progress" <<< "$CHECK_RESULT"; then
|
|
||||||
echo "[obs-websocket] Staple ticket to installer: $FILENAME"
|
|
||||||
xcrun stapler staple ./release/$FILENAME
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "[obs-websocket] Skipped installer codesigning and notarization"
|
|
||||||
fi
|
|
Reference in New Issue
Block a user