From ea7db889eb95563ba6061da5bef03e7539009ad8 Mon Sep 17 00:00:00 2001 From: Marek Sobolak Date: Mon, 25 Mar 2024 11:59:56 +0100 Subject: [PATCH] Run arm64 --- .github/workflows/main.yml | 450 ------------------------------------- 1 file changed, 450 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b590fa8e1..80ffd48e7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -52,147 +52,6 @@ env: USE_RELEASE_NOTES_FROM_FILE: 'false' jobs: - macos_build_x86_64: - name: 'MacOS-x86_64' - runs-on: [macos-12] - env: - MACOSX_DEPLOYMENT_TARGET_X86_64: '10.14' - SPARKLE_VERSION: '1.26.0' - SPARKLE_HASH: '8312cbf7528297a49f1b97692c33cb8d33254c396dc51be394e9484e4b6833a0' - BLOCKED_FORMULAS: 'speexdsp curl php composer' - CODESIGN_IDENT: ${{ secrets.CODESIGN_IDENT }} - TARGET_ARCH: 'x86_64' - 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/gh-access@v1.0.0 - 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 }}-x64-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: 'Install MacOS cert and create keychain' - run: | - 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} - - env: - MACOS_SIGNING_CERT: ${{ secrets.MACOS_SIGNING_CERT }} - MACOS_SIGNING_CERT_PASSWORD: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }} - KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} - KEYCHAIN_PATH: ${{ github.workspace }}/app-signing.keychain-db - CERTIFACTE_PATH: ${{ github.workspace }}/app-signing-cert.p12 - - # Geneate OBS without obs-ndi plugin - - name: 'Build OBS - no NDI' - run: ./CI/macos/02_build_obs.sh --codesign --architecture ${{ env.TARGET_ARCH }} --vendor ${{ env.VENDOR }} - 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 }} --vendor ${{ env.VENDOR }} - 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 }}' - macos_build_arm64: name: 'MacOS-arm64' runs-on: ['self-hosted', 'macOS', 'ARM64'] @@ -292,12 +151,6 @@ jobs: 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 @@ -318,306 +171,3 @@ jobs: 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 }}' - - linux_build: - name: 'Linux' - strategy: - fail-fast: false - matrix: - ubuntu: ['ubuntu-20.04', 'ubuntu-22.04'] - runs-on: ${{ matrix.ubuntu }} - 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/gh-access@v1.0.0 - 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 }}-.*64-Release-.*.sh.*" - - - name: 'Setup additional build environment variables' - id: setup - run: | - echo "CACHE_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV - - 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: | - git submodule update --init --recursive - ./CI/linux/01_install_dependencies.sh --disable-pipewire - - - name: 'Setup plugins' - 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: 'Build OBS with no NDI' - run: ./CI/linux/02_build_obs.sh --disable-pipewire --vendor ${{ env.VENDOR }} - env: - UBUNTU_VERSION: ${{ matrix.ubuntu }} - - - 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 $(find build/. -name "obs-webrtc-*.deb" | sort -rn | head -1)) - echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV - env: - UBUNTU_VERSION: ${{ matrix.ubuntu }} - - - 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 }}/build/${{ env.FILE_NAME }}' - - - name: 'Build OBS with NDI' - run: | - cd build - cmake .. -DCMAKE_INSTALL_PREFIX=../install - cmake --install . - cd .. - pushd plugins/obs-ndi - mkdir BUILD - cd BUILD - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -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 --ndi - env: - UBUNTU_VERSION: ${{ matrix.ubuntu }} - VENDOR: ${{ env.VENDOR }} - - - 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 $(find build/. -name "obs-webrtc-*.deb" | sort -rn | head -1)) - echo "FILE_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV - env: - UBUNTU_VERSION: ${{ matrix.ubuntu }} - - - 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 }}/build/${{ env.FILE_NAME }} - ${{ github.workspace }}/build/obs-ndi*.deb - - 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: 'Checkout' - uses: actions/checkout@v4 - with: - submodules: 'recursive' - fetch-depth: 0 - - - name: 'Generate access token' - id: accessToken - uses: dolby-io-internal/gh-access@v1.0.0 - 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 }} - action_shell: 'powershell' - - - name: 'Download libWebRTC' - uses: ./.github/actions/download_libwebrtc/win - with: - access_token: ${{ steps.accessToken.outputs.token }} - release_tag: ${{ env.LIBWEBRTC_RELEASE_TAG }} - asset_pattern: "^libWebRTC-${{ env.LIBWEBRTC_VERSION }}-x64-Mt-Release-.*.exe.*" - - - name: 'Add msbuild to PATH' - uses: microsoft/setup-msbuild@v1.1 - - - name: 'Setup additional build environment variables' - id: setup - 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 - $CommitHash = git rev-parse --short=9 HEAD - "commitHash=${CommitHash}" >> $env:GITHUB_OUTPUT - "DEPS_BUILD_DIR=${{ github.workspace }}/../obs-build-dependencies_${{ env.TARGET_ARCH }}" >> $GITHUB_ENV - - - name: 'Install dependencies' - run: ./CI/windows/01_install_dependencies.ps1 -BuildArch ${{ env.TARGET_ARCH }} - - - name: 'Fix ffmpeg installation' - run: choco install ffmpeg - - - name: Install cmake 3.21 and set path - run: | - Invoke-WebRequest -Uri "https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-windows-x86_64.zip" -OutFile "cmake.zip" - Expand-Archive "cmake.zip" -DestinationPath "C:\Program Files\cmake-3.21" - $newPath = "C:\Program Files\cmake-3.21\cmake-3.21.3-windows-x86_64\bin;" + $env:PATH - echo "PATH=$newPath" >> $GITHUB_ENV - echo "$env:PATH =$newPath" - Remove-Item cmake.zip - cmake --version - shell: powershell - - - name: 'Setup plugings' - 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: 'Build OBS with no NDI' - run: | - $newPath = "C:\Program Files\cmake-3.21\cmake-3.21.3-windows-x86_64\bin;" + $env:PATH - echo "PATH=$newPath" >> $GITHUB_ENV - echo "$env:PATH =$newPath" - ./CI/windows/02_build_obs.ps1 -BuildArch ${{ env.TARGET_ARCH }} -Vendor $env:VENDOR - shell: powershell - - - name: 'Build OBS with NDI' - run: | - $newPath = "C:\Program Files\cmake-3.21\cmake-3.21.3-windows-x86_64\bin;" + $env:PATH - echo "PATH=$newPath" >> $GITHUB_ENV - echo "$env:PATH =$newPath" - ./CI/windows/02_build_obs.ps1 -BuildArch ${{ env.TARGET_ARCH }} -Vendor $env:VENDOR -Ndi ON - shell: powershell - - - name: 'Prepare package' - run: ./CI/windows/before-deploy-win.cmd ${{ env.VENDOR }} - shell: cmd - env: - FLAVOUR: NDI - - - name: 'Sign obs executable' - working-directory: ${{github.workspace}}/build_${{ env.VENDOR }} - run: | - echo "${{ secrets.WINDOWS_SIGN_CERT }}" > certificate.b64 - certutil -decode certificate.b64 certificate.pfx - - Get-ChildItem -Filter "obs-webrtc-*.exe" | Foreach-Object { - Write-Host "Signing $_" - $env:SIGN_STATUS = & "C:\Program Files (x86)\Windows Kits\10\App Certification Kit\signtool.exe" sign /f ./certificate.pfx /p ${{ secrets.WINDOWS_SIGN_CERT_PASSWD}} /tr "http://timestamp.comodoca.com" /td SHA256 /fd SHA256 $_ - if($?) { - Write-Host "$env:SIGN_STATUS" - } else { - Write-Host "Sign error: $env:SIGN_STATUS" - } - } - - Remove-Item -Recurse -Force certificate.pfx - - - 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: ./build_${{ env.VENDOR }}/obs-webrtc-*.exe - - 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/') - 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/gh-access@v1.0.0 - 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: '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'