mirror of
https://github.com/whoeevee/EeveeSpotifyReborn.git
synced 2026-01-09 00:23:20 +01:00
automatic release workflow\!
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
name: Build and Release Swift
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
SWIFTPROTOBUF_VERSION: "1.29.0"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: '16.2.0'
|
||||
|
||||
- name: Setup Theos
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: theos/theos
|
||||
path: ${{ github.workspace }}/theos
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
brew install make dpkg ldid
|
||||
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
|
||||
|
||||
- name: Copy SwiftProtobuf (rootful)
|
||||
run: |
|
||||
mkdir swiftprotobuf && cd "$_"
|
||||
wget https://github.com/whoeevee/swift-protobuf/releases/download/${{ env.SWIFTPROTOBUF_VERSION }}/org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm.deb
|
||||
ar -x org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm.deb
|
||||
tar -xvf data.tar.lzma
|
||||
cp -r Library/Frameworks/SwiftProtobuf.framework $THEOS/lib
|
||||
|
||||
- name: Copy SwiftProtobuf (rootless)
|
||||
run: |
|
||||
mkdir swiftprotobuf-rootless && cd "$_"
|
||||
wget https://github.com/whoeevee/swift-protobuf/releases/download/${{ env.SWIFTPROTOBUF_VERSION }}/org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm64.deb
|
||||
ar -x org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm64.deb
|
||||
tar -xvf data.tar.lzma
|
||||
cp -r var/jb/Library/Frameworks/SwiftProtobuf.framework $THEOS/lib/iphone/rootless
|
||||
|
||||
- name: Build EeveeSpotify (rootful)
|
||||
run: |
|
||||
make package FINALPACKAGE=1
|
||||
echo "filename=$(find . -not -name '*debug*' -path './packages/*' | cut -d/ -f3)" >> $GITHUB_ENV
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.filename}}
|
||||
path: packages/${{env.filename}}
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Build EeveeSpotify (rootless)
|
||||
run: |
|
||||
make package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
|
||||
echo "filename=$(find . -name '*arm64*' -path './packages/*' | cut -d/ -f3)" >> $GITHUB_ENV
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.filename}}
|
||||
path: packages/${{env.filename}}
|
||||
if-no-files-found: error
|
||||
|
||||
release:
|
||||
needs: build
|
||||
runs-on: macos-latest
|
||||
defaults:
|
||||
run:
|
||||
shell: zsh {0}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
merge-multiple: true
|
||||
|
||||
- name: Set EeveeSpotify Versions
|
||||
run: |
|
||||
EEVEESPOTIFY_ROOTFUL=$(echo *iphoneos-arm.deb)
|
||||
EEVEESPOTIFY_ROOTLESS=$(echo *iphoneos-arm64.deb)
|
||||
EEVEESPOTIFY_VERSION=${${(s:_:)EEVEESPOTIFY_ROOTFUL}[2]}
|
||||
|
||||
echo "EEVEESPOTIFY_ROOTFUL=$EEVEESPOTIFY_ROOTFUL" >> $GITHUB_ENV
|
||||
echo "EEVEESPOTIFY_ROOTLESS=$EEVEESPOTIFY_ROOTLESS" >> $GITHUB_ENV
|
||||
echo "EEVEESPOTIFY_VERSION=$EEVEESPOTIFY_VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Download SwiftProtobuf
|
||||
run: |
|
||||
wget https://github.com/whoeevee/swift-protobuf/releases/download/${{ env.SWIFTPROTOBUF_VERSION }}/org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm.deb
|
||||
wget https://github.com/whoeevee/swift-protobuf/releases/download/${{ env.SWIFTPROTOBUF_VERSION }}/org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm64.deb
|
||||
|
||||
echo "SWIFTPROTOBUF_ROOTFUL=org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm.deb" >> $GITHUB_ENV
|
||||
echo "SWIFTPROTOBUF_ROOTLESS=org.swift.protobuf.swiftprotobuf_${{ env.SWIFTPROTOBUF_VERSION }}_iphoneos-arm64.deb" >> $GITHUB_ENV
|
||||
|
||||
- name: Download OpenSpotifySafariExtension
|
||||
run: |
|
||||
git clone https://github.com/BillyCurtis/OpenSpotifySafariExtension
|
||||
echo "OPENSPOTIFYSAFARIEXTENSION=OpenSpotifySafariExtension/OpenSpotifySafariExtension.appex" >> $GITHUB_ENV
|
||||
|
||||
- name: Download Decrypted Spotify Package
|
||||
run: |
|
||||
response=$(curl -s 'https://decrypt.whoeevee.com/decrypted?appId=324684580&apiKey=${{ secrets.EEVEEDECRYPTER_API_KEY }}')
|
||||
link=$(echo "$response" | jq -r '.link')
|
||||
wget -q $link
|
||||
echo "SPOTIFY_VERSION=${${(s/-/)link}[2]%.ipa}" >> $GITHUB_ENV
|
||||
echo "SPOTIFY_PACKAGE=$(echo *.ipa)" >> $GITHUB_ENV
|
||||
|
||||
- name: Setup insert-dylib
|
||||
run: |
|
||||
git clone https://github.com/Tyilo/insert_dylib.git
|
||||
xcrun clang -x c -arch arm64 ./insert_dylib/insert_dylib/main.c -I/usr/include/ -o insert-dylib
|
||||
sudo mv insert-dylib /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/insert-dylib
|
||||
|
||||
- name: Setup ivinject
|
||||
run: |
|
||||
git clone https://github.com/whoeevee/ivinject.git
|
||||
cp -r ./ivinject/KnownFrameworks ~/.ivinject
|
||||
wget https://github.com/whoeevee/ivinject/releases/download/first/ivinject-arm64
|
||||
sudo mv ivinject-arm64 /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/ivinject-arm64
|
||||
|
||||
- name: Setup ipapatch
|
||||
run: |
|
||||
wget https://github.com/asdfzxcvbn/ipapatch/releases/download/v2.0.0/ipapatch.macos-arm64
|
||||
sudo mv ipapatch.macos-arm64 /usr/local/bin/ipapatch
|
||||
sudo chmod +x /usr/local/bin/ipapatch
|
||||
|
||||
- name: Check Version
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
LATEST_EEVEESPOTIFY_VERSION=$(gh release list --limit 1 --json tagName --jq '.[0].tagName[5:]')
|
||||
echo "LATEST_EEVEESPOTIFY_VERSION=$LATEST_EEVEESPOTIFY_VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Create EeveeSpotify Package
|
||||
run: |
|
||||
EEVEESPOTIFY_PACKAGE="EeveeSpotify-${EEVEESPOTIFY_VERSION}-${SPOTIFY_VERSION}.ipa"
|
||||
echo "EEVEESPOTIFY_PACKAGE=$EEVEESPOTIFY_PACKAGE" >> $GITHUB_ENV
|
||||
|
||||
ivinject-arm64 "$SPOTIFY_PACKAGE" "$EEVEESPOTIFY_PACKAGE" \
|
||||
-i "$EEVEESPOTIFY_ROOTFUL" "$SWIFTPROTOBUF_ROOTFUL" "$OPENSPOTIFYSAFARIEXTENSION" \
|
||||
-s - -d --level Optimal
|
||||
|
||||
- name: Create Patched Package
|
||||
run: |
|
||||
EEVEESPOTIFY_PATCHED_PACKAGE="EeveeSpotify-${EEVEESPOTIFY_VERSION}-${SPOTIFY_VERSION}-patched.ipa"
|
||||
echo "EEVEESPOTIFY_PATCHED_PACKAGE=$EEVEESPOTIFY_PATCHED_PACKAGE" >> $GITHUB_ENV
|
||||
|
||||
ipapatch -input "$EEVEESPOTIFY_PACKAGE" -output "$EEVEESPOTIFY_PATCHED_PACKAGE"
|
||||
|
||||
- name: Compose Changelog
|
||||
if: env.LATEST_EEVEESPOTIFY_VERSION != env.EEVEESPOTIFY_VERSION
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
last_update_repo_date=$(git log -1 --grep="update: repo" --format=%cI)
|
||||
CHANGELOG=""
|
||||
|
||||
gh pr list --state merged --search "merged:>${last_update_repo_date}" --json files,author \
|
||||
| jq -r '
|
||||
.[]
|
||||
| .author.login as $login
|
||||
| .files[0].path as $file
|
||||
| "\($login) \($file)"
|
||||
' \
|
||||
| tail -r \
|
||||
| while read -r login file; do
|
||||
lang_code=$(echo "$file" | grep -oE '/([a-zA-Z-]+)\.lproj/' | sed -E 's|/([a-zA-Z-]+)\.lproj/|\1|')
|
||||
lang_name=$(echo "import Foundation; print(Locale.current.localizedString(forIdentifier: \"$lang_code\") ?? \"\")" | swift -)
|
||||
|
||||
if [ -z "$lang_name" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
CHANGELOG+="* Updated ${lang_name} localization by @${login}"$'\n'
|
||||
done
|
||||
|
||||
echo "CHANGELOG<<EOF" >> $GITHUB_ENV
|
||||
echo "$CHANGELOG" >> $GITHUB_ENV
|
||||
echo "EOF" >> $GITHUB_ENV
|
||||
|
||||
- name: Create Release
|
||||
if: env.LATEST_EEVEESPOTIFY_VERSION != env.EEVEESPOTIFY_VERSION
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
with:
|
||||
tag_name: swift${{ env.EEVEESPOTIFY_VERSION }}
|
||||
release_name: Swift ${{ env.EEVEESPOTIFY_VERSION }}
|
||||
body: ${{ env.CHANGELOG }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
- name: Upload Packages
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh release upload "swift$EEVEESPOTIFY_VERSION" \
|
||||
"$EEVEESPOTIFY_PACKAGE" \
|
||||
"$EEVEESPOTIFY_ROOTFUL" "$EEVEESPOTIFY_ROOTLESS" \
|
||||
"$SWIFTPROTOBUF_ROOTFUL" "$SWIFTPROTOBUF_ROOTLESS" \
|
||||
--clobber
|
||||
|
||||
- name: Upload Packages to Telegram
|
||||
env:
|
||||
API_ID: ${{ secrets.API_ID }}
|
||||
API_HASH: ${{ secrets.API_HASH }}
|
||||
BOT_TOKEN: ${{ secrets.BOT_TOKEN }}
|
||||
EEVEESPOTIFY_CHANNEL_ID: ${{ secrets.EEVEESPOTIFY_CHANNEL_ID }}
|
||||
EEVEESPOTIFY_CHANNEL_ACCESS_HASH: ${{ secrets.EEVEESPOTIFY_CHANNEL_ACCESS_HASH }}
|
||||
run: ./Tools/TelegramUploadEeveeSpotify
|
||||
|
||||
update-repo:
|
||||
needs: release
|
||||
permissions:
|
||||
contents: write
|
||||
uses: ./.github/workflows/update-repo.yml
|
||||
@@ -1,75 +0,0 @@
|
||||
name: Build Swift
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ "swift" ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-14
|
||||
env:
|
||||
THEOS: ${{ github.workspace }}/theos
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: maxim-lobanov/setup-xcode@v1
|
||||
with:
|
||||
xcode-version: '16.2.0'
|
||||
|
||||
- name: Setup Theos
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: theos/theos
|
||||
path: ${{ github.workspace }}/theos
|
||||
submodules: recursive
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
brew install make dpkg ldid
|
||||
echo "$(brew --prefix make)/libexec/gnubin" >> $GITHUB_PATH
|
||||
|
||||
- name: Copy SwiftProtobuf (rootful)
|
||||
run: |
|
||||
mkdir swiftprotobuf && cd "$_"
|
||||
wget https://github.com/whoeevee/swift-protobuf/releases/download/1.29.0/org.swift.protobuf.swiftprotobuf_1.29.0_iphoneos-arm.deb
|
||||
ar -x org.swift.protobuf.swiftprotobuf_1.29.0_iphoneos-arm.deb
|
||||
tar -xvf data.tar.lzma
|
||||
cp -r Library/Frameworks/SwiftProtobuf.framework $THEOS/lib
|
||||
|
||||
- name: Copy SwiftProtobuf (rootless)
|
||||
run: |
|
||||
mkdir swiftprotobuf-rootless && cd "$_"
|
||||
wget https://github.com/whoeevee/swift-protobuf/releases/download/1.29.0/org.swift.protobuf.swiftprotobuf_1.29.0_iphoneos-arm64.deb
|
||||
ar -x org.swift.protobuf.swiftprotobuf_1.29.0_iphoneos-arm64.deb
|
||||
tar -xvf data.tar.lzma
|
||||
cp -r var/jb/Library/Frameworks/SwiftProtobuf.framework $THEOS/lib/iphone/rootless
|
||||
|
||||
- name: Build EeveeSpotify (debug)
|
||||
run: |
|
||||
make package
|
||||
echo "filename=$(find . -name '*debug*' -path './packages/*' | cut -d/ -f3)" >> $GITHUB_ENV
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.filename}}
|
||||
path: packages/${{env.filename}}
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Build EeveeSpotify (rootful)
|
||||
run: |
|
||||
make package FINALPACKAGE=1
|
||||
echo "filename=$(find . -not -name '*debug*' -path './packages/*' | cut -d/ -f3)" >> $GITHUB_ENV
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.filename}}
|
||||
path: packages/${{env.filename}}
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Build EeveeSpotify (rootless)
|
||||
run: |
|
||||
make package FINALPACKAGE=1 THEOS_PACKAGE_SCHEME=rootless
|
||||
echo "filename=$(find . -name '*arm64*' -path './packages/*' | cut -d/ -f3)" >> $GITHUB_ENV
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{env.filename}}
|
||||
path: packages/${{env.filename}}
|
||||
if-no-files-found: error
|
||||
@@ -2,6 +2,7 @@ name: Update Repo
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
Reference in New Issue
Block a user