Build and Release uYouEnhanced #1920
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 uYouEnhanced | |
on: | |
workflow_dispatch: | |
inputs: | |
sdk_version: | |
description: "iOS SDK Version" | |
default: "17.5" | |
required: true | |
type: string | |
uyou_version: | |
description: "uYou Version" | |
default: "3.0.4" | |
required: true | |
type: string | |
decrypted_youtube_url: | |
description: "Direct URL of the decrypted YouTube IPA" | |
default: "" | |
required: true | |
type: string | |
bundle_id: | |
description: "Modify the bundle ID" | |
default: "com.google.ios.youtube" | |
required: true | |
type: string | |
app_name: | |
description: "Modify the app name" | |
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 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: Build uYouEnhanced | |
runs-on: macos-13 | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout Main | |
uses: actions/checkout@v4.2.2 | |
with: | |
path: main | |
ref: ${{ github.event.inputs.commit_id || github.ref }} | |
submodules: recursive | |
- name: Install Dependencies | |
run: brew install ldid dpkg make | |
- name: Set PATH environment variable | |
run: echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH | |
- name: Setup Theos | |
uses: actions/checkout@v4.2.2 | |
with: | |
repository: theos/theos | |
ref: master | |
path: theos | |
submodules: recursive | |
- name: SDK Caching | |
id: SDK | |
uses: actions/cache@v4.2.0 | |
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: steps.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: Setup Theos Jailed | |
uses: actions/checkout@v4.2.2 | |
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: Hash YT ipa 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 | |
- name: Prepare YouTube iPA | |
id: prepare_youtube | |
run: | | |
wget "$YOUTUBE_URL" --quiet --no-verbose -O main/YouTube.ipa | |
cd ${{ github.workspace }}/main | |
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: | |
THEOS: ${{ github.workspace }}/theos | |
YOUTUBE_URL: ${{ env.URL_YT }} | |
- name: Fix compiling & Build Package | |
id: build_package | |
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 | |
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" | |
env: | |
THEOS: ${{ github.workspace }}/theos | |
UYOU_VERSION: ${{ inputs.uyou_version }} | |
BUNDLE_ID: ${{ inputs.bundle_id }} | |
APP_NAME: ${{ inputs.app_name }} | |
- name: Upload Artifact | |
if: ${{ inputs.upload_artifact }} | |
uses: actions/upload-artifact@v4.4.3 | |
env: | |
UYOU_VERSION: ${{ inputs.uyou_version }} | |
YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }} | |
with: | |
name: uYouEnhanced_${{ env.YOUTUBE_VERSION }}_${{ env.UYOU_VERSION }} | |
path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }} | |
if-no-files-found: error | |
- name: Create Release | |
if: ${{ inputs.create_release }} | |
id: create_release | |
uses: softprops/action-gh-release@v2.1.0 | |
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 |