mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-10-21 21:45:01 -04:00
Fixes #7146 Normally, Qt and CEF each run their own version of GTK, often causing conflicts. This commit introduces a build of CEF where GTK has been disabled using `use_gtk=false` as we do not require the Chrome runtime. This is an experiment and may end up being the safest long-term solution. Note: This does introduce potential quirks/incompatibilities, such as browser sources no longer being able to display alert() dialogs, and potentially file browser dialogs not working from CEF. This is better than the alternative. If necessary, such dialogs can be reimplemented using Qt at a later date, and would likely provide a more consistent user experience.
515 lines
20 KiB
YAML
515 lines
20 KiB
YAML
name: 'BUILD'
|
|
|
|
on:
|
|
push:
|
|
paths-ignore: ['**.md']
|
|
branches:
|
|
- master
|
|
- 'release/**'
|
|
tags: ['*']
|
|
pull_request:
|
|
paths-ignore: ['**.md']
|
|
branches: [master]
|
|
|
|
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'
|
|
TWITCH_CLIENTID: ${{ secrets.TWITCH_CLIENT_ID }}
|
|
TWITCH_HASH: ${{ secrets.TWITCH_HASH }}
|
|
RESTREAM_CLIENTID: ${{ secrets.RESTREAM_CLIENTID }}
|
|
RESTREAM_HASH: ${{ secrets.RESTREAM_HASH }}
|
|
YOUTUBE_CLIENTID: ${{ secrets.YOUTUBE_CLIENTID }}
|
|
YOUTUBE_CLIENTID_HASH: ${{ secrets.YOUTUBE_CLIENTID_HASH }}
|
|
YOUTUBE_SECRET: ${{ secrets.YOUTUBE_SECRET }}
|
|
YOUTUBE_SECRET_HASH: ${{ secrets.YOUTUBE_SECRET_HASH }}
|
|
|
|
jobs:
|
|
clang_check:
|
|
name: '01 - Code Format Check'
|
|
runs-on: [ubuntu-22.04]
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'recursive'
|
|
|
|
- name: 'Install clang-format'
|
|
run: sudo apt-get install -y clang-format-13
|
|
|
|
- name: 'Run clang-format'
|
|
run: |
|
|
./CI/check-format.sh
|
|
./CI/check-changes.sh
|
|
|
|
- name: 'Install cmake-format'
|
|
run: sudo pip install cmakelang
|
|
|
|
- name: 'Run cmake-format'
|
|
run: |
|
|
./CI/check-cmake.sh
|
|
|
|
macos_build:
|
|
name: '02 - macOS'
|
|
runs-on: [macos-12]
|
|
strategy:
|
|
matrix:
|
|
arch: ['x86_64', 'arm64']
|
|
if: always()
|
|
needs: [clang_check]
|
|
env:
|
|
MACOSX_DEPLOYMENT_TARGET_X86_64: '10.15'
|
|
MACOSX_DEPLOYMENT_TARGET_ARM64: '11.0'
|
|
SPARKLE_VERSION: '1.26.0'
|
|
SPARKLE_HASH: '8312cbf7528297a49f1b97692c33cb8d33254c396dc51be394e9484e4b6833a0'
|
|
BLOCKED_FORMULAS: 'speexdsp curl php composer'
|
|
CODESIGN_IDENT: '-'
|
|
HAVE_CODESIGN_IDENTITY: ${{ secrets.MACOS_SIGNING_IDENTITY != '' && secrets.MACOS_SIGNING_CERT != '' }}
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: 'obs-studio'
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'recursive'
|
|
path: 'obs-studio'
|
|
fetch-depth: 0
|
|
|
|
- name: 'Check for Github Labels'
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
if test -n "$(curl -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -s "${{ github.event.pull_request.url }}" | jq -e '.labels[] | select(.name == "Seeking Testers")')"; then
|
|
echo "SEEKING_TESTERS=1" >> $GITHUB_ENV
|
|
else
|
|
echo "SEEKING_TESTERS=0" >> $GITHUB_ENV
|
|
fi
|
|
|
|
echo "CACHE_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
|
|
|
|
- name: 'Restore ccache from cache'
|
|
id: ccache-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'ccache-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/.ccache
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ matrix.arch }}-${{ env.CACHE_DATE }}
|
|
|
|
- name: 'Restore Chromium Embedded Framework from cache'
|
|
id: cef-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'cef-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/obs-build-dependencies/cef_binary_${{ env.CEF_BUILD_VERSION_MAC }}_macos_${{ matrix.arch }}
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION_MAC }}-${{ matrix.arch }}-${{ env.CACHE_REVISION }}
|
|
|
|
- name: 'Restore VLC dependency from cache'
|
|
id: vlc-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'vlc-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/obs-build-dependencies/vlc-${{ env.VLC_VERSION_MAC }}
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.VLC_VERSION_MAC }}-${{ env.CACHE_REVISION }}
|
|
|
|
- name: 'Restore Sparkle dependency from cache'
|
|
id: sparkle-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'sparkle-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/obs-build-dependencies/obs-deps/lib/Sparkle.framework
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.SPARKLE_VERSION }}-${{ env.CACHE_REVISION }}
|
|
|
|
- name: 'Setup build environment'
|
|
id: setup
|
|
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
|
|
|
|
echo "::set-output name=commitHash::$(git rev-parse --short=9 HEAD)"
|
|
|
|
- name: 'Switch to Xcode 14 Beta'
|
|
run: sudo xcode-select -switch /Applications/Xcode_14.0.app
|
|
|
|
- name: 'Install dependencies'
|
|
env:
|
|
RESTORED_VLC: ${{ steps.vlc-cache.outputs.cache-hit }}
|
|
RESTORED_SPARKLE: ${{ steps.sparkle-cache.outputs.cache-hit }}
|
|
RESTORED_CEF: ${{ steps.cef-cache.outputs.cache-hit }}
|
|
run: CI/macos/01_install_dependencies.sh --architecture "${{ matrix.arch }}"
|
|
|
|
- name: 'Install Apple Developer Certificate'
|
|
if: ${{ startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' && env.HAVE_CODESIGN_IDENTITY == 'true' }}
|
|
uses: apple-actions/import-codesign-certs@253ddeeac23f2bdad1646faac5c8c2832e800071
|
|
with:
|
|
p12-file-base64: ${{ secrets.MACOS_SIGNING_CERT }}
|
|
p12-password: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
|
|
|
|
- name: 'Set Signing Identity'
|
|
if: ${{ startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' && env.HAVE_CODESIGN_IDENTITY == 'true' }}
|
|
run: |
|
|
echo "CODESIGN_IDENT=${{ secrets.MACOS_SIGNING_IDENTITY }}" >> $GITHUB_ENV
|
|
echo "BUILD_FOR_DISTRIBUTION=ON" >> $GITHUB_ENV
|
|
|
|
- name: 'Build OBS'
|
|
run: CI/macos/02_build_obs.sh --codesign --architecture "${{ matrix.arch }}"
|
|
|
|
- name: 'Run tests'
|
|
if: ${{ success() && matrix.arch == 'x86_64' }}
|
|
run: cmake --build build -t test
|
|
|
|
- name: 'Create build artifact'
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
run: |
|
|
CI/macos/03_package_obs.sh --codesign --architecture "${{ matrix.arch }}"
|
|
ARTIFACT_NAME=$(basename $(/usr/bin/find build -type f -name "obs-studio-*.dmg" -depth 1 | head -1))
|
|
echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV
|
|
|
|
- name: 'Upload build Artifact'
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: 'obs-studio-macos-${{ matrix.arch }}-${{ steps.setup.outputs.commitHash }}'
|
|
path: '${{ github.workspace }}/obs-studio/build/${{ env.FILE_NAME }}'
|
|
|
|
linux_build:
|
|
name: '02 - Linux'
|
|
runs-on: ${{ matrix.ubuntu }}
|
|
strategy:
|
|
matrix:
|
|
ubuntu: ['ubuntu-20.04', 'ubuntu-22.04']
|
|
if: always()
|
|
needs: [clang_check]
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
working-directory: 'obs-studio'
|
|
env:
|
|
BUILD_FOR_DISTRIBUTION: ${{ startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' }}
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'recursive'
|
|
path: 'obs-studio'
|
|
fetch-depth: 0
|
|
|
|
- name: 'Check for Github Labels'
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
if test -n "$(curl -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -s "${{ github.event.pull_request.url }}" | jq -e '.labels[] | select(.name == "Seeking Testers")')"; then
|
|
echo "SEEKING_TESTERS=1" >> $GITHUB_ENV
|
|
else
|
|
echo "SEEKING_TESTERS=0" >> $GITHUB_ENV
|
|
fi
|
|
|
|
echo "CACHE_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
|
|
|
|
- name: 'Restore ccache from cache'
|
|
id: ccache-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'ccache-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/.ccache
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ matrix.ubuntu }}-${{ env.CACHE_DATE }}
|
|
|
|
- name: 'Restore Chromium Embedded Framework from cache'
|
|
id: cef-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'cef-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/obs-build-dependencies/cef_binary_${{ env.CEF_BUILD_VERSION_LINUX }}_linux64
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION_LINUX }}-${{ env.CACHE_REVISION }}
|
|
|
|
- name: 'Setup build environment'
|
|
id: setup
|
|
run: |
|
|
echo "::set-output name=commitHash::$(git rev-parse --short=9 HEAD)"
|
|
|
|
- name: 'Install dependencies'
|
|
env:
|
|
RESTORED_CEF: ${{ steps.cef-cache.outputs.cache-hit }}
|
|
run: CI/linux/01_install_dependencies.sh --disable-pipewire
|
|
|
|
- name: 'Build OBS'
|
|
run: CI/linux/02_build_obs.sh --disable-pipewire
|
|
|
|
- name: 'Run tests'
|
|
if: success()
|
|
run: cmake --build build -t test
|
|
|
|
- name: 'Create build artifact'
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
run: |
|
|
CI/linux/03_package_obs.sh
|
|
ARTIFACT_NAME=$(basename $(/usr/bin/find build -maxdepth 1 -type f -name "obs-studio-*.deb" | sort -rn | head -1))
|
|
echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV
|
|
|
|
- name: 'Upload build Artifact'
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: 'obs-studio-${{ matrix.ubuntu }}-${{ steps.setup.outputs.commitHash }}'
|
|
path: '${{ github.workspace }}/obs-studio/build/${{ env.FILE_NAME }}'
|
|
|
|
windows_build:
|
|
name: '02 - Windows'
|
|
runs-on: [windows-2022]
|
|
needs: [clang_check]
|
|
if: always()
|
|
strategy:
|
|
matrix:
|
|
arch: [x64, x86]
|
|
env:
|
|
CMAKE_GENERATOR: 'Visual Studio 17 2022'
|
|
CMAKE_SYSTEM_VERSION: '10.0.18363.657'
|
|
VIRTUALCAM-GUID: 'A3FCE0F5-3493-419F-958A-ABA1250EC20B'
|
|
BUILD_FOR_DISTRIBUTION: ${{ startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' }}
|
|
defaults:
|
|
run:
|
|
working-directory: 'obs-studio'
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'recursive'
|
|
path: 'obs-studio'
|
|
fetch-depth: 0
|
|
|
|
- name: 'Add msbuild to PATH'
|
|
uses: microsoft/setup-msbuild@v1.1
|
|
|
|
- name: 'Check for Github Labels'
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
$LabelFound = try { (Invoke-RestMethod -Authentication 'Bearer' -Token (ConvertTo-SecureString '${{ secrets.GITHUB_TOKEN }}' -AsPlainText) -Uri "${{ github.event.pull_request.url }}" -UseBasicParsing).labels.name.contains("Seeking Testers") } catch { $false }
|
|
Write-Output "SEEKING_TESTERS=$(if( $LabelFound -eq $true ) { 1 } else { 0 })" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
- name: 'Restore VLC dependency from cache'
|
|
id: vlc-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'vlc-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/obs-build-dependencies/vlc-${{ env.VLC_VERSION_WIN }}
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.VLC_VERSION_WIN }}-${{ env.CACHE_REVISION }}
|
|
|
|
- name: 'Restore Chromium Embedded Framework from cache'
|
|
id: cef-cache
|
|
uses: actions/cache@v3
|
|
env:
|
|
CACHE_NAME: 'cef-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/obs-build-dependencies/cef_binary_${{ env.CEF_BUILD_VERSION_WIN }}_windows_${{ matrix.arch }}
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION_WIN }}-${{ matrix.arch }}-${{ env.CACHE_REVISION }}
|
|
|
|
- name: Setup Environment
|
|
id: setup
|
|
run: |
|
|
$CommitHash = git rev-parse --short=9 HEAD
|
|
Write-Output "::set-output name=commitHash::${CommitHash}"
|
|
|
|
- name: 'Install dependencies'
|
|
env:
|
|
RESTORED_VLC: ${{ steps.vlc-cache.outputs.cache-hit }}
|
|
RESTORED_CEF: ${{ steps.cef-cache.outputs.cache-hit }}
|
|
run: CI/windows/01_install_dependencies.ps1 -BuildArch ${{ matrix.arch }}
|
|
|
|
- name: 'Build OBS'
|
|
run: CI/windows/02_build_obs.ps1 -BuildArch ${{ matrix.arch }}
|
|
|
|
- name: 'Create build artifact'
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
run: |
|
|
CI/windows/03_package_obs.ps1 -BuildArch ${{ matrix.arch }} -Package
|
|
$ArtifactName = Get-ChildItem -filter "obs-studio-*-windows-${{ matrix.arch }}.zip" -File
|
|
Write-Output "FILE_NAME=${ArtifactName}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
- 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-${{ matrix.arch }}-${{ steps.setup.outputs.commitHash }}'
|
|
path: '${{ env.FILE_NAME }}'
|
|
|
|
linux_package:
|
|
name: '02 - Flatpak Bundle'
|
|
runs-on: [ubuntu-latest]
|
|
needs: [clang_check]
|
|
if: always()
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
container:
|
|
image: bilelmoussaoui/flatpak-github-actions:kde-6.3
|
|
options: --privileged
|
|
steps:
|
|
- name: 'Check for Github Labels'
|
|
if: github.event_name == 'pull_request'
|
|
run: |
|
|
if ! /usr/bin/command -v "jq" >/dev/null 2>&1; then sudo dnf install -y -q jq; fi
|
|
if test -n "$(curl -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -s "${{ github.event.pull_request.url }}" | jq -e '.labels[] | select(.name == "Seeking Testers")')"; then
|
|
echo "SEEKING_TESTERS=1" >> $GITHUB_ENV
|
|
else
|
|
echo "SEEKING_TESTERS=0" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v3
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
with:
|
|
submodules: 'recursive'
|
|
fetch-depth: 0
|
|
|
|
- name: 'Setup build environment'
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
run: |
|
|
git config --global --add safe.directory $GITHUB_WORKSPACE
|
|
echo "OBS_GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
|
|
echo "OBS_GIT_HASH=$(git rev-parse --short=9 HEAD)" >> $GITHUB_ENV
|
|
echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
|
|
|
- name: Build Flatpak Manifest
|
|
uses: bilelmoussaoui/flatpak-github-actions/flatpak-builder@v4
|
|
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
|
|
with:
|
|
bundle: obs-studio-flatpak-${{ env.OBS_GIT_HASH }}.flatpak
|
|
manifest-path: CI/flatpak/com.obsproject.Studio.json
|
|
cache-key: flatpak-builder-${{ hashFiles('CI/flatpak/com.obsproject.Studio.json') }}
|
|
|
|
windows_package:
|
|
name: '03 - Windows Installer'
|
|
runs-on: [windows-latest]
|
|
needs: [windows_build]
|
|
if: ${{ startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' }}
|
|
env:
|
|
BUILD_FOR_DISTRIBUTION: 'ON'
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup Environment
|
|
id: setup
|
|
run: |
|
|
$CommitHash = git rev-parse --short=9 HEAD
|
|
Write-Output "::set-output name=commitHash::${CommitHash}"
|
|
|
|
- name: 'Add msbuild to PATH'
|
|
uses: microsoft/setup-msbuild@v1.1
|
|
|
|
- name: 'Download 64-bit artifact'
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: 'obs-studio-windows-x64-${{ steps.setup.outputs.commitHash }}'
|
|
|
|
- name: 'Download 32-bit artifact'
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: 'obs-studio-windows-x86-${{ steps.setup.outputs.commitHash }}'
|
|
|
|
- name: 'Unpack Windows build artifacts'
|
|
id: unpack
|
|
run: |
|
|
if (!(Test-Path install_temp)) {
|
|
$null = New-Item -ItemType Directory -Force -Path install_temp
|
|
}
|
|
|
|
Expand-Archive -Path "$(Get-ChildItem -filter "obs-studio-*-windows-x86.zip" -File)" -DestinationPath install_temp
|
|
Expand-Archive -Path "$(Get-ChildItem -filter "obs-studio-*-windows-x64.zip" -File)" -Force -DestinationPath install_temp
|
|
|
|
CI/windows/03_package_obs.ps1 -CombinedArchs -Package
|
|
|
|
$ArtifactName = (Get-ChildItem -filter "obs-studio-*-windows-x86+x64.zip" -File).Name
|
|
Write-Output "::set-output name=filename::${ArtifactName}"
|
|
|
|
- name: 'Upload build artifact'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: 'obs-studio-windows-installer'
|
|
path: '${{ steps.unpack.outputs.filename }}'
|
|
|
|
macos_release:
|
|
name: '03 - macOS notarized image'
|
|
runs-on: [macos-12]
|
|
needs: [macos_build]
|
|
env:
|
|
HAVE_CODESIGN_IDENTITY: ${{ secrets.MACOS_SIGNING_IDENTITY != '' && secrets.MACOS_SIGNING_CERT != '' }}
|
|
BUILD_FOR_DISTRIBUTION: 'ON'
|
|
if: ${{ startsWith(github.ref, 'refs/tags/') && github.event_name != 'pull_request' }}
|
|
strategy:
|
|
matrix:
|
|
arch: ['x86_64', 'arm64']
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- name: 'Checkout'
|
|
if: env.HAVE_CODESIGN_IDENTITY == 'true'
|
|
uses: actions/checkout@v3
|
|
|
|
- name: 'Setup build environment'
|
|
id: setup
|
|
run: |
|
|
echo "::set-output name=commitHash::$(git rev-parse --short=9 HEAD)"
|
|
|
|
- name: 'Download artifact'
|
|
if: env.HAVE_CODESIGN_IDENTITY == 'true'
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: 'obs-studio-macos-${{ matrix.arch }}-${{ steps.setup.outputs.commitHash }}'
|
|
|
|
- name: 'Install Apple Developer Certificate'
|
|
if: env.HAVE_CODESIGN_IDENTITY == 'true'
|
|
uses: apple-actions/import-codesign-certs@253ddeeac23f2bdad1646faac5c8c2832e800071
|
|
with:
|
|
p12-file-base64: ${{ secrets.MACOS_SIGNING_CERT }}
|
|
p12-password: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
|
|
|
|
- name: 'Create disk image for distribution'
|
|
if: env.HAVE_CODESIGN_IDENTITY == 'true'
|
|
env:
|
|
CODESIGN_IDENT: ${{ secrets.MACOS_SIGNING_IDENTITY }}
|
|
CODESIGN_IDENT_USER: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}
|
|
CODESIGN_IDENT_PASS: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
|
|
run: |
|
|
ARTIFACT_NAME=$(/usr/bin/find . -type f -name "obs-studio-*.dmg" -depth 1 | head -1)
|
|
CI/macos/03_package_obs.sh --notarize-image ${ARTIFACT_NAME}
|
|
|
|
echo "FILE_NAME=$(basename ${ARTIFACT_NAME})" >> $GITHUB_ENV
|
|
|
|
- name: 'Upload build Artifact'
|
|
if: env.HAVE_CODESIGN_IDENTITY == 'true'
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: 'obs-studio-macos-${{ matrix.arch }}-notarized'
|
|
path: '${{ github.workspace }}/${{ env.FILE_NAME }}'
|