build_deps #5
Workflow file for this run
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: build_deps | |
#on: | |
# push: | |
# branches: | |
# - streamlabs | |
# tags: | |
# - '20[2-9][0-9]-[0-9][0-9]-[0-9][0-9].*' | |
# pull_request: | |
# paths-ignore: | |
# - '**.md' | |
# branches: | |
# - streamlabs | |
on: | |
push: | |
branches: | |
- '**' # This will match any branch name | |
tags: | |
- '*' | |
concurrency: | |
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
jobs: | |
pre-checks: | |
name: Run Pre-Checks | |
runs-on: ubuntu-22.04 | |
defaults: | |
run: | |
shell: bash | |
outputs: | |
seekingTesters: ${{ steps.checks.outputs.seekingTesters }} | |
shortHash: ${{ steps.checks.outputs.shortHash }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Check for GitHub Labels | |
id: checks | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
: Check for GitHub Labels | |
case "${GITHUB_EVENT_NAME}" in | |
pull_request) | |
if gh pr view ${{ github.event.number }} --json labels \ | |
| jq -e -r '.labels[] | select(.name == "Seeking Testers")' > /dev/null; then | |
echo "seekingTesters=true" >> $GITHUB_OUTPUT | |
else | |
echo "seekingTesters=false" >> $GITHUB_OUTPUT | |
fi | |
;; | |
*) | |
echo "seekingTesters=false" >> $GITHUB_OUTPUT | |
;; | |
esac | |
echo "shortHash=${GITHUB_SHA:0:9}" >> $GITHUB_OUTPUT | |
ffmpeg-macos-build: | |
name: Build FFmpeg for macOS | |
runs-on: macos-14 | |
needs: pre-checks | |
strategy: | |
fail-fast: true | |
matrix: | |
target: [macos-arm64, macos-x86_64] | |
include: | |
- target: macos-arm64 | |
config: Release | |
type: static | |
- target: macos-x86_64 | |
config: Release | |
type: static | |
defaults: | |
run: | |
shell: zsh --no-rcs --errexit --pipefail {0} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
id: setup | |
run: | | |
print '::group::Enable Xcode 15.2' | |
sudo xcode-select --switch /Applications/Xcode_15.2.app/Contents/Developer | |
print '::endgroup::' | |
local -a to_remove=() | |
for formula (llvm gcc postgresql openjdk sox libsndfile flac libvorbis opusfile \ | |
libogg composer php gd freetype fontconfig webp libpng lame libtiff opus kotlin \ | |
sbt libxft libxcb) { | |
if [[ -d /usr/local/opt/${formula} ]] to_remove+=(${formula}) | |
} | |
if (( #to_remove )) brew uninstall --ignore-dependencies ${to_remove} | |
local -r sha_string=${{ github.sha }} | |
local -r target='${{ matrix.target }}' | |
artifact_name="ffmpeg-${target}-${{ needs.pre-checks.outputs.shortHash }}" | |
file_name="${target%%-*}-ffmpeg-${sha_string}-${target##*-}.tar.xz" | |
dsym_artifact_name="ffmpeg-${target}-dSYMs-${{ needs.pre-checks.outputs.shortHash }}" | |
dsym_file_name="${target%%-*}-ffmpeg-${sha_string}-${target##*-}-dSYMs.tar.xz" | |
print "artifactName=${artifact_name}" >> $GITHUB_OUTPUT | |
print "artifactFileName=${file_name}" >> $GITHUB_OUTPUT | |
print "dsymArtifactName=${dsym_artifact_name}" >> $GITHUB_OUTPUT | |
print "dsymArtifactFileName=${dsym_file_name}" >> $GITHUB_OUTPUT | |
print "ccacheDate=${sha_string}" >> $GITHUB_OUTPUT | |
- name: Restore Compilation Cache | |
id: ccache-cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: ${{ github.workspace }}/.ccache | |
key: ${{ matrix.target }}-ccache-ffmpeg-${{ steps.setup.outputs.ccacheDate }} | |
restore-keys: | | |
${{ matrix.target }}-ccache-ffmpeg- | |
- name: Build FFmpeg | |
uses: ./.github/actions/build-ffmpeg | |
with: | |
target: ${{ matrix.target }} | |
type: ${{ matrix.type }} | |
config: ${{ matrix.config }} | |
env: | |
github_hash: ${{ github.sha }} | |
- name: Publish Build Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.artifactName }} | |
path: ${{ github.workspace }}/${{ matrix.target }}/${{ steps.setup.outputs.artifactFileName }} | |
- name: Publish Debug Symbol Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.dsymArtifactName }} | |
path: ${{ github.workspace }}/${{ matrix.target }}/${{ steps.setup.outputs.dsymArtifactFileName }} | |
- name: Save Compilation Cache | |
if: github.event_name == 'push' | |
uses: actions/cache/save@v4 | |
with: | |
path: ${{ github.workspace }}/.ccache | |
key: ${{ matrix.target }}-ccache-ffmpeg-${{ steps.setup.outputs.ccacheDate }} | |
ffmpeg-windows-build: | |
name: Build FFmpeg for Windows | |
runs-on: windows-2022 | |
needs: pre-checks | |
strategy: | |
fail-fast: true | |
matrix: | |
target: [x64, x86] | |
include: | |
- target: x64 | |
config: Release | |
type: static | |
- target: x86 | |
config: Release | |
type: static | |
defaults: | |
run: | |
shell: pwsh | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
id: setup | |
run: | | |
# Setup Environment | |
$Target='${{ matrix.target }}' | |
$ArtifactName="ffmpeg-windows-${Target}-${{ needs.pre-checks.outputs.shortHash }}" | |
$FileName="windows-ffmpeg-$(Get-Date -Format 'yyyy-MM-dd')-${Target}.zip" | |
"artifactName=${ArtifactName}" >> $env:GITHUB_OUTPUT | |
"artifactFileName=${FileName}" >> $env:GITHUB_OUTPUT | |
- name: Build FFmpeg | |
uses: ./.github/actions/build-ffmpeg | |
with: | |
target: ${{ matrix.target }} | |
type: ${{ matrix.type }} | |
config: ${{ matrix.config }} | |
- name: Publish Build Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.artifactName }} | |
path: ${{ github.workspace }}\windows\${{ steps.setup.outputs.artifactFileName }} | |
ffmpeg-package-universal: | |
name: Build FFmpeg (Universal) | |
runs-on: macos-14 | |
needs: [pre-checks, ffmpeg-macos-build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create universal binary package | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: ./.github/actions/create-universal | |
with: | |
arm64: ffmpeg-macos-arm64-${{ needs.pre-checks.outputs.shortHash }} | |
x86_64: ffmpeg-macos-x86_64-${{ needs.pre-checks.outputs.shortHash }} | |
outputName: ffmpeg-macos-universal-${{ needs.pre-checks.outputs.shortHash }} | |
- name: Create universal dSYM package | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: ./.github/actions/create-universal | |
with: | |
arm64: ffmpeg-macos-arm64-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
x86_64: ffmpeg-macos-x86_64-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
outputName: ffmpeg-macos-universal-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
macos-build: | |
name: Build macOS Dependencies | |
runs-on: macos-14 | |
needs: pre-checks | |
strategy: | |
fail-fast: true | |
matrix: | |
target: [macos-arm64, macos-x86_64] | |
include: | |
- target: macos-arm64 | |
config: Release | |
type: static | |
- target: macos-x86_64 | |
config: Release | |
type: static | |
defaults: | |
run: | |
shell: zsh --no-rcs --errexit --pipefail {0} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
id: setup | |
run: | | |
: Setup Environment | |
print '::group::Enable Xcode 15.2' | |
sudo xcode-select --switch /Applications/Xcode_15.2.app/Contents/Developer | |
print '::endgroup::' | |
to_remove=() | |
for formula (llvm gcc) { | |
if [[ -d /usr/local/opt/"${formula}" ]] to_remove+=(${formula}) | |
} | |
if (( #to_remove )) brew uninstall --ignore-dependencies ${to_remove} | |
local -r sha_string=${{ github.sha }} | |
local -r target='${{ matrix.target }}' | |
artifact_name="deps-${target}-${{ needs.pre-checks.outputs.shortHash }}" | |
file_name="${target%%-*}-deps-${sha_string}-${target##*-}.tar.xz" | |
dsym_artifact_name="deps-${target}-dSYMs-${{ needs.pre-checks.outputs.shortHash }}" | |
dsym_file_name="${target%%-*}-deps-${sha_string}-${target##*-}-dSYMs.tar.xz" | |
echo "artifactName=${artifact_name}" >> $GITHUB_OUTPUT | |
echo "artifactFileName=${file_name}" >> $GITHUB_OUTPUT | |
echo "dsymArtifactName=${dsym_artifact_name}" >> $GITHUB_OUTPUT | |
echo "dsymArtifactFileName=${dsym_file_name}" >> $GITHUB_OUTPUT | |
echo "ccacheDate=${sha_string}" >> $GITHUB_OUTPUT | |
- name: Restore Compilation Cache | |
id: ccache-cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: ${{ github.workspace }}/.ccache | |
key: ${{ matrix.target }}-ccache-deps-${{ steps.setup.outputs.ccacheDate }} | |
restore-keys: | | |
${{ matrix.target }}-ccache-deps- | |
- name: Build macOS Dependencies | |
uses: ./.github/actions/build-deps | |
with: | |
target: ${{ matrix.target }} | |
type: ${{ matrix.type }} | |
config: ${{ matrix.config }} | |
env: | |
github_hash: ${{ github.sha }} | |
- name: Publish Build Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.artifactName }} | |
path: ${{ github.workspace }}/${{ matrix.target }}/${{ steps.setup.outputs.artifactFileName }} | |
- name: Publish Debug Symbol Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.dsymArtifactName }} | |
path: ${{ github.workspace }}/${{ matrix.target }}/${{ steps.setup.outputs.dsymArtifactFileName }} | |
- name: Save Compilation Cache | |
if: github.event_name == 'push' && steps.ccache-cache.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v4 | |
with: | |
path: ${{ github.workspace }}/.ccache | |
key: ${{ matrix.target }}-ccache-deps-${{ steps.setup.outputs.ccacheDate }} | |
macos-package-universal: | |
name: Build macOS Dependencies (Universal) | |
runs-on: macos-14 | |
needs: [pre-checks, macos-build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create universal binary package | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: ./.github/actions/create-universal | |
with: | |
arm64: deps-macos-arm64-${{ needs.pre-checks.outputs.shortHash }} | |
x86_64: deps-macos-x86_64-${{ needs.pre-checks.outputs.shortHash }} | |
outputName: deps-macos-universal-${{ needs.pre-checks.outputs.shortHash }} | |
- name: Create universal dSYM package | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: ./.github/actions/create-universal | |
with: | |
arm64: deps-macos-arm64-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
x86_64: deps-macos-x86_64-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
outputName: deps-macos-universal-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
macos-qt6-build: | |
name: Build Qt6 (macOS) | |
runs-on: macos-14 | |
needs: pre-checks | |
defaults: | |
run: | |
shell: zsh --no-rcs --errexit --pipefail {0} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
id: setup | |
run: | | |
: Setup Environment | |
print '::group::Enable Xcode 15.2' | |
sudo xcode-select --switch /Applications/Xcode_15.2.app/Contents/Developer | |
print '::endgroup::' | |
local -a to_remove=() | |
for formula (llvm gcc) { | |
if [[ -d /usr/local/opt/"${formula}" ]] to_remove+=(${formula}) | |
} | |
if (( #to_remove )) brew uninstall --ignore-dependencies ${to_remove} | |
local -r sha_string=${{ github.sha }} | |
artifact_name="qt6-macos-universal-${{ needs.pre-checks.outputs.shortHash }}" | |
file_name="macos-deps-qt6-${sha_string}-universal.tar.xz" | |
dsym_artifact_name="qt6-macos-universal-dSYMs-${{ needs.pre-checks.outputs.shortHash }}" | |
dsym_file_name="macos-deps-qt6-${sha_string}-universal-dSYMs.tar.xz" | |
print "artifactName=${artifact_name}" >> $GITHUB_OUTPUT | |
print "artifactFileName=${file_name}" >> $GITHUB_OUTPUT | |
print "dsymArtifactName=${dsym_artifact_name}" >> $GITHUB_OUTPUT | |
print "dsymArtifactFileName=${dsym_file_name}" >> $GITHUB_OUTPUT | |
print "ccacheDate=${sha_string}" >> $GITHUB_OUTPUT | |
- name: Restore Compilation Cache | |
id: ccache-cache | |
uses: actions/cache/restore@v4 | |
with: | |
path: ${{ github.workspace }}/.ccache | |
key: macos-universal-ccache-qt6-${{ steps.setup.outputs.ccacheDate }} | |
restore-keys: | | |
macos-universal-ccache-qt6- | |
- name: Build macOS Qt6 | |
uses: ./.github/actions/build-qt | |
with: | |
target: macos-universal | |
config: Release | |
env: | |
github_hash: ${{ github.sha }} | |
- name: Publish Build Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.artifactName }} | |
path: ${{ github.workspace }}/macos-universal/${{ steps.setup.outputs.artifactFileName }} | |
- name: Publish Debug Symbol Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.dsymArtifactName }} | |
path: ${{ github.workspace }}/macos-universal/${{ steps.setup.outputs.dsymArtifactFileName }} | |
- name: Save Compilation Cache | |
if: github.event_name == 'push' && steps.ccache-cache.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v4 | |
with: | |
path: ${{ github.workspace }}/.ccache | |
key: macos-universal-ccache-qt6-${{ steps.setup.outputs.ccacheDate }} | |
macos-qt6-package: | |
name: Create macOS Qt6 (${{ matrix.target }}) | |
runs-on: macos-14 | |
strategy: | |
fail-fast: true | |
matrix: | |
target: [macos-arm64, macos-x86_64] | |
include: | |
- target: macos-x86_64 | |
config: Release | |
- target: macos-arm64 | |
config: Release | |
needs: [pre-checks, macos-qt6-build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create single architecture binary package | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: ./.github/actions/create-single-arch | |
with: | |
base: qt6-macos-universal-${{ needs.pre-checks.outputs.shortHash }} | |
target: ${{ matrix.target }} | |
outputName: qt6-${{ matrix.target }}-${{ needs.pre-checks.outputs.shortHash }} | |
- name: Create single architecture dSYM package | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: ./.github/actions/create-single-arch | |
with: | |
base: qt6-macos-universal-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
target: ${{ matrix.target }} | |
outputName: qt6-${{ matrix.target }}-dSYMs-${{ needs.pre-checks.outputs.shortHash }} | |
windows-build: | |
name: Build Windows Dependencies | |
runs-on: windows-2022 | |
needs: pre-checks | |
strategy: | |
fail-fast: true | |
matrix: | |
target: [x64, x86] | |
include: | |
- target: x64 | |
config: Release | |
type: static | |
- target: x86 | |
config: Release | |
type: static | |
defaults: | |
run: | |
shell: pwsh | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
id: setup | |
run: | | |
# Setup Environment | |
$Target='${{ matrix.target }}' | |
$ArtifactName="deps-windows-${Target}-${{ needs.pre-checks.outputs.shortHash }}" | |
$FileName="windows-deps-$(Get-Date -Format 'yyyy-MM-dd')-${Target}.zip" | |
"artifactName=${ArtifactName}" >> $env:GITHUB_OUTPUT | |
"artifactFileName=${FileName}" >> $env:GITHUB_OUTPUT | |
- name: Build libajantv2 Debug | |
if: matrix.target == 'x64' | |
shell: pwsh | |
run: | | |
# Build libajantv2 Debug | |
$Params = @{ | |
Target = '${{ matrix.target }}' | |
Configuration = 'Debug' | |
Dependencies = 'libajantv2' | |
} | |
./Build-Dependencies.ps1 @Params | |
Remove-Item -Recurse -Force ${{ github.workspace }}/windows_build_temp | |
- name: Build VPL Debug | |
if: matrix.target == 'x64' | |
shell: pwsh | |
run: | | |
# Build VPL Debug | |
$Params = @{ | |
Target = '${{ matrix.target }}' | |
Configuration = 'Debug' | |
Dependencies = 'vpl' | |
} | |
./Build-Dependencies.ps1 @Params | |
Remove-Item -Recurse -Force ${{ github.workspace }}/windows_build_temp | |
- name: Build qrcodegencpp Debug | |
shell: pwsh | |
run: | | |
# Build qrcodegencpp Debug | |
$Params = @{ | |
Target = '${{ matrix.target }}' | |
Configuration = 'Debug' | |
Dependencies = 'qrcodegencpp' | |
} | |
./Build-Dependencies.ps1 @Params | |
Remove-Item -Recurse -Force ${{ github.workspace }}/windows_build_temp | |
- name: Build Windows Dependencies | |
uses: ./.github/actions/build-deps | |
with: | |
target: ${{ matrix.target }} | |
type: ${{ matrix.type }} | |
config: ${{ matrix.config }} | |
- name: Publish Build Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.artifactName }} | |
path: ${{ github.workspace }}\windows\${{ steps.setup.outputs.artifactFileName }} | |
windows-qt6-build: | |
name: Build Qt6 (Windows) | |
runs-on: windows-2022 | |
needs: pre-checks | |
strategy: | |
fail-fast: true | |
matrix: | |
target: [x64, x86] | |
config: [RelWithDebInfo, Debug] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Environment | |
id: setup | |
run: | | |
# Setup Environment | |
$ArtifactName="qt6-windows-${{ matrix.target }}-${{ matrix.config }}-${{ needs.pre-checks.outputs.shortHash }}" | |
$FileName="windows-deps-qt6-$(Get-Date -Format 'yyyy-MM-dd')-${{ matrix.target }}-${{ matrix.config }}.zip" | |
"artifactName=${ArtifactName}" >> $env:GITHUB_OUTPUT | |
"artifactFileName=${FileName}" >> $env:GITHUB_OUTPUT | |
- name: Build Windows Qt | |
uses: ./.github/actions/build-qt | |
with: | |
target: ${{ matrix.target }} | |
config: ${{ matrix.config }} | |
- name: Publish Build Artifacts | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ steps.setup.outputs.artifactName }} | |
path: ${{ github.workspace }}/windows/${{ steps.setup.outputs.artifactFileName }} | |
windows-qt6-package: | |
name: Package Windows Qt6 | |
runs-on: windows-2022 | |
strategy: | |
fail-fast: true | |
matrix: | |
target: [x64, x86] | |
needs: [pre-checks, windows-qt6-build] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create Windows Qt package | |
if: github.event_name != 'pull_request' || fromJSON(needs.pre-checks.outputs.seekingTesters) | |
uses: ./.github/actions/package-windows-qt | |
with: | |
releaseArtifact: qt6-windows-${{ matrix.target }}-RelWithDebInfo-${{ needs.pre-checks.outputs.shortHash }} | |
debugArtifact: qt6-windows-${{ matrix.target }}-Debug-${{ needs.pre-checks.outputs.shortHash }} | |
outputName: qt6-windows-${{ matrix.target }}-${{ needs.pre-checks.outputs.shortHash }} | |
pdbOutputName: qt6-windows-${{ matrix.target }}-PDBs-${{ needs.pre-checks.outputs.shortHash }} | |
make-release: | |
name: Create and upload release | |
env: | |
RELEASE_BUCKET: "obs-studio-deployment" | |
runs-on: ubuntu-22.04 | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
needs: [ffmpeg-package-universal, ffmpeg-windows-build, macos-package-universal, macos-qt6-package, windows-build, windows-qt6-package] | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Get Metadata | |
id: metadata | |
run: | | |
: Get Metadata | |
echo "version=${GITHUB_REF_NAME}" >> $GITHUB_OUTPUT | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
- name: Package Windows dependencies | |
run: | | |
: Package Windows dependencies | |
shopt -s extglob | |
for arch in x64 x86; do | |
_temp=$(mktemp -d) | |
pushd "${_temp}" > /dev/null | |
for artifact in ${GITHUB_WORKSPACE}/**/windows-@(deps|ffmpeg)-!(qt6*)-${arch}.*; do | |
case ${artifact} in | |
*.zip) unzip -o ${artifact} > /dev/null ;; | |
*.tar.xz) XZ_OPT=-T0 tar -xJf ${artifact} ;; | |
*.tar.gz) tar -xzf ${artifact} ;; | |
esac | |
done | |
zip -r windows-deps-${{ steps.metadata.outputs.version }}-${arch}.zip -- * | |
mv windows-deps-${{ steps.metadata.outputs.version }}-${arch}.zip ${GITHUB_WORKSPACE} | |
mv ${GITHUB_WORKSPACE}/qt6-windows-${arch}-!(*-@(Debug|RelWithDebInfo|Release|MinSizeRel))/*.zip ${GITHUB_WORKSPACE} | |
popd > /dev/null | |
done | |
- name: Package macOS dependencies | |
run: | | |
: Package macOS dependencies | |
shopt -s extglob | |
for arch in arm64 x86_64 universal; do | |
_temp=$(mktemp -d) | |
pushd "${_temp}" > /dev/null | |
for artifact in ${GITHUB_WORKSPACE}/**/macos-@(deps|ffmpeg)-!(qt6*)-${arch}.*; do | |
case ${artifact} in | |
*.zip) unzip -o ${artifact} > /dev/null ;; | |
*.tar.xz) XZ_OPT=-T0 tar -xvJf ${artifact} ;; | |
*.tar.gz) tar -xvzf ${artifact} ;; | |
esac | |
done | |
XZ_OPT=-T0 tar -cvJf macos-deps-${{ steps.metadata.outputs.version }}-${arch}.tar.xz -- * | |
mv macos-deps-${{ steps.metadata.outputs.version }}-${arch}.tar.xz ${GITHUB_WORKSPACE} | |
popd > /dev/null | |
echo "github.workspace: " ${{ github.workspace }} | |
echo "steps.metadata.outputs.version: " ${{ steps.metadata.outputs.version }} | |
ls ${{ github.workspace }} | |
echo '--- 1' | |
ls ${{ github.workspace }}/qt6-macos-${arch}-* | |
rm -rf ${{ github.workspace }}/qt6-macos-${arch}-dSYMs* | |
echo '--- 2' | |
ls ${{ github.workspace }}/qt6-macos-${arch}-* | |
mv ${{ github.workspace }}/qt6-macos-${arch}-*/*.tar.xz ${{ github.workspace }}/macos-deps-qt6-${{ steps.metadata.outputs.version }}-${arch}.tar.xz | |
done | |
#mv ${GITHUB_WORKSPACE}/qt6-macos-*/*.tar.xz ${{ github.workspace }} | |
- name: Generate Checksums | |
run: | | |
: Generate Checksums | |
shopt -s extglob | |
echo "### Checksums" > ${{ github.workspace }}/CHECKSUMS.txt | |
for file in ${{ github.workspace }}/@(*.tar.xz|*.zip); do | |
echo " ${file##*/}: $(sha256sum "${file}" | cut -d " " -f 1)" >> ${{ github.workspace }}/CHECKSUMS.txt | |
done | |
- name: Create Release | |
id: create_release | |
uses: softprops/action-gh-release@9d7c94cfd0a1f3ed45544c887983e9fa900f0564 | |
with: | |
draft: false | |
prerelease: false | |
tag_name: ${{ steps.metadata.outputs.version }} | |
name: OBS Deps Build ${{ steps.metadata.outputs.version }} | |
body_path: ${{ github.workspace }}/CHECKSUMS.txt | |
files: | | |
${{ github.workspace }}/windows-*-x64*.zip | |
${{ github.workspace }}/windows-*-x86*.zip | |
${{ github.workspace }}/macos-*-arm64.tar.xz | |
${{ github.workspace }}/macos-*-x86_64.tar.xz | |
${{ github.workspace }}/macos-*-universal.tar.xz | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v1-node16 | |
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: Upload to S3 | |
run: aws s3 sync ${{ github.workspace }} s3://${{env.RELEASE_BUCKET}} --acl public-read --exclude "*" --include "windows-*.zip" --include "macos-*.tar.xz" |