Build and Release YouTubeRebornPlus #2
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: | |
reborn_version: | |
description: "The version of YouTube Reborn" | |
default: "4.2.5" | |
required: true | |
type: string | |
decrypted_youtube_url: | |
description: "The direct URL to the decrypted YouTube ipa" | |
default: "" | |
required: true | |
type: string | |
youtube_version: | |
description: "The version of YouTube" | |
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 | |
sdk_version: | |
description: "iOS SDK version to be used during build" | |
default: "16.2" | |
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 YouTubeRebornPlus | |
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 make | |
- name: Setup Theos | |
uses: actions/checkout@v4.1.1 | |
with: | |
repository: theos/theos | |
ref: 9941262c450c0abac524574cb96b9a4cdf5e50f4 | |
path: theos | |
submodules: recursive | |
- name: SDK Caching | |
id: SDK | |
uses: actions/cache@v4.0.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/arichorn/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.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: Download Reborn & Prepare YouTube iPA | |
run: | | |
curl "https://raw.githubusercontent.com/Muirey03/RemoteLog/master/RemoteLog.h" --output "$THEOS/include/RemoteLog.h" | |
curl -L "https://www.dropbox.com/scl/fi/0omzetpavkc8zuxq6j24y/YouTube.Reborn.v4.2.5.deb?rlkey=e99nznjpbsxh4anfbo31t4qun&dl=1" --output "main/Tweaks/Reborn/YouTube.Reborn.v4.2.5.deb" | |
echo -e "==> \033[1mReborn v${{ inputs.reborn_version }} downloaded! \033[0m" | |
wget "$YOUTUBE_URL" --no-verbose -O main/YouTube.ipa | |
echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} downloaded! \033[0m" | |
cd main/Tweaks/Reborn && tar -xf "YouTube.Reborn.v4.2.5.deb" && tar -xf data.tar.* && cd ../../.. | |
echo -e "==> \033[1mReborn v${{ inputs.reborn_version }} unpacked! \033[0m" | |
unzip -q main/YouTube.ipa -d main/tmp | |
rm -rf main/tmp/Payload/YouTube.app/_CodeSignature/CodeResources | |
rm -rf main/tmp/Payload/YouTube.app/PlugIns/* | |
cp -R main/Extensions/*.appex main/tmp/Payload/YouTube.app/PlugIns | |
echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} unpacked! \033[0m" | |
env: | |
THEOS: ${{ github.workspace }}/theos | |
REBORN_VERSION: ${{ inputs.reborn_version }} | |
YOUTUBE_VERSION: ${{ inputs.youtube_version }} | |
YOUTUBE_URL: ${{ inputs.decrypted_youtube_url }} | |
- name: Fix Compiling & Build Package | |
id: build_package | |
run: | | |
(echo PATH=\"$(brew --prefix make)/libexec/gnubin:\$PATH\" >> ~/.zprofile) | |
cd ${{ github.workspace }}/main | |
sed -i '' "11s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile | |
sed -i '' "10s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile | |
make package FINALPACKAGE=1 | |
(mv "packages/$(ls -t packages | head -n1)" "packages/YouTubeRebornPlus_${{ env.YOUTUBE_VERSION }}_${{ env.REBORN_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 | |
REBORN_VERSION: ${{ inputs.reborn_version }} | |
YOUTUBE_VERSION: ${{ inputs.youtube_version }} | |
BUNDLE_ID: ${{ inputs.bundle_id }} | |
APP_NAME: ${{ inputs.app_name }} | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4.3.1 | |
env: | |
REBORN_VERSION: ${{ inputs.reborn_version }} | |
YOUTUBE_VERSION: ${{ inputs.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: Prepare Release Notes | |
run: | | |
export TODAY=$(date '+%Y-%m-%d') | |
sed "s/%reborn_version%/${{ inputs.reborn_version }}/g; s/%youtube_version%/${{ inputs.youtube_version }}/g; s/%date%/$TODAY/g" \ | |
main/.github/RELEASE_TEMPLATE/Release.md > ${{ github.workspace }}/release_notes.md | |
- name: Create Release | |
id: create_release | |
uses: softprops/action-gh-release@v0.1.15 # NOTICE: Node.js 16 is Deprecated ⚠️ | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
REBORN_VERSION: ${{ inputs.REBORN_VERSION }} | |
YOUTUBE_VERSION: ${{ inputs.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 }} |