uYouEnhanced/.github/workflows/buildapp.yml
2026-02-25 11:24:17 +01:00

171 lines
5.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# uYouEnhanced Builder YouTube 19.20.2 preset
# Fully compatible, safe, and tested.
name: Build and Release uYouEnhanced
on:
workflow_dispatch:
inputs:
decrypted_youtube_url:
description: "Direct URL of decrypted YouTube IPA (19.20.2 preset)"
required: true
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 (must be 3.0.4 for YouTube 19.20.2)"
default: "3.0.4"
required: true
sdk_version:
description: "iOS SDK version (use 17.5)"
default: "17.5"
required: true
bundle_id:
description: "Bundle ID do not change"
default: "com.google.ios.youtube"
required: true
app_name:
description: "App display name do not change"
default: "YouTube"
required: true
upload_artifact:
description: "Upload IPA as artifact"
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
jobs:
build:
name: Build uYouEnhanced
runs-on: macos-14
permissions:
contents: write
steps:
- name: Checkout main repository
uses: actions/checkout@v4
with:
path: main
submodules: recursive
- name: Install build dependencies
run: |
brew install ldid dpkg make
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
- name: Checkout Theos
uses: actions/checkout@v4
with:
repository: theos/theos
ref: master
path: theos
submodules: recursive
- name: Cache iOS SDK
id: cache-sdk
uses: actions/cache@v4
env:
cache-name: iOS-${{ inputs.sdk_version }}-SDK
with:
path: theos/sdks/
key: ${{ env.cache-name }}
restore-keys: ${{ env.cache-name }}
- 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/
env:
THEOS: ${{ github.workspace }}/theos
- 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
env:
THEOS: ${{ github.workspace }}/theos
- name: Mask YouTube URL
run: |
URL_YT="${{ inputs.decrypted_youtube_url }}"
echo "::add-mask::$URL_YT"
echo "YOUTUBE_URL=$URL_YT" >> $GITHUB_ENV
- name: Download and prepare YouTube IPA
id: prepare
working-directory: main
run: |
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!"
sed -i '' "17s#.*#YOUTUBE_VERSION = ${youtube_version}#g" Makefile
echo "youtube_version=${youtube_version}" >> $GITHUB_OUTPUT
env:
YOUTUBE_URL: ${{ env.YOUTUBE_URL }}
- name: Verify YouTube version (should be 19.20.2)
if: steps.prepare.outputs.youtube_version != '19.20.2'
run: |
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
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 }}
- name: Upload IPA as artifact
if: ${{ inputs.upload_artifact }}
uses: actions/upload-artifact@v4
with:
name: uYouEnhanced_${{ steps.prepare.outputs.youtube_version }}_${{ inputs.uyou_version }}
path: main/packages/${{ steps.build.outputs.package }}
if-no-files-found: error
- name: Create draft release
if: ${{ inputs.create_release }}
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 1518.
**Draft release publish after testing.**
files: main/packages/${{ steps.build.outputs.package }}
draft: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}