Run arm64 #277
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: | |
- "**" | |
pull_request: | |
paths-ignore: | |
- 'LICENSE' | |
- 'README.md' | |
- 'RELEASE_NOTES.md' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
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 }} | |
OBS_VERSION: "1.5.3-28.1.2-m112" | |
LIBWEBRTC_RELEASE_TAG: "m112-release" | |
LIBWEBRTC_VERSION: "112.0" | |
VENDOR: "Millicast" | |
BUILD_TYPE: "RelWithDebInfo" | |
USE_RELEASE_NOTES_FROM_FILE: 'false' | |
jobs: | |
macos_build_arm64: | |
name: 'MacOS-arm64' | |
runs-on: ['self-hosted', 'macOS', 'ARM64'] | |
env: | |
MACOSX_DEPLOYMENT_TARGET_ARM64: '11.0' | |
SPARKLE_VERSION: '1.26.0' | |
SPARKLE_HASH: '8312cbf7528297a49f1b97692c33cb8d33254c396dc51be394e9484e4b6833a0' | |
BLOCKED_FORMULAS: 'speexdsp curl php composer' | |
CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} | |
TARGET_ARCH: 'arm64' | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: 'Checkout' | |
uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: 'Generate access token' | |
id: accessToken | |
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' | |
uses: ./.github/actions/download_libwebrtc | |
with: | |
access_token: ${{ steps.accessToken.outputs.token }} | |
release_tag: ${{ env.LIBWEBRTC_RELEASE_TAG }} | |
asset_pattern: "^libWebRTC-${{ env.LIBWEBRTC_VERSION }}-arm64-Release-H264-OpenSSL_1_1_1.*.dmg.*" | |
- name: 'Setup additional build environment variables' | |
id: setup | |
run: | | |
echo "CACHE_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV | |
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 "commitHash=$(git rev-parse --short=9 HEAD)" >> $GITHUB_OUTPUT | |
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 "DEPS_BUILD_DIR=${{ github.workspace }}/../obs-build-dependencies_${{ env.TARGET_ARCH }}" >> $GITHUB_ENV | |
- name: 'Install dependencies' | |
run: CI/macos/01_install_dependencies.sh --architecture ${{ env.TARGET_ARCH }} | |
- name: 'Setup plugins' | |
run: | | |
git stash | |
rm -rf ${{ github.workspace }}/plugins/obs-ndi | |
rm -rf ${{ github.workspace }}/plugins/obs-browser | |
git submodule update --init --recursive | |
- name: 'Unlock keychain' | |
run: | | |
security -v unlock-keychain -p ${MACOS_KEYCHAIN_PASSWORD} ${MACOS_KEYCHAIN_PATH} && echo "Keychain is unlocked" || exit 1 | |
env: | |
MACOS_KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} | |
MACOS_KEYCHAIN_PATH: /Users/dolbyvoice/Library/Keychains/cosmosoftware.keychain-db | |
# 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 }}' | |
path: '${{ github.workspace }}/build/${{ env.FILE_NAME }}' |