add ip to crashes what missing crash handler (#1358) #249
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: '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: 25.8.2 | |
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.68 | |
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}} | |
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' | |
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}} | |
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, 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: Get the version of aws cli | |
run: aws --version | |
shell: powershell | |
- name: Install specific version of AWS CLI | |
run: | | |
$version = "2.12.5" | |
$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: '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}} |