Refactor/ios demos optimization #35
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build All iOS Demos | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- master | |
paths: | |
- 'demos/ios/**' | |
pull_request: | |
branches: | |
- master | |
paths: | |
- 'demos/**' | |
- '.github/workflows/build-ios-demos.yml' | |
jobs: | |
generate-matrix: | |
runs-on: ubuntu-latest | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: demos/ios | |
- name: Generate matrix | |
id: set-matrix | |
run: | | |
matrix="$(echo demos/ios/*/MASTG-DEMO-* | sed 's/ /","/g')" | |
echo "matrix={\"demo\":[\"$matrix\"]}" >> $GITHUB_OUTPUT | |
build: | |
needs: generate-matrix | |
runs-on: macos-latest | |
timeout-minutes: 60 | |
strategy: | |
matrix: ${{ fromJson(needs.generate-matrix.outputs.matrix) }} | |
max-parallel: 3 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
sparse-checkout: demos/ios | |
- name: Clone MASTestApp-iOS repository | |
uses: actions/checkout@v4 | |
with: | |
repository: cpholguera/MASTestApp-iOS | |
path: MASTestApp-iOS | |
- name: Install dependencies | |
run: brew install ldid | |
- name: Replace files and prepare build | |
run: | | |
demo="${{ matrix.demo }}" | |
if [ ! -d "$demo" ]; then | |
echo "Demo directory not found: $demo" | |
exit 1 | |
fi | |
echo "Processing $demo" | |
[ -f "$demo/MastgTest.swift" ] && cp -f "$demo/MastgTest.swift" MASTestApp-iOS/MASTestApp/MastgTest.swift && echo "Copied MastgTest.swift for $demo" || echo "No MastgTest.swift found for $demo" | |
[ -f "$demo/Info.plist" ] && cp -f "$demo/Info.plist" MASTestApp-iOS/MASTestApp/Info.plist && echo "Copied Info.plist for $demo" || echo "No Info.plist found for $demo" | |
DEPLOYMENT_TARGET=14.4 | |
echo "Setting iOS Deployment Target to $DEPLOYMENT_TARGET" | |
sed -i '' "s/IPHONEOS_DEPLOYMENT_TARGET = .*;/IPHONEOS_DEPLOYMENT_TARGET = $DEPLOYMENT_TARGET;/g" "MASTestApp-iOS/MASTestApp.xcodeproj/project.pbxproj" | |
- name: Set Default Scheme | |
run: | | |
cd MASTestApp-iOS | |
scheme_list=$(xcodebuild -list -json | tr -d "\n") | |
default=$(echo $scheme_list | ruby -e "require 'json'; puts JSON.parse(STDIN.gets)['project']['targets'][0]") | |
echo "DEFAULT_SCHEME=$default" >> "$GITHUB_ENV" | |
echo "Using default scheme: $default" | |
- name: Build the app (unsigned) | |
run: | | |
cd MASTestApp-iOS | |
xcodebuild archive \ | |
-project "MASTestApp.xcodeproj" \ | |
-scheme "$DEFAULT_SCHEME" \ | |
-archivePath "$GITHUB_WORKSPACE/build/MASTestApp.xcarchive" \ | |
-configuration Release \ | |
CODE_SIGN_IDENTITY="" \ | |
CODE_SIGNING_REQUIRED=NO \ | |
CODE_SIGNING_ALLOWED=NO | |
- name: Add Entitlements | |
run: | | |
ldid -SMASTestApp-iOS/entitlements.plist "$GITHUB_WORKSPACE/build/MASTestApp.xcarchive/Products/Applications/MASTestApp.app/MASTestApp" | |
- name: Create IPA manually | |
run: | | |
cd "$GITHUB_WORKSPACE/build/MASTestApp.xcarchive/Products" || exit 1 | |
mv Applications Payload | |
zip -r9q MASTestApp.zip Payload | |
mv MASTestApp.zip MASTestApp.ipa | |
mkdir -p "$GITHUB_WORKSPACE/output" | |
mv MASTestApp.ipa "$GITHUB_WORKSPACE/output/$(basename "${{ matrix.demo }}").ipa" | |
echo "IPA_NAME=$(basename "${{ matrix.demo }}").ipa" >> $GITHUB_ENV | |
- name: List generated IPA | |
run: | | |
echo "Listing generated IPA in output directory:" | |
ls -l output/ | |
- name: List all files in repository | |
run: | | |
find . -type f | |
echo exists jq? | |
jq --version || echo "jq not found" | |
- name: Upload IPA | |
uses: actions/upload-artifact@v4 | |
with: | |
name: "${{ env.IPA_NAME }}" | |
path: "output/${{ env.IPA_NAME }}" |