diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1b47445f..9792d7dd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,356 +1,346 @@ -name: "CI Multiplatform Build" - -on: - push: - paths-ignore: - - 'docs/**' - branches: - - master - tags: - - '[45].[0-9]+.[0-9]+*' - pull_request: - paths-ignore: - - 'docs/**' - - '**.md' - branches: - - master - -jobs: - windows: - name: 'Windows 32/64-bit' - runs-on: [windows-latest] - if: contains(github.event.head_commit.message, '[skip ci]') != true - env: - QT_CACHE_VERSION: '2' # Change whenever updating OBS dependencies URL, in order to force a cache reset - QT_VERSION: '5.15.2' - WINDOWS_DEPS_CACHE_VERSION: '1' # Change whenever updating Qt dependency URL, in order to force a cache reset - WINDOWS_DEPS_VERSION: '2019' - CMAKE_GENERATOR: "Visual Studio 16 2019" - CMAKE_SYSTEM_VERSION: "10.0" - steps: - - name: 'Add msbuild to PATH' - uses: microsoft/setup-msbuild@v1.0.2 - - name: 'Checkout obs-websocket' - uses: actions/checkout@v2 - with: - path: ${{ github.workspace }}/obs-websocket - submodules: 'recursive' - - name: 'Checkout OBS-Studio' - uses: actions/checkout@v2 - with: - repository: obsproject/obs-studio - path: ${{ github.workspace }}/obs-studio - submodules: 'recursive' - - name: 'Get OBS-Studio Git Info' - shell: bash - working-directory: ${{ github.workspace }}/obs-studio - run: | - git fetch --prune --unshallow - echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV - - name: 'Checkout last OBS-Studio release (${{ env.OBS_GIT_TAG }})' - shell: bash - working-directory: ${{ github.workspace }}/obs-studio - run: | - git checkout ${{ env.OBS_GIT_TAG }} - git submodule update - - name: 'Get obs-websocket Git Info' - shell: bash - working-directory: ${{ github.workspace }}/obs-websocket - run: | - git fetch --prune --unshallow - GIT_HASH=$(git rev-parse --short HEAD) - echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV - GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG="" - echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV - if [ "$GIT_TAG" ] ; then \ - VERSION="$GIT_TAG" ; \ - else \ - VERSION="$GIT_HASH-git" ; \ - fi - echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV - - name: 'Restore Cached Qt' - id: qtcache - uses: actions/cache@v2 - with: - path: Qt_${{ env.QT_VERSION }}.7z - key: 'qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }}' - restore-keys: | - qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }} - - name: 'Download Prerequisite: Qt' - if: steps.qtcache.outputs.cache-hit != 'true' - run: | - curl -kLO https://tt2468.net/dl/Qt_${{ env.QT_VERSION }}.7z -f --retry 5 -C - - - name: 'Extract Prerequisite: Qt' - run: | - 7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}\cmbuild\QT" - - name: 'Restore Cached OBS-Studio Dependencies' - id: obscache - uses: actions/cache@v2 - with: - path: ${{ github.workspace }}\cmbuild\deps\** - key: 'obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }}' - restore-keys: | - obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }} - - name: 'Install Prerequisite: Pre-built OBS-Studio dependencies' - if: steps.obscache.outputs.cache-hit != 'true' - run: | - curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C - - 7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}\cmbuild\deps" - - name: 'Restore OBS-Studio 32-bit Build v${{ env.OBS_GIT_TAG }} from Cache' - id: build-cache-obs-32 - uses: actions/cache@v2 - env: - CACHE_NAME: 'build-cache-obs-32' - with: - path: ${{ github.workspace }}/obs-studio/build32 - key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }} - restore-keys: | - ${{ runner.os }}-${{ env.CACHE_NAME }}- - - name: 'Configure OBS-Studio 32-bit' - if: steps.build-cache-obs-32.outputs.cache-hit != 'true' - working-directory: ${{ github.workspace }}/obs-studio - run: | - if(!(Test-Path -Path ".\build32")){New-Item -ItemType directory -Path .\build32} - cd .\build32 - cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win32" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF .. - - name: 'Build OBS-Studio 32-bit' - if: steps.build-cache-obs-32.outputs.cache-hit != 'true' - working-directory: ${{ github.workspace }}/obs-studio - run: | - msbuild /m /p:Configuration=RelWithDebInfo .\build32\libobs\libobs.vcxproj - msbuild /m /p:Configuration=RelWithDebInfo .\build32\UI\obs-frontend-api\obs-frontend-api.vcxproj - - name: 'Restore OBS-Studio 64-bit Build v${{ env.OBS_GIT_TAG }} from Cache' - id: build-cache-obs-64 - uses: actions/cache@v1 - env: - CACHE_NAME: 'build-cache-obs-64' - with: - path: ${{ github.workspace }}/obs-studio/build64 - key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }} - restore-keys: | - ${{ runner.os }}-${{ env.CACHE_NAME }}- - - name: 'Configure OBS-Studio 64-bit' - if: steps.build-cache-obs-64.outputs.cache-hit != 'true' - working-directory: ${{ github.workspace }}/obs-studio - run: | - if(!(Test-Path -Path ".\build64")){New-Item -ItemType directory -Path .\build64} - cd .\build64 - cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win64" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF .. - - name: 'Build OBS-Studio 64-bit' - if: steps.build-cache-obs-64.outputs.cache-hit != 'true' - working-directory: ${{ github.workspace }}/obs-studio - run: | - msbuild /m /p:Configuration=RelWithDebInfo .\build64\libobs\libobs.vcxproj - msbuild /m /p:Configuration=RelWithDebInfo .\build64\UI\obs-frontend-api\obs-frontend-api.vcxproj - - name: 'Configure obs-websocket 32-bit' - working-directory: ${{ github.workspace }}/obs-websocket - run: | - mkdir .\build32 - cd .\build32 - cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DLibObs_DIR="${{ github.workspace }}\obs-studio\build32\libobs" -DLIBOBS_INCLUDE_DIR="${{ github.workspace }}\obs-studio\libobs" -DLIBOBS_LIB="${{ github.workspace }}\obs-studio\build32\libobs\RelWithDebInfo\obs.lib" -DOBS_FRONTEND_LIB="${{ github.workspace }}\obs-studio\build32\UI\obs-frontend-api\RelWithDebInfo\obs-frontend-api.lib" .. - - name: 'Configure obs-websocket 64-bit' - working-directory: ${{ github.workspace }}/obs-websocket - run: | - mkdir .\build64 - cd .\build64 - cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DLibObs_DIR="${{ github.workspace }}\obs-studio\build64\libobs" -DLIBOBS_INCLUDE_DIR="${{ github.workspace }}\obs-studio\libobs" -DLIBOBS_LIB="${{ github.workspace }}\obs-studio\build64\libobs\RelWithDebInfo\obs.lib" -DOBS_FRONTEND_LIB="${{ github.workspace }}\obs-studio\build64\UI\obs-frontend-api\RelWithDebInfo\obs-frontend-api.lib" .. - - name: 'Build obs-websocket 32-bit' - working-directory: ${{ github.workspace }}/obs-websocket - run: msbuild /m /p:Configuration=RelWithDebInfo .\build32\obs-websocket.sln - - name: 'Build obs-websocket 64-bit' - working-directory: ${{ github.workspace }}/obs-websocket - run: msbuild /m /p:Configuration=RelWithDebInfo .\build64\obs-websocket.sln - - name: 'Set PR Artifact Filename' - shell: bash - run: | - if [ "${{ env.GIT_TAG }}" ] ; then \ - FILENAME="obs-websocket-${{ env.GIT_TAG }}-Windows" ; \ - else \ - FILENAME="obs-websocket-${{ env.GIT_HASH }}-git-Windows" ; \ - fi - echo "WIN_FILENAME=$FILENAME" >> $GITHUB_ENV - - name: 'Package obs-websocket' - working-directory: ${{ github.workspace }}/obs-websocket - run: | - mkdir package - cd package - 7z a "${{ env.WIN_FILENAME }}.zip" "..\release\*" - iscc ..\installer\installer-windows.generated.iss /O. /F"${{ env.WIN_FILENAME }}-Installer" - - name: 'Publish ${{ env.WIN_FILENAME }}.zip' - if: success() - uses: actions/upload-artifact@v2-preview - with: - name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows' - path: ${{ github.workspace }}/obs-websocket/package/*.zip - - name: 'Publish ${{ env.WIN_FILENAME }}-Installer.exe' - if: success() - uses: actions/upload-artifact@v2-preview - with: - name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows-Installer' - path: ${{ github.workspace }}/obs-websocket/package/*.exe - ubuntu64: - name: "Linux/Ubuntu 64-bit" - runs-on: [ubuntu-latest] - if: contains(github.event.head_commit.message, '[skip ci]') != true - steps: - - name: 'Checkout obs-websocket' - uses: actions/checkout@v2 - with: - path: ${{ github.workspace }}/obs-websocket - submodules: 'recursive' - - name: 'Checkout OBS-Studio' - uses: actions/checkout@v2 - with: - repository: obsproject/obs-studio - path: ${{ github.workspace }}/obs-studio - submodules: 'recursive' - - name: 'Get OBS-Studio Git Info' - shell: bash - working-directory: ${{ github.workspace }}/obs-studio - run: | - git fetch --prune --unshallow - echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV - - name: 'Checkout last OBS-Studio release (${{ env.OBS_GIT_TAG }})' - shell: bash - working-directory: ${{ github.workspace }}/obs-studio - run: | - git checkout ${{ env.OBS_GIT_TAG }} - git submodule update - - name: 'Get obs-websocket git info' - working-directory: ${{ github.workspace }}/obs-websocket - run: | - git fetch --prune --unshallow - GIT_HASH=$(git rev-parse --short HEAD) - echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV - GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG="" - echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV - if [ "$GIT_TAG" ] ; then \ - VERSION="$GIT_TAG" ; \ - else \ - VERSION="$GIT_HASH-git" ; \ - fi - echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV - - name: 'Install prerequisites (Apt)' - shell: bash - run: | - sudo dpkg --add-architecture amd64 - sudo apt-get -qq update - sudo apt-get install -y \ - build-essential \ - checkinstall \ - cmake \ - libasound2-dev \ - libavcodec-dev \ - libavdevice-dev \ - libavfilter-dev \ - libavformat-dev \ - libavutil-dev \ - libcurl4-openssl-dev \ - libfdk-aac-dev \ - libfontconfig-dev \ - libfreetype6-dev \ - libgl1-mesa-dev \ - libjack-jackd2-dev \ - libjansson-dev \ - libluajit-5.1-dev \ - libpulse-dev \ - libqt5x11extras5-dev \ - libspeexdsp-dev \ - libswresample-dev \ - libswscale-dev \ - libudev-dev \ - libv4l-dev \ - libva-dev \ - libvlc-dev \ - libx11-dev \ - libx264-dev \ - libxcb-randr0-dev \ - libxcb-shm0-dev \ - libxcb-xinerama0-dev \ - libxcomposite-dev \ - libxinerama-dev \ - libmbedtls-dev \ - pkg-config \ - python3-dev \ - qtbase5-dev \ - qtbase5-private-dev \ - libqt5svg5-dev \ - swig \ - libxcb-randr0-dev \ - libxcb-xfixes0-dev \ - libx11-xcb-dev \ - libxcb1-dev \ - libxss-dev \ - - name: 'Configure OBS-Studio' - working-directory: ${{ github.workspace }}/obs-studio - shell: bash - run: | - mkdir ./build - cd ./build - cmake -DDISABLE_PLUGINS=YES -DENABLE_SCRIPTING=NO -DUNIX_STRUCTURE=YES -DCMAKE_INSTALL_PREFIX=/usr .. - - name: 'Build OBS-Studio' - working-directory: ${{ github.workspace }}/obs-studio - shell: bash - run: | - set -e - cd ./build - make -j4 libobs obs-frontend-api - - name: 'Install OBS-Studio' - working-directory: ${{ github.workspace }}/obs-studio - shell: bash - run: | - cd ./build - sudo cp ./libobs/libobs.so /usr/lib - sudo cp ./UI/obs-frontend-api/libobs-frontend-api.so /usr/lib - sudo mkdir -p /usr/include/obs - sudo cp ../UI/obs-frontend-api/obs-frontend-api.h /usr/include/obs/obs-frontend-api.h - - name: 'Configure obs-websocket' - working-directory: ${{ github.workspace }}/obs-websocket - shell: bash - run: | - mkdir ./build - cd ./build - if [ "${{ env.GIT_TAG }}" ] ; then \ - cmake -DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=TRUE -DCMAKE_BUILD_TYPE=Release .. ; \ - else \ - cmake -DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=TRUE .. ; \ - fi - - name: 'Build obs-websocket' - working-directory: ${{ github.workspace }}/obs-websocket - shell: bash - run: | - set -e - cd ./build - make -j4 - - name: 'Set PR Artifact Filename' - shell: bash - run: | - if [ "${{ env.GIT_TAG }}" ] ; then \ - FILENAME="obs-websocket-${{ env.GIT_TAG }}-Ubuntu64.deb" ; \ - else \ - FILENAME="obs-websocket-${{ env.GIT_HASH }}-git-Ubuntu64.deb" ; \ - fi - echo "FILENAME=$FILENAME" >> $GITHUB_ENV - - name: 'Package ${{ env.FILENAME }}' - if: success() - working-directory: ${{ github.workspace }}/obs-websocket - shell: bash - run: | - cd ./build - sudo checkinstall -y --type=debian --fstrans=no -nodoc \ - --backup=no --deldoc=yes --install=no --pkgname=obs-websocket --pkgversion=${{ env.PACKAGE_VERSION }} \ - --pkglicense="GPLv2.0" --maintainer="${{ github.event.pusher.email }}" --pkggroup="video" \ - --pkgsource="${{ github.event.repository.html_url }}" \ - --requires="obs-studio,libqt5network5,libqt5concurrent5,qt5-image-formats-plugins" \ - --pakdir="../package" - sudo chmod ao+r ../package/* - sudo mv ../package/* ../package/${{ env.FILENAME }} - cd - - - name: 'Publish ${{ env.FILENAME }}' - if: success() - uses: actions/upload-artifact@v2-preview - with: - name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64' - path: '${{ github.workspace }}/obs-websocket/package/*.deb' +name: "CI Multiplatform Build" + +on: + push: + paths-ignore: + - 'docs/**' + branches: + - master + tags: + - '[45].[0-9]+.[0-9]+*' + pull_request: + paths-ignore: + - 'docs/**' + - '**.md' + branches: + - master + +jobs: + windows: + name: 'Windows 32/64-bit' + runs-on: [windows-latest] + if: contains(github.event.head_commit.message, '[skip ci]') != true + env: + QT_CACHE_VERSION: '2' # Change whenever updating OBS dependencies URL, in order to force a cache reset + QT_VERSION: '5.15.2' + WINDOWS_DEPS_CACHE_VERSION: '1' # Change whenever updating Qt dependency URL, in order to force a cache reset + WINDOWS_DEPS_VERSION: '2019' + CMAKE_GENERATOR: "Visual Studio 16 2019" + CMAKE_SYSTEM_VERSION: "10.0" + steps: + - name: 'Add msbuild to PATH' + uses: microsoft/setup-msbuild@v1.0.2 + - name: 'Checkout obs-websocket' + uses: actions/checkout@v2 + with: + path: ${{ github.workspace }}/obs-websocket + submodules: 'recursive' + - name: 'Checkout OBS-Studio' + uses: actions/checkout@v2 + with: + repository: obsproject/obs-studio + path: ${{ github.workspace }}/obs-studio + submodules: 'recursive' + - name: 'Get OBS-Studio Git Info' + shell: bash + working-directory: ${{ github.workspace }}/obs-studio + run: | + git fetch --prune --unshallow + echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV + - name: 'Checkout last OBS-Studio release (${{ env.OBS_GIT_TAG }})' + shell: bash + working-directory: ${{ github.workspace }}/obs-studio + run: | + git checkout ${{ env.OBS_GIT_TAG }} + git submodule update + - name: 'Get obs-websocket Git Info' + shell: bash + working-directory: ${{ github.workspace }}/obs-websocket + run: | + git fetch --prune --unshallow + GIT_HASH=$(git rev-parse --short HEAD) + echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV + GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG="" + echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV + if [ "$GIT_TAG" ] ; then \ + VERSION="$GIT_TAG" ; \ + else \ + VERSION="$GIT_HASH-git" ; \ + fi + echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV + - name: 'Restore Cached Qt' + id: qtcache + uses: actions/cache@v2 + with: + path: Qt_${{ env.QT_VERSION }}.7z + key: 'qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }}' + restore-keys: | + qtdep-${{ env.QT_CACHE_VERSION }} | ${{ runner.os }} + - name: 'Download Prerequisite: Qt' + if: steps.qtcache.outputs.cache-hit != 'true' + run: | + curl -kLO https://tt2468.net/dl/Qt_${{ env.QT_VERSION }}.7z -f --retry 5 -C - + - name: 'Extract Prerequisite: Qt' + run: | + 7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}\cmbuild\QT" + - name: 'Restore Cached OBS-Studio Dependencies' + id: obscache + uses: actions/cache@v2 + with: + path: ${{ github.workspace }}\cmbuild\deps\** + key: 'obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }}' + restore-keys: | + obsdep-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | ${{ runner.os }} + - name: 'Install Prerequisite: Pre-built OBS-Studio dependencies' + if: steps.obscache.outputs.cache-hit != 'true' + run: | + curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C - + 7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}\cmbuild\deps" + - name: 'Restore OBS-Studio 32-bit Build v${{ env.OBS_GIT_TAG }} from Cache' + id: build-cache-obs-32 + uses: actions/cache@v2 + env: + CACHE_NAME: 'build-cache-obs-32' + with: + path: ${{ github.workspace }}/obs-studio/build32 + key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }} + restore-keys: | + ${{ runner.os }}-${{ env.CACHE_NAME }}- + - name: 'Configure OBS-Studio 32-bit' + if: steps.build-cache-obs-32.outputs.cache-hit != 'true' + working-directory: ${{ github.workspace }}/obs-studio + run: | + if(!(Test-Path -Path ".\build32")){New-Item -ItemType directory -Path .\build32} + cd .\build32 + cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win32" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF .. + - name: 'Build OBS-Studio 32-bit' + if: steps.build-cache-obs-32.outputs.cache-hit != 'true' + working-directory: ${{ github.workspace }}/obs-studio + run: | + msbuild /m /p:Configuration=RelWithDebInfo .\build32\libobs\libobs.vcxproj + msbuild /m /p:Configuration=RelWithDebInfo .\build32\UI\obs-frontend-api\obs-frontend-api.vcxproj + - name: 'Restore OBS-Studio 64-bit Build v${{ env.OBS_GIT_TAG }} from Cache' + id: build-cache-obs-64 + uses: actions/cache@v1 + env: + CACHE_NAME: 'build-cache-obs-64' + with: + path: ${{ github.workspace }}/obs-studio/build64 + key: ${{ runner.os }}-${{ env.CACHE_NAME }}-${{ env.OBS_GIT_TAG }} + restore-keys: | + ${{ runner.os }}-${{ env.CACHE_NAME }}- + - name: 'Configure OBS-Studio 64-bit' + if: steps.build-cache-obs-64.outputs.cache-hit != 'true' + working-directory: ${{ github.workspace }}/obs-studio + run: | + if(!(Test-Path -Path ".\build64")){New-Item -ItemType directory -Path .\build64} + cd .\build64 + cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DDepsPath="${{ github.workspace }}\cmbuild\deps\win64" -DCOPIED_DEPENDENCIES=NO -DCOPY_DEPENDENCIES=YES -DBUILD_BROWSER=OFF .. + - name: 'Build OBS-Studio 64-bit' + if: steps.build-cache-obs-64.outputs.cache-hit != 'true' + working-directory: ${{ github.workspace }}/obs-studio + run: | + msbuild /m /p:Configuration=RelWithDebInfo .\build64\libobs\libobs.vcxproj + msbuild /m /p:Configuration=RelWithDebInfo .\build64\UI\obs-frontend-api\obs-frontend-api.vcxproj + - name: 'Configure obs-websocket 32-bit' + working-directory: ${{ github.workspace }}/obs-websocket + run: | + mkdir .\build32 + cd .\build32 + cmake -G "${{ env.CMAKE_GENERATOR }}" -A Win32 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019" -DLibObs_DIR="${{ github.workspace }}\obs-studio\build32\libobs" -DLIBOBS_INCLUDE_DIR="${{ github.workspace }}\obs-studio\libobs" -DLIBOBS_LIB="${{ github.workspace }}\obs-studio\build32\libobs\RelWithDebInfo\obs.lib" -DOBS_FRONTEND_LIB="${{ github.workspace }}\obs-studio\build32\UI\obs-frontend-api\RelWithDebInfo\obs-frontend-api.lib" .. + - name: 'Configure obs-websocket 64-bit' + working-directory: ${{ github.workspace }}/obs-websocket + run: | + mkdir .\build64 + cd .\build64 + cmake -G "${{ env.CMAKE_GENERATOR }}" -A x64 -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DQTDIR="${{ github.workspace }}\cmbuild\QT\${{ env.QT_VERSION }}\msvc2019_64" -DLibObs_DIR="${{ github.workspace }}\obs-studio\build64\libobs" -DLIBOBS_INCLUDE_DIR="${{ github.workspace }}\obs-studio\libobs" -DLIBOBS_LIB="${{ github.workspace }}\obs-studio\build64\libobs\RelWithDebInfo\obs.lib" -DOBS_FRONTEND_LIB="${{ github.workspace }}\obs-studio\build64\UI\obs-frontend-api\RelWithDebInfo\obs-frontend-api.lib" .. + - name: 'Build obs-websocket 32-bit' + working-directory: ${{ github.workspace }}/obs-websocket + run: msbuild /m /p:Configuration=RelWithDebInfo .\build32\obs-websocket.sln + - name: 'Build obs-websocket 64-bit' + working-directory: ${{ github.workspace }}/obs-websocket + run: msbuild /m /p:Configuration=RelWithDebInfo .\build64\obs-websocket.sln + - name: 'Set PR Artifact Filename' + shell: bash + run: | + echo "WIN_FILENAME=obs-websocket-${{ env.PACKAGE_VERSION }}-Windows" >> $GITHUB_ENV + - name: 'Package obs-websocket' + working-directory: ${{ github.workspace }}/obs-websocket + run: | + mkdir package + cd package + 7z a "${{ env.WIN_FILENAME }}.zip" "..\release\*" + iscc ..\installer\installer-windows.generated.iss /O. /F"${{ env.WIN_FILENAME }}-Installer" + - name: 'Publish ${{ env.WIN_FILENAME }}.zip' + if: success() + uses: actions/upload-artifact@v2-preview + with: + name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows' + path: ${{ github.workspace }}/obs-websocket/package/*.zip + - name: 'Publish ${{ env.WIN_FILENAME }}-Installer.exe' + if: success() + uses: actions/upload-artifact@v2-preview + with: + name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Windows-Installer' + path: ${{ github.workspace }}/obs-websocket/package/*.exe + ubuntu64: + name: "Linux/Ubuntu 64-bit" + runs-on: [ubuntu-latest] + if: contains(github.event.head_commit.message, '[skip ci]') != true + steps: + - name: 'Checkout obs-websocket' + uses: actions/checkout@v2 + with: + path: ${{ github.workspace }}/obs-websocket + submodules: 'recursive' + - name: 'Checkout OBS-Studio' + uses: actions/checkout@v2 + with: + repository: obsproject/obs-studio + path: ${{ github.workspace }}/obs-studio + submodules: 'recursive' + - name: 'Get OBS-Studio Git Info' + shell: bash + working-directory: ${{ github.workspace }}/obs-studio + run: | + git fetch --prune --unshallow + echo "OBS_GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + echo "OBS_GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV + - name: 'Checkout last OBS-Studio release (${{ env.OBS_GIT_TAG }})' + shell: bash + working-directory: ${{ github.workspace }}/obs-studio + run: | + git checkout ${{ env.OBS_GIT_TAG }} + git submodule update + - name: 'Get obs-websocket git info' + working-directory: ${{ github.workspace }}/obs-websocket + run: | + git fetch --prune --unshallow + GIT_HASH=$(git rev-parse --short HEAD) + echo "GIT_HASH=$GIT_HASH" >> $GITHUB_ENV + GIT_TAG=$(git describe --exact-match --tags --abbrev=0) || GIT_TAG="" + echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV + if [ "$GIT_TAG" ] ; then \ + VERSION="$GIT_TAG" ; \ + else \ + VERSION="1-$GIT_HASH-git" ; \ + fi + echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV + - name: 'Install prerequisites (Apt)' + shell: bash + run: | + sudo dpkg --add-architecture amd64 + sudo apt-get -qq update + sudo apt-get install -y \ + build-essential \ + checkinstall \ + cmake \ + libasound2-dev \ + libavcodec-dev \ + libavdevice-dev \ + libavfilter-dev \ + libavformat-dev \ + libavutil-dev \ + libcurl4-openssl-dev \ + libfdk-aac-dev \ + libfontconfig-dev \ + libfreetype6-dev \ + libgl1-mesa-dev \ + libjack-jackd2-dev \ + libjansson-dev \ + libluajit-5.1-dev \ + libpulse-dev \ + libqt5x11extras5-dev \ + libspeexdsp-dev \ + libswresample-dev \ + libswscale-dev \ + libudev-dev \ + libv4l-dev \ + libva-dev \ + libvlc-dev \ + libx11-dev \ + libx264-dev \ + libxcb-randr0-dev \ + libxcb-shm0-dev \ + libxcb-xinerama0-dev \ + libxcomposite-dev \ + libxinerama-dev \ + libmbedtls-dev \ + pkg-config \ + python3-dev \ + qtbase5-dev \ + qtbase5-private-dev \ + libqt5svg5-dev \ + swig \ + libxcb-randr0-dev \ + libxcb-xfixes0-dev \ + libx11-xcb-dev \ + libxcb1-dev \ + libxss-dev \ + - name: 'Configure OBS-Studio' + working-directory: ${{ github.workspace }}/obs-studio + shell: bash + run: | + mkdir ./build + cd ./build + cmake -DDISABLE_PLUGINS=YES -DENABLE_SCRIPTING=NO -DUNIX_STRUCTURE=YES -DCMAKE_INSTALL_PREFIX=/usr .. + - name: 'Build OBS-Studio' + working-directory: ${{ github.workspace }}/obs-studio + shell: bash + run: | + set -e + cd ./build + make -j4 libobs obs-frontend-api + - name: 'Install OBS-Studio' + working-directory: ${{ github.workspace }}/obs-studio + shell: bash + run: | + cd ./build + sudo cp ./libobs/libobs.so /usr/lib + sudo cp ./UI/obs-frontend-api/libobs-frontend-api.so /usr/lib + sudo mkdir -p /usr/include/obs + sudo cp ../UI/obs-frontend-api/obs-frontend-api.h /usr/include/obs/obs-frontend-api.h + - name: 'Configure obs-websocket' + working-directory: ${{ github.workspace }}/obs-websocket + shell: bash + run: | + mkdir ./build + cd ./build + if [ "${{ env.GIT_TAG }}" ] ; then \ + cmake -DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=TRUE -DCMAKE_BUILD_TYPE=Release .. ; \ + else \ + cmake -DLIBOBS_INCLUDE_DIR=${{ github.workspace }}/obs-studio/libobs -DCMAKE_INSTALL_PREFIX=/usr -DUSE_UBUNTU_FIX=TRUE .. ; \ + fi + - name: 'Build obs-websocket' + working-directory: ${{ github.workspace }}/obs-websocket + shell: bash + run: | + set -e + cd ./build + make -j4 + - name: 'Set PR Artifact Filename' + shell: bash + run: | + echo "LINUX_FILENAME=obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64.deb" >> $GITHUB_ENV + - name: 'Package ${{ env.LINUX_FILENAME }}' + if: success() + working-directory: ${{ github.workspace }}/obs-websocket + shell: bash + run: | + cd ./build + sudo checkinstall -y --type=debian --fstrans=no -nodoc \ + --backup=no --deldoc=yes --install=no --pkgname=obs-websocket --pkgversion=${{ env.PACKAGE_VERSION }} \ + --pkglicense="GPLv2.0" --maintainer="${{ github.event.pusher.email }}" --pkggroup="video" \ + --pkgsource="${{ github.event.repository.html_url }}" \ + --requires="obs-studio,libqt5network5,libqt5concurrent5,qt5-image-formats-plugins" \ + --pakdir="../package" + sudo chmod ao+r ../package/* + sudo mv ../package/* ../package/${{ env.LINUX_FILENAME }} + cd - + - name: 'Publish ${{ env.LINUX_FILENAME }}' + if: success() + uses: actions/upload-artifact@v2-preview + with: + name: 'obs-websocket-${{ env.PACKAGE_VERSION }}-Ubuntu64' + path: '${{ github.workspace }}/obs-websocket/package/*.deb'