remove aws instal on CI and update version of get function package (#… #258
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: '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}} |