Check and Build Apollo .ipa with ImprovedCustomApi #112
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
name: Build Apollo IPA with ImprovedCustomApi | |
on: | |
workflow_dispatch: | |
inputs: | |
apollo_ipa_url: | |
description: 'Apollo IPA URL' | |
required: false | |
default: 'https://files.catbox.moe/o2lue0.ipa' | |
catbox_upload: | |
description: 'Upload to Catbox.moe' | |
required: false | |
type: boolean | |
default: false | |
env: | |
APOLLO_IPA_URL: ${{ inputs.apollo_ipa_url }} | |
PYTHON_VERSION: '3.10' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install requests | |
pip install --force-reinstall https://github.com/asdfzxcvbn/pyzule-rw/archive/main.zip | |
- name: Download Apollo IPA | |
run: | | |
curl -L "${{ env.APOLLO_IPA_URL }}" -o Apollo.ipa | |
# Extract Apollo version from IPA | |
APOLLO_VERSION=$(unzip -p Apollo.ipa 'Payload/*.app/Info.plist' | grep -A1 'CFBundleShortVersionString' | grep string | sed -E 's/<string>(.*)<\/string>/\1/' | tr -d '[:space:]') | |
echo "APOLLO_VERSION=$APOLLO_VERSION" >> $GITHUB_ENV | |
- name: Check ImprovedCustomApi Latest Release | |
id: check_release | |
run: | | |
# Get latest release info | |
RELEASE_INFO=$(curl -s https://api.github.com/repos/JeffreyCA/Apollo-ImprovedCustomApi/releases/latest) | |
ICA_VERSION=$(echo "$RELEASE_INFO" | grep -Po '"tag_name": "\K.*?(?=")' | sed 's/^v//' | tr -d '[:space:]') | |
OLD_ICA_VERSION=$(cat current_version.txt 2>/dev/null || echo "0.0.0") | |
RELEASE_NOTES=$(echo "$RELEASE_INFO" | grep -Po '"body": "\K.*?(?=")') | |
# Download non-rootless .deb | |
DEB_URL=$(echo "$RELEASE_INFO" | grep -Po '"browser_download_url": "\K.*?(?=")' | grep -v "rootless") | |
curl -L "$DEB_URL" -o improvedcustomapi.deb | |
# Set environment variables | |
echo "ICA_VERSION=$ICA_VERSION" >> $GITHUB_ENV | |
echo "OLD_ICA_VERSION=$OLD_ICA_VERSION" >> $GITHUB_ENV | |
echo "RELEASE_NOTES=$RELEASE_NOTES" >> $GITHUB_ENV | |
# Check if new version | |
if [ "$ICA_VERSION" != "$OLD_ICA_VERSION" ]; then | |
echo "NEW_RELEASE=true" >> $GITHUB_OUTPUT | |
else | |
echo "NEW_RELEASE=false" >> $GITHUB_OUTPUT | |
fi | |
- name: Build Modified IPAs | |
if: steps.check_release.outputs.NEW_RELEASE == 'true' | |
run: | | |
# Build normal version | |
cyan -i Apollo.ipa -o "Apollo-${APOLLO_VERSION}_improvedcustomapi-${ICA_VERSION}.ipa" -f improvedcustomapi.deb --fakesign | |
# Build no-extensions version | |
cyan -i Apollo.ipa -o "NO-EXTENSIONS_Apollo-${APOLLO_VERSION}_improvedcustomapi-${ICA_VERSION}.ipa" -f improvedcustomapi.deb --fakesign -e | |
- name: Generate Release Notes | |
if: steps.check_release.outputs.NEW_RELEASE == 'true' | |
run: | | |
echo "# Apollo for Reddit (with ImprovedCustomApi) Release Information" > RELEASE_NOTES.md | |
echo "Apollo .IPA Version: \`${{ env.APOLLO_VERSION }}\`" >> RELEASE_NOTES.md | |
echo "ImprovedCustomApi .DEB Version: \`${{ env.ICA_VERSION }}\`" >> RELEASE_NOTES.md | |
echo "" >> RELEASE_NOTES.md | |
echo "**RELEASE \`${{ env.APOLLO_VERSION }}\`-\`${{ env.ICA_VERSION }}\`:** ($(date +'%Y/%m/%d'))" >> RELEASE_NOTES.md | |
echo "- Updated ImprovedCustomApi from \`${{ env.OLD_ICA_VERSION }}\` to \`${{ env.ICA_VERSION }}\`" >> RELEASE_NOTES.md | |
echo " - ${{ env.RELEASE_NOTES }}" >> RELEASE_NOTES.md | |
echo "" >> RELEASE_NOTES.md | |
echo "# Known issues" >> RELEASE_NOTES.md | |
echo "- Apollo Ultra features may cause app to crash" >> RELEASE_NOTES.md | |
echo "- Imgur multi-image upload" >> RELEASE_NOTES.md | |
echo "- Uploads usually fail on the first attempt but subsequent retries should succeed" >> RELEASE_NOTES.md | |
echo "- Share URLs in private messages and long-tapping them still open in the in-app browser" >> RELEASE_NOTES.md | |
- name: Create Release | |
if: steps.check_release.outputs.NEW_RELEASE == 'true' | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: v${{ env.APOLLO_VERSION }}_${{ env.ICA_VERSION }} | |
name: Apollo v${{ env.APOLLO_VERSION }} with ImprovedCustomApi v${{ env.ICA_VERSION }} | |
body_path: RELEASE_NOTES.md | |
files: | | |
Apollo-${{ env.APOLLO_VERSION }}_improvedcustomapi-${{ env.ICA_VERSION }}.ipa | |
NO-EXTENSIONS_Apollo-${{ env.APOLLO_VERSION }}_improvedcustomapi-${{ env.ICA_VERSION }}.ipa | |
- name: Upload to Catbox | |
if: ${{ inputs.catbox_upload && steps.check_release.outputs.NEW_RELEASE == 'true' }} | |
id: catbox_upload | |
run: | | |
# Upload both IPAs to Catbox.moe | |
CATBOX_URL=$(curl -F "fileToUpload=@Apollo-${APOLLO_VERSION}_improvedcustomapi-${ICA_VERSION}.ipa" https://catbox.moe/user/api.php) | |
CATBOX_URL_NO_EXT=$(curl -F "fileToUpload=@NO-EXTENSIONS_Apollo-${APOLLO_VERSION}_improvedcustomapi-${ICA_VERSION}.ipa" https://catbox.moe/user/api.php) | |
echo "CATBOX_URL=$CATBOX_URL" >> $GITHUB_ENV | |
echo "CATBOX_URL_NO_EXT=$CATBOX_URL_NO_EXT" >> $GITHUB_ENV | |
- name: Update current version | |
if: steps.check_release.outputs.NEW_RELEASE == 'true' | |
run: | | |
echo "${{ env.ICA_VERSION }}" > current_version.txt | |
git config --global user.name 'GitHub Action' | |
git config --global user.email 'action@github.com' | |
git add current_version.txt | |
git commit -m "Update current version to ${{ env.ICA_VERSION }}" || true | |
git push || true | |
- name: Job Summary | |
run: | | |
echo "### 📊 Workflow Summary" >> $GITHUB_STEP_SUMMARY | |
if [ "${{ steps.check_release.outputs.NEW_RELEASE }}" == "true" ]; then | |
echo "✅ New release created: v${{ env.APOLLO_VERSION }}-${{ env.ICA_VERSION }}" >> $GITHUB_STEP_SUMMARY | |
echo "✅ Version tracking updated" >> $GITHUB_STEP_SUMMARY | |
else | |
echo "ℹ️ No new release needed. Current version is up to date." >> $GITHUB_STEP_SUMMARY | |
fi | |
- name: Job Summary - Artifact Upload | |
if: steps.check_release.outputs.NEW_RELEASE == 'true' | |
run: | | |
REPO_URL="https://github.com/${{ github.repository }}" | |
RELEASES_URL="$REPO_URL/releases/tag/v${{ env.APOLLO_VERSION }}_${{ env.ICA_VERSION }}" | |
echo "### 📦 Artifact Upload" >> $GITHUB_STEP_SUMMARY | |
echo "✅ Artifacts uploaded successfully!" >> $GITHUB_STEP_SUMMARY | |
echo "🔗 [Download artifacts]($RELEASES_URL)" >> $GITHUB_STEP_SUMMARY | |
- name: Job Summary - Catbox Upload | |
if: ${{ inputs.catbox_upload && steps.check_release.outputs.NEW_RELEASE == 'true' }} | |
run: | | |
echo "### 🐱 Catbox Upload" >> $GITHUB_STEP_SUMMARY | |
echo "✅ Catbox upload successful!" >> $GITHUB_STEP_SUMMARY | |
echo "🔗 [Download from Catbox (Standard)](${{ env.CATBOX_URL }})" >> $GITHUB_STEP_SUMMARY | |
echo "🔗 [Download from Catbox (No Extensions)](${{ env.CATBOX_URL_NO_EXT }})" >> $GITHUB_STEP_SUMMARY | |
- name: Job Summary - Release | |
if: steps.check_release.outputs.NEW_RELEASE == 'true' | |
run: | | |
REPO_URL="https://github.com/${{ github.repository }}" | |
RELEASES_URL="$REPO_URL/releases/tag/v${{ env.APOLLO_VERSION }}-${{ env.ICA_VERSION }}" | |
echo "### 🚀 Release" >> $GITHUB_STEP_SUMMARY | |
echo "✅ Release v${{ env.APOLLO_VERSION }}-${{ env.ICA_VERSION }} created successfully!" >> $GITHUB_STEP_SUMMARY | |
echo "🔗 [View release]($RELEASES_URL)" >> $GITHUB_STEP_SUMMARY |