name: Build iOS App on: push: branches: [ main, master, develop ] pull_request: branches: [ main, master, develop ] workflow_dispatch: jobs: build: name: Build iOS App runs-on: macos-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: List available Xcode versions run: ls /Applications | grep Xcode || echo "No Xcode versions found with grep" - name: Show Xcode version run: xcodebuild -version - name: Show available SDKs run: xcodebuild -showsdks - name: Create Archive for iOS Device run: | xcodebuild archive \ -project EnvSensorReader.xcodeproj \ -scheme EnvSensorReader \ -sdk iphoneos \ -configuration Release \ -archivePath ./build/EnvSensorReader.xcarchive \ CODE_SIGN_IDENTITY="" \ CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_ALLOWED=NO \ ONLY_ACTIVE_ARCH=NO - name: Export IPA run: | xcodebuild -exportArchive \ -archivePath ./build/EnvSensorReader.xcarchive \ -exportPath ./build/ipa \ -exportOptionsPlist ExportOptions.plist \ -allowProvisioningUpdates || true - name: Create IPA manually if export failed if: always() run: | mkdir -p ./build/ipa if [ -d "./build/EnvSensorReader.xcarchive/Products/Applications/EnvSensorReader.app" ]; then echo "Creating IPA manually from archive..." mkdir -p ./build/ipa/Payload cp -R ./build/EnvSensorReader.xcarchive/Products/Applications/EnvSensorReader.app ./build/ipa/Payload/ cd ./build/ipa zip -r EnvSensorReader.ipa Payload rm -rf Payload cd ../.. echo "IPA created manually" fi - name: Build for iOS Simulator run: | xcodebuild build \ -project EnvSensorReader.xcodeproj \ -scheme EnvSensorReader \ -sdk iphonesimulator \ -configuration Release \ -derivedDataPath ./build \ CODE_SIGN_IDENTITY="" \ CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_ALLOWED=NO \ ONLY_ACTIVE_ARCH=NO - name: Archive build products if: success() run: | mkdir -p artifacts # Copy IPA if it exists if [ -f "build/ipa/EnvSensorReader.ipa" ]; then echo "Copying IPA..." cp build/ipa/EnvSensorReader.ipa artifacts/ fi # Copy xcarchive if [ -d "build/EnvSensorReader.xcarchive" ]; then echo "Copying xcarchive..." cp -R build/EnvSensorReader.xcarchive artifacts/ fi # Copy simulator build if [ -d "build/Build/Products/Release-iphonesimulator" ]; then echo "Copying iOS simulator build..." cp -R build/Build/Products/Release-iphonesimulator artifacts/ fi # List what we got echo "Artifacts directory contents:" ls -lah artifacts/ if [ -d "artifacts/EnvSensorReader.xcarchive" ]; then echo "xcarchive contents:" ls -lah artifacts/EnvSensorReader.xcarchive/Products/Applications/ || true fi - name: Upload build artifacts if: success() uses: actions/upload-artifact@v4 with: name: ios-build path: artifacts/ retention-days: 30