Previously VLC was downloaded but was skipped since it could not be found. This sets the VLCPath to ensure it is found.
543 lines
26 KiB
YAML
543 lines
26 KiB
YAML
name: 'CI Multiplatform Build'
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
CEF_BUILD_VERSION: '3770'
|
|
CEF_VERSION: '75.1.16+g16a67c4+chromium-75.0.3770.100'
|
|
|
|
jobs:
|
|
macos64:
|
|
name: 'macOS 64-bit'
|
|
runs-on: [macos-latest]
|
|
env:
|
|
MACOS_DEPS_VERSION: '2020-04-24'
|
|
VLC_VERSION: '3.0.8'
|
|
SPARKLE_VERSION: '1.23.0'
|
|
QT_VERSION: '5.14.1'
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'recursive'
|
|
- name: 'Fetch Git Tags'
|
|
run: |
|
|
git fetch --prune --unshallow
|
|
echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
|
|
echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
|
|
echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
|
|
- name: 'Install prerequisites (Homebrew)'
|
|
shell: bash
|
|
run: |
|
|
if [ -d "$(brew --cellar)/swig" ]; then
|
|
brew unlink swig
|
|
fi
|
|
|
|
if [ -d "$(brew --cellar)/qt" ]; then
|
|
brew unlink qt
|
|
fi
|
|
|
|
brew bundle --file ./CI/scripts/macos/Brewfile
|
|
- name: 'Restore Chromium Embedded Framework from cache'
|
|
id: cef-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'cef-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION }}
|
|
- name: 'Restore pre-built dependencies from cache'
|
|
id: deps-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'deps-cache'
|
|
with:
|
|
path: /tmp/obsdeps
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.MACOS_DEPS_VERSION }}
|
|
- name: 'Restore VLC dependency from cache'
|
|
id: vlc-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'vlc-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/vlc-${{ env.VLC_VERSION }}
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.VLC_VERSION }}
|
|
- name: 'Restore Sparkle dependency from cache'
|
|
id: sparkle-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'sparkle-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/sparkle
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.SPARKLE_VERSION }}
|
|
- name: 'Install prerequisite: Pre-built dependencies'
|
|
if: steps.deps-cache.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
curl -L -O https://github.com/obsproject/obs-deps/releases/download/${{ env.MACOS_DEPS_VERSION }}/osx-deps-${{ env.MACOS_DEPS_VERSION }}.tar.gz
|
|
tar -xf ./osx-deps-${{ env.MACOS_DEPS_VERSION }}.tar.gz -C "/tmp"
|
|
- name: 'Install prerequisite: VLC'
|
|
if: steps.vlc-cache.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
curl -L -O https://downloads.videolan.org/vlc/${{ env.VLC_VERSION }}/vlc-${{ env.VLC_VERSION }}.tar.xz
|
|
if [ ! -d "${{ github.workspace }}/cmbuild" ]; then mkdir "${{ github.workspace }}/cmbuild"; fi
|
|
tar -xf ./vlc-${{ env.VLC_VERSION }}.tar.xz -C "${{ github.workspace }}/cmbuild"
|
|
- name: 'Install prerequisite: Sparkle'
|
|
if: steps.sparkle-cache.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
curl -L -o sparkle.tar.bz2 https://github.com/sparkle-project/Sparkle/releases/download/${{ env.SPARKLE_VERSION }}/Sparkle-${{ env.SPARKLE_VERSION }}.tar.bz2
|
|
mkdir ${{ github.workspace }}/cmbuild/sparkle
|
|
tar -xf ./sparkle.tar.bz2 -C ${{ github.workspace }}/cmbuild/sparkle
|
|
- name: 'Setup prerequisite: Sparkle'
|
|
shell: bash
|
|
run: sudo cp -R ${{ github.workspace }}/cmbuild/sparkle/Sparkle.framework /Library/Frameworks/Sparkle.framework
|
|
- name: 'Install prerequisite: Chromium Embedded Framework'
|
|
if: steps.cef-cache.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
curl -L -O https://obs-nightly.s3-us-west-2.amazonaws.com/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64.tar.bz2
|
|
tar -xf ./cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64.tar.bz2 -C ${{ github.workspace }}/cmbuild/
|
|
cd ${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64
|
|
sed -i '.orig' '/add_subdirectory(tests\/ceftests)/d' ./CMakeLists.txt
|
|
# target 10.11
|
|
sed -i '.orig' s/\"10.9\"/\"10.11\"/ ./cmake/cef_variables.cmake
|
|
mkdir build && cd build
|
|
cmake -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 ..
|
|
make -j4
|
|
mkdir libcef_dll
|
|
cd ../../
|
|
- name: 'Configure'
|
|
shell: bash
|
|
run: |
|
|
mkdir ./build
|
|
cd ./build
|
|
cmake -DENABLE_SPARKLE_UPDATER=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 -DQTDIR="/usr/local/Cellar/qt/${{ env.QT_VERSION }}" -DDepsPath="/tmp/obsdeps" -DVLCPath="${{ github.workspace }}/cmbuild/vlc-${{ env.VLC_VERSION }}" -DENABLE_VLC=ON -DBUILD_BROWSER=ON -DBROWSER_DEPLOY=ON -DBUILD_CAPTIONS=ON -DWITH_RTMPS=ON -DCEF_ROOT_DIR="${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64" ..
|
|
- name: 'Build'
|
|
shell: bash
|
|
working-directory: ${{ github.workspace }}/build
|
|
run: make -j4
|
|
- name: 'Install prerequisite: Packages app'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
shell: bash
|
|
run: |
|
|
curl -L -O https://s3-us-west-2.amazonaws.com/obs-nightly/Packages.pkg
|
|
sudo installer -pkg ./Packages.pkg -target /
|
|
- name: 'Install prerequisite: DMGbuild'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
shell: bash
|
|
run: |
|
|
pip3 install dmgbuild
|
|
- name: 'Create macOS application bundle'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
working-directory: ${{ github.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
if [ -d ./OBS.app ]; then rm -rf ./OBS.app; fi
|
|
mkdir -p OBS.app/Contents/MacOS
|
|
mkdir OBS.app/Contents/PlugIns
|
|
mkdir OBS.app/Contents/Resources
|
|
|
|
cp -R rundir/RelWithDebInfo/bin/ ./OBS.app/Contents/MacOS
|
|
cp -R rundir/RelWithDebInfo/data ./OBS.app/Contents/Resources
|
|
cp ../CI/scripts/macos/app/obs.icns ./OBS.app/Contents/Resources
|
|
cp -R rundir/RelWithDebInfo/obs-plugins/ ./OBS.app/Contents/PlugIns
|
|
cp ../CI/scripts/macos/app/Info.plist ./OBS.app/Contents
|
|
|
|
if [ -d ./OBS.app/Contents/Resources/data/obs-scripting ]; then
|
|
mv ./OBS.app/Contents/Resources/data/obs-scripting/obslua.so ./OBS.app/Contents/MacOS/
|
|
mv ./OBS.app/Contents/Resources/data/obs-scripting/_obspython.so ./OBS.app/Contents/MacOS/
|
|
mv ./OBS.app/Contents/Resources/data/obs-scripting/obspython.py ./OBS.app/Contents/MacOS/
|
|
rm -rf ./OBS.app/Contents/Resources/data/obs-scripting/
|
|
fi
|
|
|
|
install_name_tool -change libmbedtls.12.dylib @executable_path/../Frameworks/libmbedtls.12.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
|
install_name_tool -change libmbedcrypto.3.dylib @executable_path/../Frameworks/libmbedcrypto.3.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
|
install_name_tool -change libmbedx509.0.dylib @executable_path/../Frameworks/libmbedx509.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
|
|
|
../CI/scripts/macos/app/dylibBundler -cd -of -a ./OBS.app -q -f \
|
|
-s ./OBS.app/Contents/MacOS \
|
|
-s "${{ github.workspace }}/cmbuild/sparkle/Sparkle.framework" \
|
|
-x ./OBS.app/Contents/PlugIns/coreaudio-encoder.so \
|
|
-x ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so \
|
|
-x ./OBS.app/Contents/PlugIns/frontend-tools.so \
|
|
-x ./OBS.app/Contents/PlugIns/image-source.so \
|
|
-x ./OBS.app/Contents/PlugIns/linux-jack.so \
|
|
-x ./OBS.app/Contents/PlugIns/mac-avcapture.so \
|
|
-x ./OBS.app/Contents/PlugIns/mac-capture.so \
|
|
-x ./OBS.app/Contents/PlugIns/mac-decklink.so \
|
|
-x ./OBS.app/Contents/PlugIns/mac-syphon.so \
|
|
-x ./OBS.app/Contents/PlugIns/mac-vth264.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-browser.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-browser-page \
|
|
-x ./OBS.app/Contents/PlugIns/obs-ffmpeg.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-filters.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-transitions.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-vst.so \
|
|
-x ./OBS.app/Contents/PlugIns/rtmp-services.so \
|
|
-x ./OBS.app/Contents/MacOS/obs-ffmpeg-mux \
|
|
-x ./OBS.app/Contents/MacOS/obslua.so \
|
|
-x ./OBS.app/Contents/MacOS/_obspython.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-x264.so \
|
|
-x ./OBS.app/Contents/PlugIns/text-freetype2.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-libfdk.so \
|
|
-x ./OBS.app/Contents/PlugIns/obs-outputs.so
|
|
|
|
mv ./OBS.app/Contents/MacOS/libobs-opengl.so ./OBS.app/Contents/Frameworks
|
|
|
|
sudo cp -R "${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64/Release/Chromium Embedded Framework.framework" ./OBS.app/Contents/Frameworks/
|
|
sudo chown -R $(whoami) ./OBS.app/Contents/Frameworks/
|
|
install_name_tool -change /usr/local/Cellar/qt/${{ env.QT_VERSION }}/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/Plugins/obs-browser.so
|
|
install_name_tool -change /usr/local/Cellar/qt/${{ env.QT_VERSION }}/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/Plugins/obs-browser.so
|
|
install_name_tool -change /usr/local/Cellar/qt/${{ env.QT_VERSION }}/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/Plugins/obs-browser.so
|
|
|
|
cp ../CI/scripts/macos/app/OBSPublicDSAKey.pem ./OBS.app/Contents/Resources
|
|
|
|
plutil -insert CFBundleVersion -string ${{ env.OBS_GIT_TAG }}-${{ env.OBS_GIT_HASH }} ./OBS.app/Contents/Info.plist
|
|
plutil -insert CFBundleShortVersionString -string ${{ env.OBS_GIT_TAG }}-${{ env.OBS_GIT_HASH }} ./OBS.app/Contents/Info.plist
|
|
plutil -insert OBSFeedsURL -string https://obsproject.com/osx_update/feeds.xml ./OBS.app/Contents/Info.plist
|
|
plutil -insert SUFeedURL -string https://obsproject.com/osx_update/stable/updates.xml ./OBS.app/Contents/Info.plist
|
|
plutil -insert SUPublicDSAKeyFile -string OBSPublicDSAKey.pem ./OBS.app/Contents/Info.plist
|
|
- name: 'Package'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
working-directory: ${{ github.workspace }}/build
|
|
shell: bash
|
|
run: |
|
|
FILE_DATE=$(date +%Y-%m-%d)
|
|
FILE_NAME=$FILE_DATE-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-macOS.dmg
|
|
echo "::set-env name=FILE_NAME::${FILE_NAME}"
|
|
|
|
cp ../CI/scripts/macos/package/settings.json.template ./settings.json
|
|
sed -i '' 's#\$\$VERSION\$\$#${{ env.OBS_GIT_TAG }}#g' ./settings.json
|
|
sed -i '' 's#\$\$CI_PATH\$\$#../CI/scripts/macos#g' ./settings.json
|
|
sed -i '' 's#\$\$BUNDLE_PATH\$\$#${{ github.workspace }}/build#g' ./settings.json
|
|
|
|
dmgbuild "OBS-Studio ${{ env.OBS_GIT_TAG }}" "${FILE_NAME}" -s ./settings.json
|
|
mkdir ../nightly
|
|
sudo mv ./${FILE_NAME} ../nightly/${FILE_NAME}
|
|
|
|
- name: 'Publish'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
uses: actions/upload-artifact@v2-preview
|
|
with:
|
|
name: '${{ env.FILE_NAME }}'
|
|
path: ./nightly/*.dmg
|
|
ubuntu64:
|
|
name: 'Linux/Ubuntu 64-bit'
|
|
runs-on: [ubuntu-latest]
|
|
steps:
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'recursive'
|
|
- name: 'Fetch Git Tags'
|
|
run: |
|
|
git fetch --prune --unshallow
|
|
echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
|
|
echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
|
|
echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
|
|
- 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 \
|
|
libqt5svg5-dev \
|
|
swig
|
|
- name: 'Restore Chromium Embedded Framework from cache'
|
|
id: cef-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'cef-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_linux64
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION }}
|
|
- name: 'Install prerequisite: Chromium Embedded Framework'
|
|
if: steps.cef-cache.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.CEF_BUILD_VERSION }}_linux64.tar.bz2 -f --retry 5 -o cef.tar.bz2
|
|
if [ ! -d "${{ github.workspace }}/cmbuild" ]; then mkdir "${{ github.workspace }}/cmbuild"; fi
|
|
tar -C"${{ github.workspace }}/cmbuild" -xjf cef.tar.bz2
|
|
- name: 'Configure'
|
|
shell: bash
|
|
run: |
|
|
mkdir ./build
|
|
cd ./build
|
|
cmake -DUNIX_STRUCTURE=0 -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/obs-studio-portable" -DENABLE_VLC=ON -DBUILD_CAPTIONS=ON -DWITH_RTMPS=ON -DBUILD_BROWSER=ON -DCEF_ROOT_DIR="${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_linux64" ..
|
|
- name: 'Build'
|
|
shell: bash
|
|
working-directory: ${{ github.workspace }}/build
|
|
run: make -j4
|
|
- name: 'Package'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
shell: bash
|
|
run: |
|
|
FILE_DATE=$(date +%Y-%m-%d)
|
|
FILE_NAME=$FILE_DATE-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-linux64.tar.gz
|
|
echo "::set-env name=FILE_NAME::${FILE_NAME}"
|
|
cd ./build
|
|
sudo checkinstall --default --install=no --pkgname=obs-studio --fstrans=yes --backup=no --pkgversion="$(date +%Y%m%d)-git" --deldoc=yes
|
|
mkdir ../nightly
|
|
tar -cvzf "${FILE_NAME}" *.deb
|
|
mv "${FILE_NAME}" ../nightly/
|
|
cd -
|
|
- name: 'Publish'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
uses: actions/upload-artifact@v2-preview
|
|
with:
|
|
name: '${{ env.FILE_NAME }}'
|
|
path: './nightly/*.tar.gz'
|
|
win64:
|
|
name: 'Windows 64-bit'
|
|
runs-on: [windows-latest]
|
|
env:
|
|
QT_VERSION: '5.10.1'
|
|
CMAKE_GENERATOR: "Visual Studio 16 2019"
|
|
CMAKE_SYSTEM_VERSION: "10.0.18363.657"
|
|
WINDOWS_DEPS_VERSION: '2017'
|
|
VLC_VERSION: '3.0.0-git'
|
|
TWITCH-CLIENTID: ${{ secrets.TWITCH_CLIENTID }}
|
|
TWITCH-HASH: ${{ secrets.TWITCH_HASH }}
|
|
MIXER-CLIENTID: ${{ secrets.MIXER_CLIENTID }}
|
|
MIXER-HASH: ${{ secrets.MIXER_HASH }}
|
|
RESTREAM-CLIENTID: ${{ secrets.RESTREAM-CLIENTID }}
|
|
RESTREAM-HASH: ${{ secrets.RESTREAM-HASH }}
|
|
steps:
|
|
- name: 'Add msbuild to PATH'
|
|
uses: microsoft/setup-msbuild@v1.0.0
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'recursive'
|
|
- name: 'Fetch Git Tags'
|
|
shell: bash
|
|
run: |
|
|
git fetch --prune --unshallow
|
|
echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
|
|
echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
|
|
echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
|
|
- name: 'Restore QT dependency from cache'
|
|
id: qt-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'windows-qt-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/QT
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.QT_VERSION }}
|
|
- name: 'Restore pre-built dependencies from cache'
|
|
id: deps-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'windows-deps-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/deps
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.WINDOWS_DEPS_VERSION }}
|
|
- name: 'Restore VLC dependency from cache'
|
|
id: vlc-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'windows-vlc-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/vlc
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.VLC_VERSION }}
|
|
- name: 'Restore CEF dependency from cache (64 bit)'
|
|
id: cef-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'windows-cef-64-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmdbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_windows64_minimal
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION }}
|
|
- name: 'Install prerequisite: QT'
|
|
if: steps.qt-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -kLO https://cdn-fastly.obsproject.com/downloads/Qt_${{ env.QT_VERSION }}.7z -f --retry 5 -C -
|
|
7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}/cmbuild/QT"
|
|
- name: 'Install prerequisite: Pre-built dependencies'
|
|
if: steps.deps-cache.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: 'Install prerequisite: VLC'
|
|
if: steps.vlc-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -kL https://cdn-fastly.obsproject.com/downloads/vlc.zip -f --retry 5 -o vlc.zip
|
|
7z x vlc.zip -o"${{ github.workspace }}/cmbuild/vlc"
|
|
- name: 'Install prerequisite: Chromium Embedded Framework'
|
|
if: steps.cef-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.CEF_VERSION }}_windows64_minimal.zip -f --retry 5 -o cef.zip
|
|
7z x cef.zip -o"${{ github.workspace }}/cmbuild"
|
|
- name: 'Configure'
|
|
run: |
|
|
mkdir ./build
|
|
mkdir ./build64
|
|
cd ./build64
|
|
cmake -G"${{ env.CMAKE_GENERATOR }}" -A"x64" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=true -DBUILD_CAPTIONS=true -DCOMPILE_D3D12_HOOK=true -DVLCPath="${{ github.workspace }}/cmbuild/vlc" -DDepsPath="${{ github.workspace }}/cmbuild/deps/win64" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017_64" -DENABLE_VLC=ON -DCEF_ROOT_DIR="${{ github.workspace }}/cmdbuild/cef_binary_${{ env.CEF_VERSION }}_windows64_minimal" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE ..
|
|
- name: 'Build'
|
|
run: msbuild /m /p:Configuration=RelWithDebInfo .\build64\obs-studio.sln
|
|
- name: 'Package'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
run: |
|
|
$env:FILE_DATE=(Get-Date -UFormat "%F")
|
|
$env:FILE_NAME="${env:FILE_DATE}-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-win64.zip"
|
|
echo "::set-env name=FILE_NAME::${env:FILE_NAME}"
|
|
robocopy .\build64\rundir\RelWithDebInfo .\build\ /E /XF .gitignore
|
|
7z a ${env:FILE_NAME} .\build\*
|
|
- name: 'Publish'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
uses: actions/upload-artifact@v2-preview
|
|
with:
|
|
name: '${{ env.FILE_NAME }}'
|
|
path: '*-win64.zip'
|
|
|
|
win32:
|
|
name: 'Windows 32-bit'
|
|
runs-on: [windows-latest]
|
|
env:
|
|
QT_VERSION: '5.10.1'
|
|
CMAKE_GENERATOR: "Visual Studio 16 2019"
|
|
CMAKE_SYSTEM_VERSION: "10.0.18363.657"
|
|
WINDOWS_DEPS_VERSION: '2017'
|
|
TWITCH-CLIENTID: ${{ secrets.TWITCH_CLIENTID }}
|
|
TWITCH-HASH: ${{ secrets.TWITCH_HASH }}
|
|
MIXER-CLIENTID: ${{ secrets.MIXER_CLIENTID }}
|
|
MIXER-HASH: ${{ secrets.MIXER_HASH }}
|
|
RESTREAM-CLIENTID: ${{ secrets.RESTREAM-CLIENTID }}
|
|
RESTREAM-HASH: ${{ secrets.RESTREAM-HASH }}
|
|
steps:
|
|
- name: 'Add msbuild to PATH'
|
|
uses: microsoft/setup-msbuild@v1.0.0
|
|
- name: 'Checkout'
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: 'recursive'
|
|
- name: 'Fetch Git Tags'
|
|
shell: bash
|
|
run: |
|
|
git fetch --prune --unshallow
|
|
echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
|
|
echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
|
|
echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
|
|
- name: 'Restore QT dependency from cache'
|
|
id: qt-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'qt-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/QT
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.QT_VERSION }}
|
|
- name: 'Restore pre-built dependencies from cache'
|
|
id: deps-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'deps-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/deps
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.WINDOWS_DEPS_VERSION }}
|
|
- name: 'Restore VLC dependency from cache'
|
|
id: vlc-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'vlc-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmbuild/vlc
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.WINDOWS_VLC_VERSION }}
|
|
- name: 'Restore CEF dependency from cache (32 bit)'
|
|
id: cef-cache
|
|
uses: actions/cache@v1
|
|
env:
|
|
CACHE_NAME: 'cef-32-cache'
|
|
with:
|
|
path: ${{ github.workspace }}/cmdbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_windows32_minimal
|
|
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_VERSION }}
|
|
- name: 'Install prerequisite: QT'
|
|
if: steps.qt-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -kLO https://cdn-fastly.obsproject.com/downloads/Qt_${{ env.QT_VERSION }}.7z -f --retry 5 -C -
|
|
7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}/cmbuild/QT"
|
|
- name: 'Install prerequisite: Pre-built dependencies'
|
|
if: steps.deps-cache.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: 'Install prerequisite: VLC'
|
|
if: steps.vlc-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -kL https://cdn-fastly.obsproject.com/downloads/vlc.zip -f --retry 5 -o vlc.zip
|
|
7z x vlc.zip -o"${{ github.workspace }}/cmbuild/vlc"
|
|
- name: 'Install prerequisite: Chromium Embedded Framework'
|
|
if: steps.cef-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.CEF_VERSION }}_windows32_minimal.zip -f --retry 5 -o cef.zip
|
|
7z x cef.zip -o"${{ github.workspace }}/cmbuild"
|
|
- name: 'Configure'
|
|
run: |
|
|
mkdir ./build
|
|
mkdir ./build32
|
|
cd ./build32
|
|
cmake -G"${{ env.CMAKE_GENERATOR }}" -A"Win32" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DENABLE_VLC=ON -DBUILD_BROWSER=true -DBUILD_CAPTIONS=true -DCOMPILE_D3D12_HOOK=true -DVLCPath="${{ github.workspace }}/cmbuild/vlc" -DDepsPath="${{ github.workspace }}/cmbuild/deps/win32" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017" -DCEF_ROOT_DIR="${{ github.workspace }}/cmdbuild/cef_binary_${{ env.CEF_VERSION }}_windows32_minimal" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE ..
|
|
- name: 'Build'
|
|
run: msbuild /m /p:Configuration=RelWithDebInfo .\build32\obs-studio.sln
|
|
- name: 'Package'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
run: |
|
|
$env:FILE_DATE=(Get-Date -UFormat "%F")
|
|
$env:FILE_NAME="${env:FILE_DATE}-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-win32.zip"
|
|
echo "::set-env name=FILE_NAME::${env:FILE_NAME}"
|
|
robocopy .\build32\rundir\RelWithDebInfo .\build\ /E /XF .gitignore
|
|
7z a ${env:FILE_NAME} .\build\*
|
|
- name: 'Publish'
|
|
if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
|
|
uses: actions/upload-artifact@v2-preview
|
|
with:
|
|
name: '${{ env.FILE_NAME }}'
|
|
path: '*-win32.zip'
|