From b19be57782f85ac11b5aaee3a1fdf26e3dee06a6 Mon Sep 17 00:00:00 2001 From: arichornlover <78001398+arichornlover@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:22:25 -0500 Subject: [PATCH] Add buildapp.yml --- .github/workflows/buildapp.yml | 153 +++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 .github/workflows/buildapp.yml diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml new file mode 100644 index 00000000..a0a1ac0f --- /dev/null +++ b/.github/workflows/buildapp.yml @@ -0,0 +1,153 @@ +# Original idea by @ISnackable. Thanks to him for handling the hardest parts! +# https://github.com/ISnackable/YTCubePlus/blob/main/.github/workflows/Build.yml + +name: Build and Release YTMusicUltimate IPA + +on: + workflow_dispatch: + inputs: + ytmusicultimate_version: + description: "The version of YTMusicUltimate" + default: "2.0.1" + required: true + type: string + decrypted_youtubemusic_url: + description: "The direct URL to the decrypted YouTube Music ipa" + default: "" + required: true + type: string + youtubemusic_version: + description: "The version of YouTube Music" + default: "" + required: true + type: string + bundle_id: + description: "Modify the bundle ID. Not recommended" + default: "com.google.ios.youtubemusic" + required: true + type: string + app_name: + description: "Modify the name of the app on the Home Screen. Not recommended" + default: "YouTube Music" + required: true + type: string + create_release: + description: "Create a draft release" + default: true + required: false + type: boolean + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build YTMusicUltimate IPA + runs-on: macos-latest + permissions: + contents: write + + steps: + - name: Checkout Main + uses: actions/checkout@v4.1.1 + with: + path: main + submodules: recursive + + - name: Install Dependencies + run: brew install ldid dpkg + + - name: Setup Theos + uses: actions/checkout@v4.1.1 + with: + repository: theos/theos + ref: master + path: theos + submodules: recursive + + - name: Caching + id: SDK + uses: actions/cache@v4.0.1 + env: + cache-name: iOS-16.2-SDK + with: + path: theos/sdks/ + key: ${{ env.cache-name }} + + - name: Download iOS 16.2 SDK + if: steps.SDK.outputs.cache-hit != 'true' + run: | + svn checkout -q https://github.com/arichorn/sdks/trunk/iPhoneOS16.2.sdk + mv *.sdk $THEOS/sdks + env: + THEOS: ${{ github.workspace }}/theos + + - name: Setup Theos Jailed + uses: actions/checkout@v4.1.1 + with: + repository: qnblackcat/theos-jailed + ref: master + path: theos-jailed + submodules: recursive + + - name: Install Theos Jailed + run: | + ./theos-jailed/install + env: + THEOS: ${{ github.workspace }}/theos + + - name: Prepare YouTube Music iPA + run: | + curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h" + wget "$YOUTUBEMUSIC_URL" --no-verbose -O ./main/YouTubeMusic.ipa + unzip -q ./main/YouTubeMusic.ipa -d ./main/tmp + rm -rf ./main/tmp/Payload/YouTubeMusic.app/Watch + + env: + THEOS: ${{ github.workspace }}/theos + YOUTUBEMUSIC_URL: ${{ inputs.decrypted_youtubemusic_url }} + + - name: Fix compiling & Build Package + id: build_package + run: | + (echo 'THEOS_IGNORE_PARALLEL_BUILDING_NOTICE = yes' >> ~/.theosrc) + cd ${{ github.workspace }}/main + sed -i '' "12s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile + sed -i '' "11s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile + make package FINALPACKAGE=1 SIDELOADED=1 + (mv "packages/$(ls -t packages | head -n1)" "packages/YTMusicUltimate_${{ env.YOUTUBEMUSIC_VERSION }}_${{ env.YTMUSICULTIMATE_VERSION }}.ipa") + echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT + echo -e "==> \033[1mSHASUM256: $(shasum -a 256 packages/*.ipa | cut -f1 -d' ')\033[0m" + echo -e "==> \033[1mBundle ID: ${{ env.BUNDLE_ID }}\033[0m" + + env: + THEOS: ${{ github.workspace }}/theos + YTMUSICULTIMATE_VERSION: ${{ inputs.ytmusicultimate_version }} + YOUTUBEMUSIC_VERSION: ${{ inputs.youtubemusic_version }} + BUNDLE_ID: ${{ inputs.bundle_id }} + APP_NAME: ${{ inputs.app_name }} + + - name: Upload Artifact + uses: actions/upload-artifact@v3.1.2 + env: + YTMUSICULTIMATE_VERSION: ${{ inputs.ytmusicultimate_version }} + YOUTUBEMUSIC_VERSION: ${{ inputs.youtubemusic_version }} + with: + name: YTMusicUltimate_${{ env.YOUTUBEMUSIC_VERSION }}_${{ env.YTMUSICULTIMATE_VERSION }} + path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }} + if-no-files-found: error + + - name: Create Release + id: create_release + uses: softprops/action-gh-release@v2.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + YTMUSICULTIMATE_VERSION: ${{ inputs.ytmusicultimate_version }} + YOUTUBEMUSIC_VERSION: ${{ inputs.youtubemusic_version }} + DRAFT: ${{ inputs.create_release }} + with: + tag_name: v${{ env.YOUTUBEMUSIC_VERSION }}-${{ env.YTMUSICULTIMATE_VERSION }}-(${{ github.run_number }}) + name: v${{ env.YOUTUBEMUSIC_VERSION }}-${{ env.YTMUSICULTIMATE_VERSION }}-(${{ github.run_number }}) + files: main/packages/*.ipa + draft: ${{ env.DRAFT }}