Skip to content

Volmeters unified callback (#1476) #610

Volmeters unified callback (#1476)

Volmeters unified callback (#1476) #610

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: 29.4.3
SLGenerator: Visual Studio 17 2022
SLDistributeDirectory: distribute
SLFullDistributePath: "streamlabs-build.app/distribute" # The .app extension is required to run macOS tests correctly.
LibOBSVersion: 29.1.3sl38
PACKAGE_NAME: osn
jobs:
macos64:
name: 'macOS'
runs-on: ${{ matrix.image }}
strategy:
matrix:
BuildReleases: [Release-x86_64, Release-arm64]
include:
- BuildReleases: Release-x86_64
image: macos-13
BuildConfig: RelWithDebInfo
ReleaseName: release
Architecture: x86_64
- BuildReleases: Release-arm64
image: macos-14
BuildConfig: RelWithDebInfo
ReleaseName: release
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}}
tagartifact: ${{ steps.get_version.outputs.VERSION }}
- 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'
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]
include:
- ReleaseName: release
ReleaseConfig: RelWithDebInfo
env:
OS_TAG: "win64"
steps:
- name: 'Add msbuild to PATH'
uses: microsoft/setup-msbuild@v1
- name: Install older build components
run: |
# For versions update see here: https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022
Set-Location "C:\Program Files (x86)\Microsoft Visual Studio\Installer\"
$InstallPath = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
$componentsToInstall= @(
"Microsoft.VisualStudio.Component.VC.v141.x86.x64"
"Microsoft.VisualStudio.Component.VC.14.39.17.9.x86.x64"
"Microsoft.VisualStudio.Component.VC.14.39.17.9.ATL"
)
[string]$workloadArgs = $componentsToInstall | ForEach-Object {" --add " + $_}
$Arguments = ('/c', "vs_installer.exe", 'modify', '--installPath', "`"$InstallPath`"",$workloadArgs, '--quiet', '--norestart', '--nocache')
# should be run twice
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
$process = Start-Process -FilePath cmd.exe -ArgumentList $Arguments -Wait -PassThru -WindowStyle Hidden
shell: powershell
- 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}}
tagartifact: ${{ steps.get_version.outputs.VERSION }}
- 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]
include:
- ReleaseName: release
ReleaseConfig: RelWithDebInfo
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: false
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: Get the version of aws cli
run: aws --version
shell: powershell
- name: Install specific version of AWS CLI
run: |
$version = "2.15.17"
$zipfile = "AWSCLIV2.zip"
Invoke-WebRequest -OutFile $zipfile "https://awscli.amazonaws.com/AWSCLIV2-$version.msi"
Start-Process msiexec.exe -Wait -ArgumentList "/i $zipfile /qn"
rm $zipfile
shell: pwsh
- name: Get the version of aws cli after install
run: aws --version
shell: powershell
- 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}}