diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2706692..c95f222 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,45 +20,87 @@ jobs: - name: Install dependencies run: | - # Устанавливаем базу, игнорируя ошибки - npm install --legacy-peer-deps || true - - # Явно ставим версии, которые требовал лог ранее - npm install expo-image@~1.13.0 expo-file-system@~17.0.1 - - # Устанавливаем плеер через Expo CLI — это критично для правильных путей - npx expo install react-native-track-player + # Ставим зависимости, игнорируя скрипты, чтобы они не падали на полпути + npm install --legacy-peer-deps --ignore-scripts + npm install react-native-svg --legacy-peer-deps --ignore-scripts + + - name: Hardcode Track Player Fix + run: | + # 1. ГЛУБОКИЙ ФИКС ПУТЕЙ (решаем ошибку со скриншота) + # Нам нужно, чтобы файл назывался именно trackPlayer.js, а не просто trackPlayer + TARGET_DIR="node_modules/react-native-track-player/lib/src" + if [ -d "$TARGET_DIR" ]; then + # Копируем файл, добавляя расширение .js, если его нет + cp "$TARGET_DIR/trackPlayer.js" "$TARGET_DIR/trackPlayer.js" 2>/dev/null || \ + cp "$TARGET_DIR/trackPlayer" "$TARGET_DIR/trackPlayer.js" 2>/dev/null || true + fi + + # 2. Переписываем плагин на CommonJS (твой старый рабочий код) + PLUGIN_PATH="node_modules/react-native-track-player/app.plugin.js" + cat << 'EOF' > "$PLUGIN_PATH" + const { withInfoPlist } = require('@expo/config-plugins'); + module.exports = function(config) { + return withInfoPlist(config, (config) => { + if (!config.modResults.UIBackgroundModes) { + config.modResults.UIBackgroundModes = []; + } + if (!config.modResults.UIBackgroundModes.includes('audio')) { + config.modResults.UIBackgroundModes.push('audio'); + } + return config; + }); + }; + EOF + + - name: Fix Corrupted PNG Assets + run: | + # Твой фикс для битых картинок, чтобы Xcode не ругался + find . -type f -iname "*.png" -exec sips -s format png {} --out {} \; + + - name: Fix Git state + run: | + git config --global user.email "bot@example.com" + git config --global user.name "Builder Bot" + git add . + git commit -m "ci: patch track player and assets" || true - name: Expo prebuild - # Убираем --no-install, чтобы Expo сам перепроверил node_modules перед сборкой - run: npx expo prebuild --platform ios --clean + # Используем --no-install, чтобы наши патчи в node_modules не затерлись + run: npx expo prebuild --platform ios --clean --no-install env: EXPO_NO_DOTENV: 1 - - name: Build unsigned archive + - name: Install CocoaPods run: | - xcodebuild archive \ - -workspace "ios/Burmalda Music.xcworkspace" \ - -scheme "Burmalda Music" \ + # Генерируем .xcworkspace + cd ios && pod install --repo-update && cd .. + + - name: Build unsigned app + run: | + WORKSPACE_PATH=$(find ios -maxdepth 1 -name "*.xcworkspace" | head -1) + SCHEME_NAME=$(basename "$WORKSPACE_PATH" .xcworkspace) + + xcodebuild build \ + -workspace "$WORKSPACE_PATH" \ + -scheme "$SCHEME_NAME" \ -configuration Release \ -sdk iphoneos \ - -archivePath "$RUNNER_TEMP/burmalda.xcarchive" \ - CODE_SIGNING_REQUIRED=NO \ + -derivedDataPath "$RUNNER_TEMP/DerivedData" \ CODE_SIGN_IDENTITY="" \ + CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_ALLOWED=NO \ - ENABLE_BITCODE=NO \ - | xcpretty || true + ENABLE_BITCODE=NO - name: Package IPA run: | + APP_PATH=$(find "$RUNNER_TEMP/DerivedData/Build/Products" -name "*.app" -type d | grep -v "\.xctest" | head -1) mkdir -p Payload - cp -r "$RUNNER_TEMP/burmalda.xcarchive/Products/Applications/"*.app Payload/ + cp -r "$APP_PATH" Payload/ zip -qr burmalda-unsigned.ipa Payload - rm -rf Payload - - name: Upload IPA artifact + - name: Upload IPA uses: actions/upload-artifact@v4 with: name: burmalda-unsigned-ipa path: burmalda-unsigned.ipa - retention-days: 30 + retention-days: 1