mirror of
https://github.com/occ-ai/obs-localvocal
synced 2024-11-07 18:57:14 +00:00
4638ce80fe
* Remove Cublas input from build script * Remove CUDA Toolkit installation and curl submodule
275 lines
11 KiB
YAML
275 lines
11 KiB
YAML
name: Build Project
|
|
on:
|
|
workflow_call:
|
|
jobs:
|
|
check-event:
|
|
name: Check GitHub Event Data 📡
|
|
runs-on: ubuntu-22.04
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
outputs:
|
|
package: ${{ steps.setup.outputs.package }}
|
|
codesign: ${{ steps.setup.outputs.codesign }}
|
|
notarize: ${{ steps.setup.outputs.notarize }}
|
|
config: ${{ steps.setup.outputs.config }}
|
|
commitHash: ${{ steps.setup.outputs.commitHash }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Check Event Data ☑️
|
|
id: setup
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
run: |
|
|
: Check Event Data ☑️
|
|
if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
|
|
|
|
case "${GITHUB_EVENT_NAME}" in
|
|
pull_request)
|
|
config_data=('codesign:false' 'notarize:false' 'package:false' 'config:RelWithDebInfo')
|
|
if [[ ${{ contains(github.event.pull_request.labels.*.name, 'Seeking Testers') }} = true ]]; then
|
|
config_data[0]='codesign:true'
|
|
config_data[2]='package:true'
|
|
fi
|
|
;;
|
|
push)
|
|
config_data=('codesign:true' 'notarize:false' 'package:true' 'config:RelWithDebInfo')
|
|
if [[ ${GITHUB_REF_NAME} =~ [0-9]+.[0-9]+.[0-9]+(-(rc|beta).+)? ]]; then
|
|
config_data[1]='notarize:true'
|
|
config_data[3]='config:Release'
|
|
fi
|
|
;;
|
|
workflow_dispatch)
|
|
config_data=('codesign:true' 'notarize:false' 'package:false' 'config:RelWithDebInfo')
|
|
;;
|
|
schedule)
|
|
config_data=('codesign:true' 'notarize:false' 'package:true' 'config:RelWithDebInfo')
|
|
;;
|
|
*) ;;
|
|
esac
|
|
|
|
for config in "${config_data[@]}"; do
|
|
IFS=':' read -r key value <<< "${config}"
|
|
echo "${key}=${value}" >> $GITHUB_OUTPUT
|
|
done
|
|
echo "commitHash=${GITHUB_SHA:0:9}" >> $GITHUB_OUTPUT
|
|
|
|
macos-build:
|
|
name: Build for macOS 🍏
|
|
runs-on: macos-13
|
|
needs: check-event
|
|
strategy:
|
|
matrix:
|
|
architecture: [x86_64, arm64]
|
|
defaults:
|
|
run:
|
|
shell: zsh --no-rcs --errexit --pipefail {0}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: Set Up Environment 🔧
|
|
id: setup
|
|
run: |
|
|
: Set Up Environment 🔧
|
|
if (( ${+RUNNER_DEBUG} )) setopt XTRACE
|
|
|
|
print '::group::Clean Homebrew Environment'
|
|
typeset -a to_remove=()
|
|
|
|
if (( #to_remove > 0 )) brew uninstall --ignore-dependencies ${to_remove}
|
|
print '::endgroup::'
|
|
|
|
local product_name
|
|
local product_version
|
|
read -r product_name product_version <<< \
|
|
"$(jq -r '. | {name, version} | join(" ")' buildspec.json)"
|
|
|
|
print "pluginName=${product_name}" >> $GITHUB_OUTPUT
|
|
print "pluginVersion=${product_version}" >> $GITHUB_OUTPUT
|
|
|
|
- uses: actions/cache@v3
|
|
id: ccache-cache
|
|
with:
|
|
path: ${{ github.workspace }}/.ccache
|
|
key: ${{ runner.os }}-ccache-${{ needs.check-event.outputs.config }}
|
|
restore-keys: |
|
|
${{ runner.os }}-ccache-
|
|
|
|
- name: Set Up Codesigning 🔑
|
|
uses: ./.github/actions/setup-macos-codesigning
|
|
if: ${{ fromJSON(needs.check-event.outputs.codesign) }}
|
|
id: codesign
|
|
with:
|
|
codesignIdentity: ${{ secrets.MACOS_SIGNING_APPLICATION_IDENTITY }}
|
|
installerIdentity: ${{ secrets.MACOS_SIGNING_INSTALLER_IDENTITY }}
|
|
codesignCertificate: ${{ secrets.MACOS_SIGNING_CERT }}
|
|
certificatePassword: ${{ secrets.MACOS_SIGNING_CERT_PASSWORD }}
|
|
keychainPassword: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }}
|
|
provisioningProfile: ${{ secrets.MACOS_SIGNING_PROVISIONING_PROFILE }}
|
|
notarizationUser: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}
|
|
notarizationPassword: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
|
|
|
|
- name: Build Plugin 🧱
|
|
uses: ./.github/actions/build-plugin
|
|
with:
|
|
target: macos-${{ matrix.architecture }}
|
|
config: ${{ needs.check-event.outputs.config }}
|
|
codesign: ${{ fromJSON(needs.check-event.outputs.codesign) }}
|
|
codesignIdent: ${{ steps.codesign.outputs.codesignIdent }}
|
|
env:
|
|
MACOS_ARCH: ${{ matrix.architecture }}
|
|
|
|
- name: Package Plugin 📀
|
|
uses: ./.github/actions/package-plugin
|
|
with:
|
|
target: macos-${{ matrix.architecture }}
|
|
config: ${{ needs.check-event.outputs.config }}
|
|
package: ${{ fromJSON(needs.check-event.outputs.package) }}
|
|
codesign: ${{ fromJSON(needs.check-event.outputs.codesign) && fromJSON(steps.codesign.outputs.haveCodesignIdent) }}
|
|
codesignIdent: ${{ steps.codesign.outputs.codesignIdent }}
|
|
installerIdent: ${{ steps.codesign.outputs.installerIdent }}
|
|
codesignTeam: ${{ steps.codesign.outputs.codesignTeam }}
|
|
notarize: ${{ fromJSON(needs.check-event.outputs.notarize) && fromJSON(steps.codesign.outputs.haveNotarizationUser) }}
|
|
codesignUser: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}
|
|
codesignPass: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
|
|
env:
|
|
MACOS_ARCH: ${{ matrix.architecture }}
|
|
|
|
- name: Upload Artifacts 📡
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-macos-${{ matrix.architecture }}-${{ needs.check-event.outputs.commitHash }}
|
|
path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-macos-${{ matrix.architecture }}.*
|
|
|
|
- name: Upload Debug Symbol Artifacts 🪲
|
|
uses: actions/upload-artifact@v3
|
|
if: ${{ needs.check-event.outputs.config == 'Release' }}
|
|
with:
|
|
name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-macos-${{ matrix.architecture }}-${{ needs.check-event.outputs.commitHash }}-dSYMs
|
|
path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-macos-${{ matrix.architecture }}-dSYMs.*
|
|
|
|
ubuntu-build:
|
|
name: Build for Ubuntu 🐧
|
|
runs-on: ubuntu-22.04
|
|
needs: check-event
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: Set Up Environment 🔧
|
|
id: setup
|
|
run: |
|
|
: Set Up Environment 🔧
|
|
if [[ "${RUNNER_DEBUG}" ]]; then set -x; fi
|
|
|
|
read -r product_name product_version <<< \
|
|
"$(jq -r '. | {name, version} | join(" ")' buildspec.json)"
|
|
|
|
echo "pluginName=${product_name}" >> $GITHUB_OUTPUT
|
|
echo "pluginVersion=${product_version}" >> $GITHUB_OUTPUT
|
|
|
|
- uses: actions/cache@v3
|
|
id: ccache-cache
|
|
with:
|
|
path: ${{ github.workspace }}/.ccache
|
|
key: ${{ runner.os }}-ccache-x86_64-${{ needs.check-event.outputs.config }}
|
|
restore-keys: |
|
|
${{ runner.os }}-ccache-x86_64-
|
|
|
|
- name: Set up Homebrew 🍺
|
|
uses: Homebrew/actions/setup-homebrew@master
|
|
|
|
- name: Build Plugin 🧱
|
|
uses: ./.github/actions/build-plugin
|
|
with:
|
|
target: x86_64
|
|
config: ${{ needs.check-event.outputs.config }}
|
|
|
|
- name: Package Plugin 📀
|
|
uses: ./.github/actions/package-plugin
|
|
with:
|
|
package: ${{ fromJSON(needs.check-event.outputs.package) }}
|
|
target: x86_64
|
|
config: ${{ needs.check-event.outputs.config }}
|
|
|
|
- name: Upload Source Tarball 🗜️
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-sources-${{ needs.check-event.outputs.commitHash }}
|
|
path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-source.*
|
|
|
|
- name: Upload Artifacts 📡
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-22.04-x86_64-${{ needs.check-event.outputs.commitHash }}
|
|
path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-x86_64*.*
|
|
|
|
- name: Upload debug symbol artifacts 🪲
|
|
uses: actions/upload-artifact@v3
|
|
if: ${{ fromJSON(needs.check-event.outputs.package) }}
|
|
with:
|
|
name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-ubuntu-22.04-x86_64-${{ needs.check-event.outputs.commitHash }}-dbgsym
|
|
path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-x86_64*-dbgsym.ddeb
|
|
|
|
windows-build:
|
|
name: Build for Windows 🪟
|
|
runs-on: windows-2022
|
|
needs: check-event
|
|
strategy:
|
|
matrix:
|
|
cublas: [cpu, 12.2.0, 11.8.0]
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: Set Up Environment 🔧
|
|
id: setup
|
|
run: |
|
|
# Set Up Environment 🔧
|
|
if ( $Env:RUNNER_DEBUG -ne $null ) {
|
|
Set-PSDebug -Trace 1
|
|
}
|
|
|
|
$BuildSpec = Get-Content -Path buildspec.json -Raw | ConvertFrom-Json
|
|
$ProductName = $BuildSpec.name
|
|
$ProductVersion = $BuildSpec.version
|
|
|
|
"pluginName=${ProductName}" >> $env:GITHUB_OUTPUT
|
|
"pluginVersion=${ProductVersion}" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Build Plugin 🧱
|
|
uses: ./.github/actions/build-plugin
|
|
with:
|
|
target: x64
|
|
config: ${{ needs.check-event.outputs.config }}
|
|
cublas: ${{ matrix.cublas }}
|
|
|
|
- name: Package Plugin 📀
|
|
uses: ./.github/actions/package-plugin
|
|
with:
|
|
target: x64
|
|
config: ${{ needs.check-event.outputs.config }}
|
|
package: ${{ fromJSON(needs.check-event.outputs.package) }}
|
|
cublas: ${{ matrix.cublas }}
|
|
|
|
- name: Upload Artifacts 📡
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: ${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-windows-x64-${{ matrix.cublas }}-${{ needs.check-event.outputs.commitHash }}
|
|
path: ${{ github.workspace }}/release/${{ steps.setup.outputs.pluginName }}-${{ steps.setup.outputs.pluginVersion }}-windows-x64*.*
|