# Inspired heavily by the following workflows # https://github.com/arichornlover/uYouEnhanced/blob/main/.github/workflows/buildapp.yml # https://github.com/ISnackable/YTCubePlus/blob/main/.github/workflows/Build.yml # https://github.com/BandarHL/BHTwitter/actions/workflows/build.yml name: Build and Package RyukGram on: workflow_dispatch: inputs: decrypted_instagram_url: description: "The direct URL to the decrypted Instagram IPA" default: "" required: true type: string 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 RyukGram runs-on: macos-latest permissions: contents: write steps: - name: Checkout Main uses: actions/checkout@v4 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 with: repository: theos/theos ref: master path: ${{ github.workspace }}/theos submodules: recursive - name: SDK Caching id: SDK uses: actions/cache@v4 env: cache-name: iPhoneOS16.2.sdk with: path: ${{ github.workspace }}/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/xybp888/iOS-SDKs/ cd iOS-SDKs git sparse-checkout set --no-cone iPhoneOS16.2.sdk git checkout mv *.sdk $THEOS/sdks env: THEOS: ${{ github.workspace }}/theos - name: Prepare Instagram IPA run: | cd main mkdir -p packages wget "$Instagram_URL" --no-verbose -O packages/com.burbn.instagram.ipa ls -la packages env: THEOS: ${{ github.workspace }}/theos Instagram_URL: ${{ inputs.decrypted_instagram_url }} - name: Get Version id: version run: | VERSION=$(awk '/Version:/ {print $2}' main/control) echo "VERSION=${VERSION}" >> "$GITHUB_ENV" echo "version=${VERSION}" >> "$GITHUB_OUTPUT" - name: Build RyukGram tweak for sideloading (as IPA) run: | pip install --force-reinstall https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip cd main curl -Lo ipapatch https://github.com/asdfzxcvbn/ipapatch/releases/download/v2.1.3/ipapatch.macos-arm64 chmod +x ipapatch export PATH=.:$PATH ls -la ./build.sh sideload ls -la packages env: THEOS: ${{ github.workspace }}/theos - name: Rename IPA to include version info run: | cd main/packages mv "$(ls -t | head -n1)" "RyukGram_sideloaded_v${VERSION}.ipa" - name: Pass package name to upload action id: package_name run: | echo "package=$(ls -t main/packages | head -n1)" >> "$GITHUB_OUTPUT" - name: Upload Artifact if: ${{ inputs.upload_artifact }} uses: actions/upload-artifact@v4 with: name: RyukGram_sideloaded_v${{ steps.version.outputs.version }} path: ${{ github.workspace }}/main/packages/${{ steps.package_name.outputs.package }} if-no-files-found: error - name: Create Release uses: softprops/action-gh-release@v2.0.6 with: name: RyukGram_sideloaded_v${{ steps.version.outputs.version }} files: ${{ github.workspace }}/main/packages/RyukGram_sideloaded_v*.ipa draft: true - name: Output Release URL run: | echo "::notice::Release available at: https://github.com/${{ github.repository }}/releases"