mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-30 20:34:04 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			174 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # Original idea by @ISnackable. Many thanks to him for handling the most hardest parts!
 | |
| # https://github.com/ISnackable/CercubePlus/blob/main/.github/workflows/Build.yml
 | |
| 
 | |
| name: Build and Release YTLitePlus
 | |
| 
 | |
| on:
 | |
|   workflow_dispatch:
 | |
|     inputs:
 | |
|       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
 | |
|       ytliteplus_version:
 | |
|         description: "The version of YTLitePlus"
 | |
|         default: "2.2"
 | |
|         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
 | |
| 
 | |
| concurrency:
 | |
|   group: ${{ github.workflow }}-${{ github.ref }}
 | |
|   cancel-in-progress: true
 | |
| 
 | |
| jobs:
 | |
|   build:
 | |
|     name: Build YTLitePlus
 | |
|     runs-on: macos-latest
 | |
|     permissions:
 | |
|       contents: write
 | |
| 
 | |
|     steps:
 | |
|       - name: Checkout Main
 | |
|         uses: actions/checkout@v3.5.3
 | |
|         with:
 | |
|           path: main
 | |
|           submodules: recursive
 | |
| 
 | |
|       - name: Install Dependencies
 | |
|         run: brew install ldid dpkg make
 | |
| 
 | |
|       - name: Setup Theos
 | |
|         uses: actions/checkout@v3.5.3
 | |
|         with:
 | |
|           repository: theos/theos
 | |
|           ref: 3da31488281ecf4394d10302d2629607f4a1aa07
 | |
|           path: theos
 | |
|           submodules: recursive
 | |
| 
 | |
|       - name: Caching
 | |
|         id: SDK
 | |
|         uses: actions/cache@v3.3.1
 | |
|         env:
 | |
|           cache-name: iOS-16.2-SDK
 | |
|         with:
 | |
|           path: theos/sdks/
 | |
|           key: ${{ env.cache-name }}
 | |
| 
 | |
|       - name: Download iOS 16.2 SDK
 | |
|         if: steps.SDK.outputs.cache-hit != 'true'
 | |
|         run: |
 | |
|           svn checkout -q https://github.com/arichorn/sdks/trunk/iPhoneOS16.2.sdk
 | |
|           mv *.sdk $THEOS/sdks
 | |
|         env:
 | |
|           THEOS: ${{ github.workspace }}/theos
 | |
| 
 | |
|       - name: Setup Theos Jailed
 | |
|         uses: actions/checkout@v3.5.3
 | |
|         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
 | |
|         run: |
 | |
|           wget "$YOUTUBE_URL" --no-verbose -O main/YouTube.ipa
 | |
|           echo -e "==> \033[1mYouTube v${{ inputs.youtube_version }} downloaded! \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
 | |
|           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 '' "12s#.*#BUNDLE_ID = ${{ env.BUNDLE_ID }}#g" Makefile
 | |
|           sed -i '' "11s#.*#DISPLAY_NAME = ${{ env.APP_NAME }}#g" Makefile
 | |
|           sed -i '' "s/^PACKAGE_VERSION.*$/PACKAGE_VERSION = ${{ inputs.youtube_version }}-${{ inputs.ytliteplus_version }}/" Makefile
 | |
|           make package FINALPACKAGE=1
 | |
|           (mv "packages/$(ls -t packages | head -n1)" "packages/YTLitePlus_${{ env.YOUTUBE_VERSION }}_${{ env.ytliteplus_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
 | |
|           ytliteplus_version: ${{ inputs.ytliteplus_version }}
 | |
|           YOUTUBE_VERSION: ${{ inputs.youtube_version }}
 | |
|           BUNDLE_ID: ${{ inputs.bundle_id }}
 | |
|           APP_NAME: ${{ inputs.app_name }}
 | |
| 
 | |
|       - name: Upload Artifact
 | |
|         uses: actions/upload-artifact@v3.1.2
 | |
|         env:
 | |
|           ytliteplus_version: ${{ inputs.ytliteplus_version }}
 | |
|           YOUTUBE_VERSION: ${{ inputs.youtube_version }}
 | |
|         with:
 | |
|           name: YTLitePlus_${{ env.YOUTUBE_VERSION }}_${{ env.ytliteplus_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/%ytliteplus_version%/${{ inputs.ytliteplus_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
 | |
|         env:
 | |
|           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | |
|           ytliteplus_version: ${{ inputs.ytliteplus_version }}
 | |
|           YOUTUBE_VERSION: ${{ inputs.youtube_version }}
 | |
|           DRAFT: ${{ inputs.create_release }}
 | |
|         with:
 | |
|           tag_name: v${{ env.YOUTUBE_VERSION }}-${{ env.ytliteplus_version }}
 | |
|           name: v${{ env.YOUTUBE_VERSION }}-${{ env.ytliteplus_version }} - YTLitePlus
 | |
|           files: main/packages/*.ipa
 | |
|           draft: ${{ env.DRAFT }}
 | |
|           body_path: ${{ github.workspace }}/release_notes.md
 | |
| 
 | |
|       - name: Update Altstore Source with latest release
 | |
|         run: |
 | |
|           curl --location --request POST 'https://api.github.com/repos/Balackburn/YTLitePlusAltstore/dispatches' \
 | |
|           --header 'Authorization: token ${{ secrets.PERSONAL_ACCESS_TOKEN }}' \
 | |
|           --header 'Content-Type: application/json' \
 | |
|           --data-raw '{
 | |
|             "event_type": "update-altstore-source-trigger"
 | |
|           }'
 | 
