Загрузка данных
name: Build TrollStore IPA
on:
push:
branches: [ "main", "master" ]
workflow_dispatch:
jobs:
build:
runs-on: macos-14
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Clean & Compile App
run: |
rm -rf Dopamine.app Payload Dopamine.ipa
mkdir -p Dopamine.app
# Компиляция приложений и всех SwiftUI представлений
swiftc -sdk $(xcrun --sdk iphoneos --show-sdk-path) \
-target arm64-apple-ios16.2 \
-emit-executable \
-o Dopamine.app/Dopamine \
Sources/Dopamine/App.swift \
Sources/Dopamine/Models/StickStore.swift \
Sources/Dopamine/Views/MainTabView.swift \
Sources/Dopamine/Views/CounterView.swift \
Sources/Dopamine/Views/CalendarAnalyticsView.swift \
Sources/Dopamine/Views/HistoryView.swift
- name: Install Dependencies & Generate Assets
run: |
python3 -m pip install Pillow --break-system-packages
# Генерация иконки приложения
python3 -c "
from PIL import Image, ImageDraw
img = Image.new('RGB', (1024, 1024), color='#1C1C1E')
draw = ImageDraw.Draw(img)
center = 512
radius = 320
draw.ellipse([center - radius, center - radius, center + radius, center + radius], fill='#FF5E00')
radius_inner = 180
draw.ellipse([center - radius_inner, center - radius_inner, center + radius_inner, center + radius_inner], fill='#FF9500')
img.save('Dopamine.app/AppIcon60x60@2x.png')
img.save('Dopamine.app/AppIcon60x60@3x.png')
"
# Генерация гарантированно корректного Info.plist
python3 -c "
plist_content = '''<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
<plist version=\"1.0\">
<dict>
<key>CFBundleExecutable</key>
<string>Dopamine</string>
<key>CFBundleIdentifier</key>
<string>com.app.dopamine</string>
<key>CFBundleName</key>
<string>Dopamine</string>
<key>CFBundleDisplayName</key>
<string>Dopamine</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>MinimumOSVersion</key>
<string>16.2</string>
<key>UILaunchScreen</key>
<dict/>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon60x60</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
</dict>
</dict>
</plist>
'''
with open('Dopamine.app/Info.plist', 'w', encoding='utf-8') as f:
f.write(plist_content.strip())
"
# Конвертация в бинарный plist
plutil -convert binary1 Dopamine.app/Info.plist
- name: Ad-hoc Code Sign
run: |
codesign -s - --force --deep Dopamine.app
- name: Package into IPA
run: |
mkdir -p Payload
cp -R Dopamine.app Payload/
zip -qr Dopamine.ipa Payload/
- name: Upload IPA Artifact
uses: actions/upload-artifact@v4
with:
name: Dopamine-TrollStore
path: Dopamine.ipa