Загрузка данных
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: Compile App Bundle
run: |
mkdir -p Dopamine.app
# Компиляция всех swift файлов в единый бинарник под iOS
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
- name: Install Dependencies & Generate Icon
run: |
# Флаг --break-system-packages обходит ограничение PEP 668
python3 -m pip install Pillow --break-system-packages
python3 -c "
from PIL import Image, ImageDraw
import os
# Базовый холст 1024x1024
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')
# Сохраняем иконку под стандартные размеры iOS
img.save('Dopamine.app/AppIcon60x60@2x.png')
img.save('Dopamine.app/AppIcon60x60@3x.png')
"
- name: Create Info.plist with Icon config
run: |
cat <<EOF > Dopamine.app/Info.plist
<?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>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>
EOF
- name: Package into IPA
run: |
# Чистим старые сборки и упаковываем строго правильную структуру Payload/Dopamine.app
rm -rf Payload Dopamine.ipa
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