Created
January 28, 2022 10:53
-
-
Save Sg4Dylan/ef52532651e418031088002de97ae69d to your computer and use it in GitHub Desktop.
GitHub action workflow for building OBS plugin obs-libfdk on win64 platform
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 Build' | |
on: | |
push: | |
paths-ignore: | |
- '**.md' | |
branches: | |
- master | |
- 'release/**' | |
tags: | |
- '*' | |
env: | |
REPO_URL: https://github.com/obsproject/obs-studio/ | |
REPO_TAG: 27.1.3 | |
MACOS_CEF_BUILD_VERSION: '4638' | |
LINUX_CEF_BUILD_VERSION: '4638' | |
WINDOWS_CEF_BUILD_VERSION: '4638' | |
TWITCH_CLIENTID: ${{ secrets.TWITCH_CLIENT_ID }} | |
TWITCH_HASH: ${{ secrets.TWITCH_HASH }} | |
RESTREAM_CLIENTID: ${{ secrets.RESTREAM_CLIENTID }} | |
RESTREAM_HASH: ${{ secrets.RESTREAM_HASH }} | |
YOUTUBE_CLIENTID: ${{ secrets.YOUTUBE_CLIENTID }} | |
YOUTUBE_CLIENTID_HASH: ${{ secrets.YOUTUBE_CLIENTID_HASH }} | |
YOUTUBE_SECRET: ${{ secrets.YOUTUBE_SECRET }} | |
YOUTUBE_SECRET_HASH: ${{ secrets.YOUTUBE_SECRET_HASH }} | |
jobs: | |
win64: | |
name: 'Windows 64-bit' | |
runs-on: [windows-latest] | |
env: | |
QT_VERSION: '5.15.2' | |
CMAKE_GENERATOR: "Visual Studio 16 2019" | |
CMAKE_SYSTEM_VERSION: "10.0.18363.657" | |
WINDOWS_DEPS_VERSION: '2022-01-01' | |
WINDOWS_DEPS_CACHE_VERSION: '1' | |
VLC_VERSION: '3.0.0-git' | |
VIRTUALCAM-GUID: "A3FCE0F5-3493-419F-958A-ABA1250EC20B" | |
steps: | |
- name: 'Add msbuild to PATH' | |
uses: microsoft/[email protected] | |
- name: 'Checkout' | |
run: | | |
git clone --recurse-submodules --branch ${{ env.REPO_TAG }} --depth 1 ${{ env.REPO_URL }} | |
- name: 'Restore QT dependency from cache' | |
id: qt-cache | |
uses: actions/[email protected] | |
env: | |
CACHE_NAME: 'windows-qt-cache' | |
with: | |
path: ${{ github.workspace }}/obs-studio/cmbuild/QT | |
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.QT_VERSION }} | |
- name: 'Restore pre-built dependencies from cache' | |
id: deps-cache | |
uses: actions/[email protected] | |
env: | |
CACHE_NAME: 'windows-deps-cache' | |
with: | |
path: ${{ github.workspace }}/obs-studio/cmbuild/deps | |
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.WINDOWS_DEPS_VERSION }}-${{ env.WINDOWS_DEPS_CACHE_VERSION }} | |
- name: 'Restore VLC dependency from cache' | |
id: vlc-cache | |
uses: actions/[email protected] | |
env: | |
CACHE_NAME: 'windows-vlc-cache' | |
with: | |
path: ${{ github.workspace }}/obs-studio/cmbuild/vlc | |
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.VLC_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 }}/obs-studio/cmbuild/QT" | |
- name: 'Install prerequisite: Pre-built dependencies' | |
if: steps.deps-cache.outputs.cache-hit != 'true' | |
run: | | |
curl -L -O https://github.com/obsproject/obs-deps/releases/download/win-${{ env.WINDOWS_DEPS_VERSION }}/windows-deps-${{ env.WINDOWS_DEPS_VERSION }}.zip --retry 5 -C - | |
7z x windows-deps-${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}/obs-studio/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 }}/obs-studio/cmbuild/vlc" | |
- name: 'Install prerequisite: FDK-AAC' | |
run: | | |
cd ./obs-studio/cmbuild/deps/win64/include | |
git clone --recurse-submodules --branch v2.0.2 --depth 1 https://github.com/mstorsjo/fdk-aac | |
cd ./fdk-aac | |
cmake . -B build -DBUILD_PROGRAMS=YES -DBUILD_SHARED_LIBS=YES | |
cmake --build build --config Release | |
xcopy .\build\Release\fdk-aac.dll ..\..\bin | |
xcopy .\build\Release\fdk-aac.lib ..\..\bin | |
xcopy .\libSYS\include\FDK_audio.h .\ | |
xcopy .\libSYS\include\genericStds.h .\ | |
xcopy .\libSYS\include\machine_type.h .\ | |
xcopy .\libSYS\include\syslib_channelMapDescr.h .\ | |
xcopy .\libAACdec\include\aacdecoder_lib.h .\ | |
xcopy .\libAACenc\include\aacenc_lib.h .\ | |
- name: 'Configure' | |
run: | | |
cd ./obs-studio | |
mkdir ./build | |
mkdir ./build64 | |
cd ./build64 | |
cmake -G"${{ env.CMAKE_GENERATOR }}" -A"x64" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=false -DCOMPILE_D3D12_HOOK=true -DVLCPath="${{ github.workspace }}/obs-studio/cmbuild/vlc" -DDepsPath="${{ github.workspace }}/obs-studio/cmbuild/deps/win64" -DQTDIR="${{ github.workspace }}/obs-studio/cmbuild/QT/${{ env.QT_VERSION }}/msvc2019_64" -DENABLE_VLC=ON -DDISABLE_LIBFDK=false -DTWITCH_CLIENTID='${{ env.TWITCH_CLIENTID }}' -DTWITCH_HASH='${{ env.TWITCH_HASH }}' -DRESTREAM_CLIENTID='${{ env.RESTREAM_CLIENTID }}' -DRESTREAM_HASH='${{ env.RESTREAM_HASH }}' -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE -DVIRTUALCAM_GUID=${{ env.VIRTUALCAM-GUID }} .. | |
- name: 'Build' | |
run: msbuild /m /p:Configuration=RelWithDebInfo .\obs-studio\build64\obs-studio.sln | |
- name: 'Package' | |
if: success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') | |
run: | | |
$env:FILE_DATE=(Get-Date -UFormat "%F") | |
$env:FILE_NAME="${env:FILE_DATE}-${{ env.REPO_TAG }}-win64" | |
echo "FILE_NAME=${env:FILE_NAME}" >> ${env:GITHUB_ENV} | |
robocopy .\obs-studio\build64\rundir\RelWithDebInfo .\obs-studio\build\ /E /XF .gitignore | |
7z | |
- name: 'Publish' | |
if: success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') | |
uses: actions/[email protected] | |
with: | |
name: '${{ env.FILE_NAME }}' | |
path: obs-studio/build/* | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment