diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 00000000..cc8e9c1a --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,86 @@ +name: Build VoidLink IPA + +on: + push: + branches: + - Integration + workflow_dispatch: + +jobs: + build: + name: Build .ipa and publish source + runs-on: macos + env: + # Per-app: change APP_NAME for each app repo. Used everywhere so the + # perlis dir name and file names always match (no hardcoded drift). + APP_NAME: VoidLink + # Point xcodebuild at full Xcode without sudo (sudo hangs in CI). + # DEVELOPER_DIR overrides the active developer directory for all steps. + DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Checkout submodules + run: git submodule update --init --recursive + + - name: Select Xcode + run: xcodebuild -version + + - name: Build unsigned .ipa + run: | + # Build the app (no signing — SideStore signs on-device). + # VoidLink's scheme is auto-generated from the VoidLink target. + xcodebuild \ + -scheme VoidLink \ + -sdk iphoneos \ + -configuration Debug \ + archive \ + -archivePath $PWD/build/VoidLink.xcarchive \ + CODE_SIGN_IDENTITY="" \ + CODE_SIGNING_REQUIRED="NO" \ + CODE_SIGN_ENTITLEMENTS="" \ + CODE_SIGNING_ALLOWED="NO" + + # Package the .app bundle into an .ipa (Payload/App.app structure) + mkdir -p build/IPA/Payload + cp -R build/VoidLink.xcarchive/Products/Applications/VoidLink.app build/IPA/Payload/VoidLink.app + cd build/IPA + zip -r ../../$APP_NAME.ipa Payload + cd ../.. + ls -la $APP_NAME.ipa + + - name: Generate app metadata + run: | + VERSION="1.0" + SIZE=$(stat -f%z $APP_NAME.ipa) + DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") + # Per-app metadata file. The perlis aggregator folds this into the + # root source.json at https://apps.bueso.eu/source.json. + cat > $APP_NAME.json <