Skip to content

Macos obs browser test issue (#1322) #150

Macos obs browser test issue (#1322)

Macos obs browser test issue (#1322) #150

Workflow file for this run

name: 'CI Multiplatform Build'
on:
push:
paths-ignore:
- '**.md'
branches: [ "staging" ]
tags:
- '*'
pull_request:
paths-ignore:
- '**.md'
branches: [ "staging" ]
env:
InstallPath: "obs-studio-node"
SLBUILDDIRECTORY: "streamlabs-build.app" # The .app extension is required to run macOS tests correctly.
RELEASE_BUCKET: "obsstudionodes3.streamlabs.com"
RuntimeURL: https://artifacts.electronjs.org/headers/dist
RuntimeName: iojs
ElectronVersion: 22.3.3
SLGenerator: Visual Studio 17 2022
SLDistributeDirectory: distribute
SLFullDistributePath: "streamlabs-build.app/distribute" # The .app extension is required to run macOS tests correctly.
LibOBSVersion: 28.2.58
PACKAGE_NAME: osn
jobs:
macos64:
name: 'macOS'
runs-on: [macos-latest]
strategy:
matrix:
BuildReleases: [Release-x86_64, Debug-x86_64, Release-arm64, Debug-arm64]
include:
- BuildReleases: Release-x86_64
BuildConfig: RelWithDebInfo
ReleaseName: release
Architecture: x86_64
- BuildReleases: Debug-x86_64
BuildConfig: Debug
ReleaseName: debug
Architecture: x86_64
- BuildReleases: Release-arm64
BuildConfig: RelWithDebInfo
ReleaseName: release
Architecture: arm64
- BuildReleases: Debug-arm64
BuildConfig: Debug
ReleaseName: debug
Architecture: arm64
env:
OS_TAG: "osx"
steps:
- name: 'Checkout'
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Get the version
id: get_version
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
shell: bash
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: '18.x'
- name: Install dependencies
shell: bash
run: './ci/install-dependencies-osx.sh'
- name: 'Configure obs-studio-node'
shell: bash
run: './ci/configure-osn-osx.sh'
env:
BUILD_CONFIG: ${{matrix.BuildConfig}}
RELEASE_NAME: ${{matrix.ReleaseName}}
ARCHITECTURE: ${{matrix.Architecture}}
- name: 'Build obs-studio-node'
run: ./ci/build-osn-osx.sh
shell: bash
env:
BUILD_CONFIG: ${{matrix.BuildConfig}}
SENTRY_AUTH_TOKEN: ${{secrets.SENTRY_AUTH_TOKEN}}
- name: Put version into package.json
if: startsWith(github.ref, 'refs/tags/')
run: node ci/bump-version.js "${{ steps.get_version.outputs.VERSION }}" "${{env.PACKAGE_PATH}}"
env:
PACKAGE_PATH: "${{env.SLFullDistributePath}}/${{env.InstallPath}}"
- name: 'Run tests'
if: matrix.Architecture != 'arm64'
continue-on-error: true
run: 'yarn run test'
env:
SLOBS_BE_STREAMKEY: ${{secrets.testsStreamKey}}
SLOBS_TEST_USER_POOL_TOKEN: ${{secrets.testsUserPoolToken}}
OSN_ACCESS_KEY_ID: ${{secrets.AWS_RELEASE_ACCESS_KEY_ID}}
OSN_SECRET_ACCESS_KEY: ${{secrets.AWS_RELEASE_SECRET_ACCESS_KEY}}
RELEASE_NAME: ${{matrix.ReleaseName}}
- name: Tar artifact for deployment
if: startsWith(github.ref, 'refs/tags/')
run: tar -cvzf ${{env.TARGET_ARTIFACT}}.tar.gz -C ${{env.SLFullDistributePath}} ${{env.InstallPath}}
env:
TARGET_ARTIFACT: ${{env.PACKAGE_NAME}}-${{ steps.get_version.outputs.VERSION }}-${{matrix.ReleaseName}}-${{env.OS_TAG}}-${{matrix.Architecture}}
- name: Configure AWS credentials
if: startsWith(github.ref, 'refs/tags/')
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{secrets.AWS_RELEASE_ACCESS_KEY_ID}}
aws-secret-access-key: ${{secrets.AWS_RELEASE_SECRET_ACCESS_KEY}}
aws-region: us-west-2
- name: Deploy
if: startsWith(github.ref, 'refs/tags/')
run: aws s3 cp ${{env.TARGET_ARTIFACT}}.tar.gz s3://${{env.RELEASE_BUCKET}} --acl public-read
env:
TARGET_ARTIFACT: ${{env.PACKAGE_NAME}}-${{ steps.get_version.outputs.VERSION }}-${{matrix.ReleaseName}}-${{env.OS_TAG}}-${{matrix.Architecture}}
- name: 'Upload debug files to Sentry'
if: startsWith(github.ref, 'refs/tags/')
run: 'python ./ci/sentry-osx.py'
env:
SENTRY_AUTH_TOKEN: ${{secrets.SENTRY_AUTH_TOKEN}}
BUILDCONFIG: ${{matrix.BuildConfig}}
win64:
name: 'Windows 64-bit'
runs-on: windows-latest
strategy:
matrix:
ReleaseName: [release, debug]
include:
- ReleaseName: release
ReleaseConfig: RelWithDebInfo
- ReleaseName: debug
ReleaseConfig: Debug
env:
OS_TAG: "win64"
steps:
- name: 'Add msbuild to PATH'
uses: microsoft/setup-msbuild@v1
- name: 'Checkout'
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Get the version
id: get_version
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
shell: bash
- name: Install dependencies
run: |
yarn install --immutable --immutable-cache --check-cache
yarn add electron@${{env.ElectronVersion}} -D
- name: Configure obs-studio-node
run: ./ci/configure-osn.cmd
env:
ReleaseName: ${{matrix.ReleaseName}}
- name: Build obs-studio-node
run: cmake --build ${{env.SLBUILDDIRECTORY}} --target install --config ${{matrix.ReleaseConfig}}
- name: Put version into package.json
if: startsWith(github.ref, 'refs/tags/')
run: node ci/bump-version.js "${{ steps.get_version.outputs.VERSION }}" "${{env.PACKAGE_PATH}}"
env:
PACKAGE_PATH: "${{env.SLFullDistributePath}}/${{env.InstallPath}}"
- name: Cache build
uses: actions/cache@v3
with:
path: |
${{env.SLBUILDDIRECTORY}}
tests/
key: ${{ runner.os }}-build-${{ matrix.ReleaseName }}-${{ github.sha }}
win64_tests:
name: 'Windows 64-bit tests'
runs-on: windows-latest
needs: [win64]
strategy:
matrix:
ReleaseName: [release, debug]
include:
- ReleaseName: release
ReleaseConfig: RelWithDebInfo
- ReleaseName: debug
ReleaseConfig: Debug
env:
OS_TAG: "win64"
steps:
- name: 'Add msbuild to PATH'
uses: microsoft/setup-msbuild@v1
- name: 'Checkout'
uses: actions/checkout@v3
with:
submodules: 'recursive'
- name: Get the version
id: get_version
run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
shell: bash
- name: Install dependencies
run: |
yarn install --immutable --immutable-cache --check-cache
yarn add electron@${{env.ElectronVersion}} -D
- name: Get build from cache
uses: actions/cache@v3
with:
path: |
${{env.SLBUILDDIRECTORY}}
tests/
key: ${{ runner.os }}-build-${{ matrix.ReleaseName }}-${{ github.sha }}
- name: 'Run tests'
continue-on-error: true
run: 'yarn run test'
env:
SLOBS_BE_STREAMKEY: ${{secrets.testsStreamKey}}
SLOBS_TEST_USER_POOL_TOKEN: ${{secrets.testsUserPoolToken}}
OSN_ACCESS_KEY_ID: ${{secrets.AWS_RELEASE_ACCESS_KEY_ID}}
OSN_SECRET_ACCESS_KEY: ${{secrets.AWS_RELEASE_SECRET_ACCESS_KEY}}
RELEASE_NAME: ${{matrix.ReleaseName}}
- name: Fetch symsrv-scripts
if: startsWith(github.ref, 'refs/tags/')
uses: actions/checkout@v3
with:
fetch-depth: 2
repository: stream-labs/symsrv-scripts
path: symsrv-scripts
- name: Run symbol server scripts
if: startsWith(github.ref, 'refs/tags/')
run: ./symsrv-scripts/main.bat "${{ github.workspace }}/symsrv-scripts" ".\main.ps1 -pdbPaths '${{ github.workspace }}\${{env.SLBUILDDIRECTORY}}\lib-streamlabs-ipc,${{ github.workspace }}\${{env.SLBUILDDIRECTORY}}\obs-studio-client,${{ github.workspace }}\${{env.SLBUILDDIRECTORY}}\obs-studio-server' -localSourceDir '${{ github.workspace }}' -repo_userId 'stream-labs' -repo_name 'obs-studio-node' -repo_branch '${{ github.sha }}' -subModules 'lib-streamlabs-ipc,stream-labs,lib-streamlabs-ipc,streamlabs'"
env:
AWS_SYMB_ACCESS_KEY_ID: ${{secrets.AWS_SYMB_ACCESS_KEY_ID}}
AWS_SYMB_SECRET_ACCESS_KEY: ${{secrets.AWS_SYMB_SECRET_ACCESS_KEY}}
shell: powershell
- name: 'Copy necessary dll files'
run: ./ci/copy-files.cmd
- name: 'Prepare tag artifact'
if: startsWith(github.ref, 'refs/tags/')
run: ./ci/prepare-artifact.cmd
- name: Tar artifact for deployment
if: startsWith(github.ref, 'refs/tags/')
run: tar -cvzf ${{env.TARGET_ARTIFACT}}.tar.gz -C ${{env.SLFullDistributePath}} ${{env.InstallPath}}
env:
TARGET_ARTIFACT: ${{env.PACKAGE_NAME}}-${{ steps.get_version.outputs.VERSION }}-${{matrix.ReleaseName}}-${{env.OS_TAG}}
- name: Configure AWS credentials
if: startsWith(github.ref, 'refs/tags/')
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{secrets.AWS_RELEASE_ACCESS_KEY_ID}}
aws-secret-access-key: ${{secrets.AWS_RELEASE_SECRET_ACCESS_KEY}}
aws-region: us-west-2
- name: Deploy
if: startsWith(github.ref, 'refs/tags/')
run: aws s3 cp ${{env.TARGET_ARTIFACT}}.tar.gz s3://${{env.RELEASE_BUCKET}} --acl public-read
env:
TARGET_ARTIFACT: ${{env.PACKAGE_NAME}}-${{ steps.get_version.outputs.VERSION }}-${{matrix.ReleaseName}}-${{env.OS_TAG}}