Build and Release YouTubeRebornPlus #553
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. Many thanks to him for handling the most hardest parts! | |
# https://github.com/ISnackable/YTCubePlus/blob/main/.github/workflows/Build.yml | |
name: Build and Release YouTubeRebornPlus | |
on: | |
workflow_dispatch: | |
inputs: | |
sdk_version: | |
description: "iOS SDK version to be used during build" | |
default: "16.4" | |
required: true | |
type: string | |
reborn_version: | |
description: "The version of YouTube Reborn" | |
default: "4.2.8" | |
required: true | |
type: string | |
decrypted_youtube_url: | |
description: "The direct URL to the decrypted YouTube ipa" | |
default: "" | |
required: true | |
type: string | |
bundle_id: | |
description: "Modify the bundle ID. Not recommended" | |
default: "com.google.ios.youtube" | |
required: true | |
type: string | |
app_name: | |
description: "Modify the name of the app on the Home Screen. Not recommended" | |
default: "YouTube" | |
required: true | |
type: string | |
create_release: | |
description: "Create a draft release" | |
default: true | |
required: false | |
type: boolean | |
upload_artifact: | |
description: "Upload Artifact" | |
default: true | |
required: false | |
type: boolean | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: Build YouTubeRebornPlus | |
runs-on: macos-12 | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout Main | |
uses: actions/checkout@v4.1.6 | |
with: | |
path: main | |
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.1.6 | |
with: | |
repository: theos/theos | |
ref: 5bfdc3cb7133ec1cab43182115d902e2b57c9eac | |
path: theos | |
submodules: recursive | |
- name: SDK Caching | |
id: SDK | |
uses: actions/cache@v4.0.2 | |
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/arichornlover/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.1.6 | |
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 iPA | |
id: prepare_youtube | |
run: | | |
wget "$YOUTUBE_URL" --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: ${{ inputs.decrypted_youtube_url }} | |
- name: Fix compiling & Build Package | |
id: build_package | |
run: | | |
cd ${{ github.workspace }}/main | |
sed -i '' "27s#.*#BUNDLE_ID = ${{ inputs.bundle_id }}#g" Makefile # Modify the bundle ID | |
sed -i '' "26s#.*#DISPLAY_NAME = ${{ inputs.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: ${{ inputs.bundle_id }}\033[0m" | |
env: | |
THEOS: ${{ github.workspace }}/theos | |
REBORN_VERSION: ${{ inputs.reborn_version }} | |
BUNDLE_ID: ${{ inputs.bundle_id }} | |
APP_NAME: ${{ inputs.app_name }} | |
- name: Upload Artifact | |
if: ${{ inputs.upload_artifact }} | |
uses: actions/upload-artifact@v4.3.3 | |
env: | |
REBORN_VERSION: ${{ inputs.reborn_version }} | |
YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }} | |
with: | |
name: YouTubeRebornPlus_${{ env.YOUTUBE_VERSION }}_${{ env.REBORN_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.0.5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
REBORN_VERSION: ${{ inputs.reborn_version }} | |
YOUTUBE_VERSION: ${{ steps.prepare_youtube.outputs.youtube_version }} | |
DRAFT: ${{ inputs.create_release }} | |
with: | |
tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.REBORN_VERSION }}-(${{ github.run_number }}) | |
name: v${{ env.YOUTUBE_VERSION }}-${{ env.REBORN_VERSION }}-(${{ github.run_number }}) | |
files: main/packages/*.ipa | |
draft: ${{ env.DRAFT }} |