Ver Fonte

CI: Update Steam workflow for Apple Silicon builds

derrod há 3 anos atrás
pai
commit
3c41697b42

+ 41 - 8
.github/workflows/steam.yml

@@ -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

+ 16 - 0
CI/steam/scripts_macos/launch.sh

@@ -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

+ 0 - 0
CI/steam/scripts/install.bat → CI/steam/scripts_windows/install.bat


+ 0 - 0
CI/steam/scripts/installscript.vdf → CI/steam/scripts_windows/installscript.vdf


+ 0 - 0
CI/steam/scripts/uninstall.bat → CI/steam/scripts_windows/uninstall.bat