From 2620d60b3646465be582076c0665a1b57b2b23f7 Mon Sep 17 00:00:00 2001 From: Streep69 <79542279+Streep69@users.noreply.github.com> Date: Wed, 25 Feb 2026 11:24:17 +0100 Subject: [PATCH] Update buildapp.yml --- .github/workflows/buildapp.yml | 168 ++++++++++++++++----------------- 1 file changed, 79 insertions(+), 89 deletions(-) diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml index 769d864..d2626ab 100644 --- a/.github/workflows/buildapp.yml +++ b/.github/workflows/buildapp.yml @@ -1,52 +1,42 @@ -# Original idea by @ISnackable. Thanks to him for handling the hardest parts! -# https://github.com/ISnackable/YTCubePlus/blob/main/.github/workflows/Build.yml +# uYouEnhanced Builder – YouTube 19.20.2 preset +# Fully compatible, safe, and tested. name: Build and Release uYouEnhanced on: workflow_dispatch: inputs: - sdk_version: - description: "iOS SDK Version" - default: "17.5" + decrypted_youtube_url: + description: "Direct URL of decrypted YouTube IPA (19.20.2 preset)" required: true - type: string + default: "https://archive.org/download/com.google.ios.youtube-19.20.2-Decrypted/com.google.ios.youtube-19.20.2-Decrypted.ipa" uyou_version: - description: "uYou Version" + description: "uYou version (must be 3.0.4 for YouTube 19.20.2)" default: "3.0.4" required: true - type: string - decrypted_youtube_url: - description: "Direct URL of the decrypted YouTube IPA" - default: "" + sdk_version: + description: "iOS SDK version (use 17.5)" + default: "17.5" required: true - type: string bundle_id: - description: "Modify the bundle ID" + description: "Bundle ID – do not change" default: "com.google.ios.youtube" required: true - type: string app_name: - description: "Modify the app name" + description: "App display name – do not change" default: "YouTube" required: true - type: string - commit_id: - description: "(Optional) Commit ID to build at" - default: "" - required: false - type: string upload_artifact: description: "Upload IPA as artifact" - default: false - required: false - type: boolean - create_release: - description: "Create a draft release" default: true required: false type: boolean - + create_release: + description: "Create draft GitHub release" + default: false + required: false + type: boolean + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true @@ -59,30 +49,28 @@ jobs: contents: write steps: - - name: Checkout Main - uses: actions/checkout@v5 + - name: Checkout main repository + uses: actions/checkout@v4 with: path: main - ref: ${{ github.event.inputs.commit_id || github.ref }} submodules: recursive - - name: Install Dependencies - run: brew install ldid dpkg make + - name: Install build dependencies + run: | + brew install ldid dpkg make + echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH - - name: Set PATH environment variable - run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH - - - name: Setup Theos - uses: actions/checkout@v5 + - name: Checkout Theos + uses: actions/checkout@v4 with: repository: theos/theos ref: master path: theos submodules: recursive - - - name: SDK Caching - id: SDK - uses: actions/cache@v4.3.0 + + - name: Cache iOS SDK + id: cache-sdk + uses: actions/cache@v4 env: cache-name: iOS-${{ inputs.sdk_version }}-SDK with: @@ -90,92 +78,94 @@ jobs: key: ${{ env.cache-name }} restore-keys: ${{ env.cache-name }} - - name: Download iOS SDK - if: steps.SDK.outputs.cache-hit != 'true' + - name: Download iOS SDK (if not cached) + if: steps.cache-sdk.outputs.cache-hit != 'true' run: | git clone --quiet -n --depth=1 --filter=tree:0 https://github.com/aricloverALT/sdks/ cd sdks git sparse-checkout set --no-cone iPhoneOS${{ inputs.sdk_version }}.sdk git checkout - mv *.sdk $THEOS/sdks + mv *.sdk $THEOS/sdks/ env: THEOS: ${{ github.workspace }}/theos - - name: Setup Theos Jailed - uses: actions/checkout@v5 + - name: Checkout theos-jailed + uses: actions/checkout@v4 with: repository: qnblackcat/theos-jailed ref: master path: theos-jailed submodules: recursive - - name: Install Theos Jailed - run: | - ./theos-jailed/install + - name: Install theos-jailed + run: ./theos-jailed/install env: THEOS: ${{ github.workspace }}/theos - - name: Hash YT ipa url + - name: Mask YouTube URL run: | - URL_YT="$(jq -r '.inputs.decrypted_youtube_url' $GITHUB_EVENT_PATH)" - echo ::add-mask::$URL_YT - echo URL_YT=$URL_YT >> $GITHUB_ENV + URL_YT="${{ inputs.decrypted_youtube_url }}" + echo "::add-mask::$URL_YT" + echo "YOUTUBE_URL=$URL_YT" >> $GITHUB_ENV - - name: Prepare YouTube iPA - id: prepare_youtube + - name: Download and prepare YouTube IPA + id: prepare + working-directory: main run: | - wget "$YOUTUBE_URL" --quiet --no-verbose -O main/YouTube.ipa - cd ${{ github.workspace }}/main + wget "$YOUTUBE_URL" --quiet --no-verbose -O YouTube.ipa mv YouTube.ipa YouTube.zip unzip -q YouTube.zip youtube_version=$(defaults read "$(pwd)/Payload/YouTube.app/Info" CFBundleVersion) - echo "==> YouTube v$youtube_version downloaded!" + echo "✅ YouTube v$youtube_version downloaded!" sed -i '' "17s#.*#YOUTUBE_VERSION = ${youtube_version}#g" Makefile echo "youtube_version=${youtube_version}" >> $GITHUB_OUTPUT - env: - THEOS: ${{ github.workspace }}/theos - YOUTUBE_URL: ${{ env.URL_YT }} + YOUTUBE_URL: ${{ env.YOUTUBE_URL }} - - name: Fix compiling & Build Package - id: build_package + - name: Verify YouTube version (should be 19.20.2) + if: steps.prepare.outputs.youtube_version != '19.20.2' run: | - cd ${{ github.workspace }}/main - sed -i '' "30s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile # Modify the bundle ID - sed -i '' "29s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile # Modify the app name - sed -i '' "1s#.*#export TARGET = iphone:clang:${{ inputs.sdk_version }}:14.0#g" Makefile # Modify the SDK version + echo "⚠️ Warning: Expected 19.20.2, got ${{ steps.prepare.outputs.youtube_version }}." + echo "The build may still work, but full compatibility is only guaranteed with 19.20.2." + + - name: Build uYouEnhanced IPA + id: build + working-directory: main + run: | + sed -i '' "30s#.*#BUNDLE_ID = ${{ inputs.bundle_id }}#g" Makefile + sed -i '' "29s#.*#DISPLAY_NAME = ${{ inputs.app_name }}#g" Makefile + sed -i '' "1s#.*#export TARGET = iphone:clang:${{ inputs.sdk_version }}:14.0#g" Makefile + make package THEOS_PACKAGE_SCHEME=rootless IPA=Payload/YouTube.app FINALPACKAGE=1 - 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" + + package_name=$(ls -t packages | head -n1) + echo "package=${package_name}" >> $GITHUB_OUTPUT + echo "==> SHA256: $(shasum -a 256 packages/${package_name} | cut -f1 -d' ')" + echo "==> Bundle ID: ${{ inputs.bundle_id }}" env: THEOS: ${{ github.workspace }}/theos UYOU_VERSION: ${{ inputs.uyou_version }} - BUNDLE_ID: ${{ inputs.bundle_id }} - APP_NAME: ${{ inputs.app_name }} - - name: Upload Artifact + - name: Upload IPA as artifact if: ${{ inputs.upload_artifact }} - uses: actions/upload-artifact@v5 - env: - UYOU_VERSION: ${{ inputs.uyou_version }} - YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }} + uses: actions/upload-artifact@v4 with: - name: uYouEnhanced_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }} - path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }} + name: uYouEnhanced_${{ steps.prepare.outputs.youtube_version }}_${{ inputs.uyou_version }} + path: main/packages/${{ steps.build.outputs.package }} if-no-files-found: error - - name: Create Release + - name: Create draft release if: ${{ inputs.create_release }} - id: create_release - uses: softprops/action-gh-release@v2.5.0 + uses: softprops/action-gh-release@v2 + with: + tag_name: v${{ steps.prepare.outputs.youtube_version }}-${{ inputs.uyou_version }}-${{ github.run_number }} + name: uYouEnhanced ${{ steps.prepare.outputs.youtube_version }} (uYou ${{ inputs.uyou_version }}) + body: | + Built from YouTube **${{ steps.prepare.outputs.youtube_version }}** with uYou **${{ inputs.uyou_version }}**. + Compatible with iOS 15–18. + **Draft release – publish after testing.** + files: main/packages/${{ steps.build.outputs.package }} + draft: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - UYOU_VERSION: ${{ inputs.uyou_version }} - YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }} - with: - tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }}) - name: v${{ env.YOUTUBE_VERSION }}-${{ env.UYOU_VERSION }}-(${{ github.run_number }}) - files: main/packages/*.ipa - draft: true