diff --git a/.github/workflows/mainnew2.yml b/.github/workflows/mainnew2.yml new file mode 100644 index 0000000..6074608 --- /dev/null +++ b/.github/workflows/mainnew2.yml @@ -0,0 +1,170 @@ +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-14 + permissions: + contents: write + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true # ← 未来対応 + + steps: + - name: Checkout Main + uses: actions/checkout@v5 + 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 Node.js + uses: actions/setup-node@v4 + with: + node-version: 24 + - name: Setup Theos + uses: actions/checkout@v5 + with: + repository: theos/theos + ref: master + path: theos + submodules: recursive + + - name: SDK Caching + id: 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: 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@v5 + 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_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 + sed -i '' "29s#.*#DISPLAY_NAME = ${{ env.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 + echo "package=$(ls -t packages | head -n1)" >>$GITHUB_OUTPUT + 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@v5 + with: + name: uYouEnhanced + path: ${{ github.workspace }}/main/packages/${{ steps.build_package.outputs.package }} + if-no-files-found: error + + - name: Create Release + if: ${{ inputs.create_release }} + uses: softprops/action-gh-release@v2 # ← 修正済み + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: v${{ steps.prepare_youtube.outputs.youtube_version }}-${{ inputs.uyou_version }} + name: uYouEnhanced Release + files: main/packages/*.ipa + draft: true