CI: Update Steam workflow for Apple Silicon builds

master
derrod 2022-08-01 20:03:01 +02:00 committed by Rodney
parent 4a64b2aae6
commit 3c41697b42
5 changed files with 57 additions and 8 deletions

View File

@ -15,6 +15,9 @@ on:
mac_url_override:
description: 'Mac build to use (.dmg only)'
required: false
mac_arm_url_override:
description: 'Mac ARM build to use (.dmg only)'
required: false
schedule:
- cron: 0 0 * * *
@ -79,7 +82,8 @@ jobs:
ASSETS="$(curl -s "${ASSETS_URL}")"
WIN_ASSET_URL="$(jq -r '.[] | select(.name|test(".*x64.zip")) .browser_download_url' <<< ${ASSETS})"
MAC_ASSET_URL="$(jq -r '.[] | select(.name|test(".*.dmg")) .browser_download_url' <<< ${ASSETS})"
MAC_ASSET_URL="$(jq -r '.[] | select(.name|test(".*x86_64.*.dmg")) .browser_download_url' <<< ${ASSETS})"
MAC_ARM_ASSET_URL="$(jq -r '.[] | select(.name|test(".*arm64.*.dmg")) .browser_download_url' <<< ${ASSETS})"
TYPE='release'
else
BRANCH='${{ env.STEAM_NIGHTLY_BRANCH }}'
@ -88,8 +92,9 @@ jobs:
DESC="g$(jq -r '.workflow_runs[].head_sha' <<< "${BUILDS}" | cut -c1-9)"
ARTIFACTS="$(curl -s ${ARTIFACTS_URL})"
WIN_ASSET_URL="$(jq -r '.artifacts[] | select(.name|test(".*win-x64.*")) .archive_download_url' <<< ${ARTIFACTS})"
WIN_ASSET_URL="$(jq -r '.artifacts[] | select(.name|test(".*windows-x64.*")) .archive_download_url' <<< ${ARTIFACTS})"
MAC_ASSET_URL="$(jq -r '.artifacts[] | select(.name|test(".*macos-x86_64.*")) .archive_download_url' <<< ${ARTIFACTS})"
MAC_ARM_ASSET_URL="$(jq -r '.artifacts[] | select(.name|test(".*macos-arm64.*")) .archive_download_url' <<< ${ARTIFACTS})"
TYPE='nightly'
fi
@ -102,9 +107,13 @@ jobs:
if [[ -n '${{ github.event.inputs.mac_url_override }}' ]]; then
MAC_ASSET_URL='${{ github.event.inputs.mac_url_override }}'
fi
if [[ -n '${{ github.event.inputs.mac_arm_url_override }}' ]]; then
MAC_ARM_ASSET_URL='${{ github.event.inputs.mac_arm_url_override }}'
fi
fi
if [[ -z ${WIN_ASSET_URL} || -z ${MAC_ASSET_URL} ]]; then
if [[ -z ${WIN_ASSET_URL} || -z ${MAC_ASSET_URL} || -z ${MAC_ARM_ASSET_URL} ]]; then
echo "Missing at least one asset URL!"
exit 1
fi
@ -115,6 +124,7 @@ jobs:
echo "::set-output name=desc::${DESC}"
echo "::set-output name=win_url::${WIN_ASSET_URL}"
echo "::set-output name=mac_intel_url::${MAC_ASSET_URL}"
echo "::set-output name=mac_arm_url::${MAC_ARM_ASSET_URL}"
- name: Restore build cache
id: cache
@ -150,12 +160,18 @@ jobs:
fi
echo "::endgroup::"
echo "::group::Download Mac build"
echo "::group::Download Mac builds"
if [[ '${{ steps.build-info.outputs.mac_intel_url }}' == *'api.github.com'* ]]; then
curl -L -H 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' '${{ steps.build-info.outputs.mac_intel_url }}' -o mac_x86.dmg.zip
else
curl -L '${{ steps.build-info.outputs.mac_intel_url }}' -o mac_x86.dmg
fi
if [[ '${{ steps.build-info.outputs.mac_arm_url }}' == *'api.github.com'* ]]; then
curl -L -H 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' '${{ steps.build-info.outputs.mac_arm_url }}' -o mac_arm64.dmg.zip
else
curl -L '${{ steps.build-info.outputs.mac_arm_url }}' -o mac_arm64.dmg
fi
echo "::endgroup::"
mkdir -p steam && cd steam
@ -171,24 +187,41 @@ jobs:
rm *.zip
fi
# copy install scripts and create sentinel file
cp -r ../../source/CI/steam/scripts scripts
cp -r ../../source/CI/steam/scripts_windows scripts
touch disable_updater
)
echo "::endgroup::"
echo "::group::Extract macOS (x86)"
mkdir -p steam-macos/x86
mkdir steam-macos
# CI builds are zipped
if [[ -f ../mac_x86.dmg.zip ]]; then
unzip ../mac_x86.dmg.zip
# 7-Zip will have an exit code of 2 due to the "unsafe" 'Applications' symlink.
# GitHub treats this as a failure so ignore non-zero exit codes here.
7zzs x *.dmg -otmp || true
7zz x *.dmg -otmp_x86 || true
rm *.dmg
else
7zzs x ../mac_x86.dmg -otmp || true
7zz x ../mac_x86.dmg -otmp_x86 || true
fi
mv tmp/*/OBS.app steam-macos
mv tmp_x86/*/OBS.app steam-macos/x86
echo "::endgroup::"
echo "::group::Extract and prepare macOS (arm64)"
mkdir -p steam-macos/arm64
if [[ -f ../mac_arm64.dmg.zip ]]; then
unzip ../mac_arm64.dmg.zip
7zz x *.dmg -otmp_arm64 || true
rm *.dmg
else
7zz x ../mac_arm64.dmg -otmp_arm64 || true
fi
mv tmp_arm64/*/OBS.app steam-macos/arm64
cp ../source/CI/steam/scripts_macos/launch.sh steam-macos/launch.sh
echo "::endgroup::"
- name: Setup steamcmd

View File

@ -0,0 +1,16 @@
#!/bin/zsh
arch_name="$(uname -m)"
# legacy app installation
if [ -d OBS.app ]; then
exec open OBS.app -W --args "$@"
fi
if [ "${arch_name}" = "x86_64" ]; then
exec open x86/OBS.app -W --args "$@"
elif [ "${arch_name}" = "arm64" ]; then
exec open arm64/OBS.app -W --args "$@"
else
echo "Unknown architecture: ${arch_name}"
fi