Build and Release #11
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 and Release | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
SPOTURL: | ||
description: 'Direct URL to Spotify .ipa' | ||
required: true | ||
CHANGEVERSION: | ||
description: 'SpotC++ Version Number' | ||
required: false | ||
EEVEEVERSION: | ||
description: 'EeveeSpotify Version' | ||
required: false | ||
jobs: | ||
build: | ||
runs-on: macos-latest | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v2 | ||
- name: Install Pyzule | ||
run: bash -c "$(curl https://raw.githubusercontent.com/asdfzxcvbn/pyzule/main/install-pyzule.sh)" | ||
- name: Fetch EeveeSpotify release tags | ||
id: fetch_eevee_tags | ||
run: | | ||
EEVEEVERSION=${{ github.event.inputs.EEVEEVERSION }} | ||
if [ -z "$EEVEEVERSION" ]; then | ||
REALEEVEEVERSION=$(curl -s https://api.github.com/repos/whoeevee/EeveeSpotify/releases/latest | jq -r .tag_name) | ||
else | ||
REALEEVEEVERSION=$(curl -s https://api.github.com/repos/whoeevee/EeveeSpotify/releases | jq -r --arg EEVEEVERSION "$EEVEEVERSION" '.[] | select(.tag_name | contains($EEVEEVERSION)) | .tag_name' | head -n 1) | ||
fi | ||
echo "REALEEVEEVERSION=$REALEEVEEVERSION" >> $GITHUB_ENV | ||
- name: Create Build Components folder | ||
run: mkdir -p "Build Components" | ||
- name: Download Spotify.ipa | ||
run: | | ||
curl -L ${{ github.event.inputs.SPOTURL }} -o "Build Components/Spotify.ipa" | ||
echo "spotifypath=Build Components/Spotify.ipa" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
Check failure on line 44 in .github/workflows/Build and Release.yml GitHub Actions / Build and ReleaseInvalid workflow file
|
||
- name: Upload Spotify.ipa to VirusTotal | ||
uses: crazy-max/ghaction-virustotal@v4 | ||
with: | ||
api_key: ${{ secrets.VIRUSTOTALKEY }} | ||
path: "Build Components/Spotify.ipa" | ||
id: scan_spotify | ||
- name: Set VirusTotal Analysis URL for Spotify.ipa | ||
run: echo "VTVANILLASPOTIFY=${{ steps.scan_spotify.outputs.analysis }}" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
- name: Download EeveeSpotify .deb files | ||
id: download_eevee | ||
run: | | ||
REALEEVEEVERSION=${{ env.REALEEVEEVERSION }} | ||
EEVEERELEASE_URL="https://api.github.com/repos/whoeevee/EeveeSpotify/releases/tags/$REALEEVEEVERSION" | ||
EEVEERESPONSE=$(curl -s $EEVEERELEASE_URL) | ||
EEVEEDOWNLOAD=$(echo $EEVEERESPONSE | jq -r '.assets[] | select(.name | startswith("com.eevee.spotify") and endswith("iphoneos-arm.deb")) | .browser_download_url') | ||
SWIFTPROTOBUF=$(echo $EEVEERESPONSE | jq -r '.assets[] | select(.name | startswith("org.swift.protobuf.swiftprotobuf") and endswith("iphoneos-arm.deb")) | .browser_download_url') | ||
SWIFTPROTOBUFVERSION=$(echo $SWIFTPROTOBUF | sed -n 's/.*org.swift.protobuf.swiftprotobuf_\(.*\)_iphoneos-arm.deb/\1/p') | ||
curl -L $EEVEEDOWNLOAD -o "Build Components/Eevee-arm" | ||
curl -L $SWIFTPROTOBUF -o "Build Components/SwiftProtobuf-arm" | ||
echo "eevee-arm=Build Components/Eevee-arm" >> $GITHUB_ENV | ||
echo "swiftprotobuf=Build Components/SwiftProtobuf-arm" >> $GITHUB_ENV | ||
echo "SWIFTPROTOBUFVERSION=$SWIFTPROTOBUFVERSION" >> $GITHUB_ENV | ||
- name: Upload EeveeSpotify and SwiftProtobuf to VirusTotal | ||
uses: crazy-max/ghaction-virustotal@v4 | ||
with: | ||
api_key: ${{ secrets.VIRUSTOTALKEY }} | ||
path: "Build Components/Eevee-arm,Build Components/SwiftProtobuf-arm" | ||
id: scan_eevee | ||
- name: Set VirusTotal Analysis URL for EeveeSpotify and SwiftProtobuf | ||
run: | | ||
echo "VTEEVEE=$(echo ${{ steps.scan_eevee.outputs.analysis }} | cut -d ',' -f 1)" >> $GITHUB_ENV | ||
echo "VTSWIFTPROTOBUF=$(echo ${{ steps.scan_eevee.outputs.analysis }} | cut -d ',' -f 2)" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
- name: Download Orion from Chariz repo | ||
run: | | ||
ORIONURL=$(curl -s https://repo.chariz.com/api/v1/packages/dev.theos.orion14 | jq -r '.data.versions[0].links.deb') | ||
ORIONVERSION=$(curl -s https://repo.chariz.com/api/v1/packages/dev.theos.orion14 | jq -r '.data.versions[0].version') | ||
curl -L $ORIONURL -o "Build Components/orion" | ||
echo "orion=Build Components/orion" >> $GITHUB_ENV | ||
echo "ORIONVERSION=$ORIONVERSION" >> $GITHUB_ENV | ||
- name: Upload Orion to VirusTotal | ||
uses: crazy-max/ghaction-virustotal@v4 | ||
with: | ||
api_key: ${{ secrets.VIRUSTOTALKEY }} | ||
path: "Build Components/orion" | ||
id: scan_orion | ||
- name: Set VirusTotal Analysis URL for Orion | ||
run: echo "VTORION=${{ steps.scan_orion.outputs.analysis }}" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
- name: Download Sposify from Dynastic repo | ||
run: | | ||
SPOSIFYURL=$(curl -s https://repo.dynastic.co/api/v1/packages/com.spos | jq -r '.data.versions[0].links.deb') | ||
SPOSIFYVERSION=$(curl -s https://repo.dynastic.co/api/v1/packages/com.spos | jq -r '.data.versions[0].version') | ||
curl -L $SPOSIFYURL -o "Build Components/sposify" | ||
echo "sposify=Build Components/sposify" >> $GITHUB_ENV | ||
echo "SPOSIFYVERSION=$SPOSIFYVERSION" >> $GITHUB_ENV | ||
- name: Upload Sposify to VirusTotal | ||
uses: crazy-max/ghaction-virustotal@v4 | ||
with: | ||
api_key: ${{ secrets.VIRUSTOTALKEY }} | ||
path: "Build Components/sposify" | ||
id: scan_sposify | ||
- name: Set VirusTotal Analysis URL for Sposify | ||
run: echo "VTSPOSIFY=${{ steps.scan_sposify.outputs.analysis }}" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
- name: Download SposifyFix from level3tjg repo | ||
run: | | ||
SPOSIFYFIXURL=$(curl -s https://level3tjg.me/repo/api/Packages/com.level3tjg.sposifyfix | jq -r '.versions[0].links.deb') | ||
SPOSIFYFIXVERSION=$(curl -s https://level3tjg.me/repo/api/Packages/com.level3tjg.sposifyfix | jq -r '.versions[0].version') | ||
curl -L $SPOSIFYFIXURL -o "Build Components/sposifyfix" | ||
echo "sposifyfix=Build Components/sposifyfix" >> $GITHUB_ENV | ||
echo "SPOSIFYFIXVERSION=$SPOSIFYFIXVERSION" >> $GITHUB_ENV | ||
- name: Upload SposifyFix to VirusTotal | ||
uses: crazy-max/ghaction-virustotal@v4 | ||
with: | ||
api_key: ${{ secrets.VIRUSTOTALKEY }} | ||
path: "Build Components/sposifyfix" | ||
id: scan_sposifyfix | ||
- name: Set VirusTotal Analysis URL for SposifyFix | ||
run: echo "VTSPOSIFYFIX=${{ steps.scan_sposifyfix.outputs.analysis }}" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
- name: Clone OpenSpotifySafariExtension | ||
run: git clone https://github.com/whoeevee/OpenSpotifySafariExtension | ||
- name: Copy OpenSpotifySafariExtension.appex | ||
run: | | ||
cp OpenSpotifySafariExtension/OpenSpotifySafariExtension.appex "Build Components/" | ||
cd OpenSpotifySafariExtension | ||
EXTCOMMIT=$(git rev-parse --short HEAD) | ||
echo "EXTCOMMIT=$EXTCOMMIT" >> $GITHUB_ENV | ||
- name: Compress OpenSpotifySafariExtension | ||
run: | | ||
zip -r OpenSpotifySafariExtension.zip OpenSpotifySafariExtension | ||
mv OpenSpotifySafariExtension.zip "Build Components/OpenSpotifySafariExtension.zip" | ||
- name: Upload OpenSpotifySafariExtension.zip to VirusTotal | ||
uses: crazy-max/ghaction-virustotal@v4 | ||
with: | ||
api_key: ${{ secrets.VIRUSTOTALKEY }} | ||
path: "Build Components/OpenSpotifySafariExtension.zip" | ||
id: scan_extension | ||
- name: Set VirusTotal Analysis URL for OpenSpotifySafariExtension | ||
run: echo "VTEXT=${{ steps.scan_extension.outputs.analysis }}" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
- name: Duplicate Spotify.ipa and unzip | ||
run: | | ||
cp "Build Components/Spotify.ipa" "Build Components/SpotifyAnylises.zip" | ||
unzip "Build Components/SpotifyAnylises.zip" -d "Build Components/payload" | ||
cp "Build Components/payload/Payload/Spotify.app/Info.plist" "Build Components/Info.plist" | ||
VANILLASPOTIFYVERSION=$(defaults read "Build Components/Info.plist" CFBundleVersion) | ||
echo "VANILLASPOTIFYVERSION=$VANILLASPOTIFYVERSION" >> $GITHUB_ENV | ||
cp "Build Components/OpenSpotifySafariExtension.appex" "Build Components/payload/Payload/Spotify.app/PlugIns/" | ||
cd "Build Components/payload" | ||
zip -r "SpotifyEXT.zip" Payload | ||
mv "SpotifyEXT.zip" "../SpotifyEXT.ipa" | ||
echo "spotifyEXTpath=Build Components/SpotifyEXT.ipa" >> $GITHUB_ENV | ||
- name: Remove temporary files | ||
run: | | ||
rm -rf "Build Components/Info.plist" | ||
rm -rf "Build Components/SpotifyAnylises.zip" | ||
rm -rf "Build Components/payload" | ||
- name: Set SpotC++ version if not provided | ||
run: | | ||
if [ -z "${{ github.event.inputs.CHANGEVERSION }}" ]; then | ||
LATEST_TAG=$(curl -s https://api.github.com/repos/SpotCompiled/SpotC-Plus-Plus/tags | jq -r '.[0].name' | sed 's/v//') | ||
CHANGEVERSION=$(echo $LATEST_TAG | awk -F. -v OFS=. '{$NF += 1 ; print}') | ||
else | ||
CHANGEVERSION=${{ github.event.inputs.CHANGEVERSION }} | ||
fi | ||
echo "CHANGEVERSION=$CHANGEVERSION" >> $GITHUB_ENV | ||
- name: Set components path | ||
run: echo "componentspath=Build Components" >> $GITHUB_ENV | ||
- name: Patch Spotify.ipa | ||
run: | | ||
pyzule -i ${{ env.spotifyEXTpath }} -o ${{ env.componentspath }}/SpotifyPatched.ipa -v ${{ env.CHANGEVERSION }} -b com.yodaluca23.SpotCPlusPlus -f ${{ env.sposifyfix }} ${{ env.sposify }} ${{ env.orion }} ${{ env.swiftprotobuf }} ${{ env.eevee-arm }} -u | ||
- name: Upload SpotifyPatched.ipa to VirusTotal | ||
uses: crazy-max/ghaction-virustotal@v4 | ||
with: | ||
api_key: ${{ secrets.VIRUSTOTALKEY }} | ||
path: "Build Components/SpotifyPatched.ipa" | ||
id: scan_spotc | ||
- name: Set VirusTotal Analysis URL for SpotC++ | ||
run: echo "VTSPOTC=${{ steps.scan_spotc.outputs.analysis }}" >> $GITHUB_ENV | ||
if: ${{ secrets.VIRUSTOTALKEY }} | ||
- name: Create draft release | ||
uses: actions/create-release@v1 | ||
with: | ||
tag_name: "v${{ env.CHANGEVERSION }}" | ||
release_name: "SpotC++ v${{ env.CHANGEVERSION }}" | ||
draft: true | ||
prerelease: false | ||
body: | | ||
## ChangeLog | ||
- Updated [EeveeSpotify](https://github.com/whoeevee/EeveeSpotify) to ${{ env.REALEEVEEVERSION }} | ||
${{ steps.fetch_eevee_tags.outputs.REALEEVEEVERSION }} | ||
- Updated Spotify to version ${{ env.VANILLASPOTIFYVERSION }} | ||
*** | ||
Vanilla IPA decrypted using [a fork of BagBak](https://github.com/TbhLovers/bagbak), on my personal MacBook Air and Jailbroken iPhone XR running [Dopamine](https://github.com/opa334/Dopamine), feel free to contact me with questions about this environment. | ||
App .ipa modified and tweaks injected using Pyzule with the github Action Workflow. | ||
${{ secrets.VIRUSTOTALKEY && ' | ||
<details> | ||
<summary>Version Details & VirusTotal Results</summary><br> | ||
Spotify Version: v${{ env.VANILLASPOTIFYVERSION }} | ||
[Vanilla Spotify VirusTotal](${{ env.VTVANILLASPOTIFY }})<br> | ||
EeveeSpotify Version: ${{ env.REALEEVEEVERSION }} | ||
[EeveeSpotify .deb VirusTotal](${{ env.VTEEVEE }})<br> | ||
Sposify v${{ env.SPOSIFYVERSION }} | ||
[Sposify VirusTotal](${{ env.VTSPOSIFY }})<br> | ||
OpenSpotifySafariExtension Commit: ${{ env.EXTCOMMIT }} | ||
[OpenSpotifySafariExtension Repo Compressed .zip VirusTotal](${{ env.VTEXT }})<br> | ||
Sposify Fix v${{ env.SPOSIFYFIXVERSION }} | ||
[Sposify Fix VirusTotal](${{ env.VTSPOSIFYFIX }})<br> | ||
Orion Runtime (iOS 14 - 16) v${{ env.ORIONVERSION }} | ||
[Orion Runtime (iOS 14 - 16) .deb VirusTotal](${{ env.VTORION }})<br> | ||
SwiftProtobuf Framework v${{ env.SWIFTPROTOBUFVERSION }} | ||
[SwiftProtobuf Framework .deb VirusTotal](${{ env.VTSWIFTPROTOBUF }})<br> | ||
SpotC++ Version: v${{ env.CHANGEVERSION }} | ||
[SpotC++ VirusTotal](${{ env.VTSPOTC }}) | ||
<br> | ||
</details>' || '' }} | ||
env: | ||
CHANGEVERSION: ${{ env.CHANGEVERSION }} | ||
REALEEVEEVERSION: ${{ env.REALEEVEEVERSION }} | ||
VANILLASPOTIFYVERSION: ${{ env.VANILLASPOTIFYVERSION }} | ||
SPOSIFYVERSION: ${{ env.SPOSIFYVERSION }} | ||
SPOSIFYFIXVERSION: ${{ env.SPOSIFYFIXVERSION }} | ||
ORIONVERSION: ${{ env.ORIONVERSION }} | ||
SWIFTPROTOBUFVERSION: ${{ env.SWIFTPROTOBUFVERSION }} | ||
EXTCOMMIT: ${{ env.EXTCOMMIT }} | ||
VTVANILLASPOTIFY: ${{ env.VTVANILLASPOTIFY }} | ||
VTEEVEE: ${{ env.VTEEVEE }} | ||
VTSWIFTPROTOBUF: ${{ env.VTSWIFTPROTOBUF }} | ||
VTORION: ${{ env.VTORION }} | ||
VTSPOSIFY: ${{ env.VTSPOSIFY }} | ||
VTSPOSIFYFIX: ${{ env.VTSPOSIFYFIX }} | ||
VTSPOTC: ${{ env.VTSPOTC }} |