https://github.com/callstackincubator/ios
GitHub Action for remote build cache for iOS with Rock
https://github.com/callstackincubator/ios
react-native
Last synced: 2 months ago
JSON representation
GitHub Action for remote build cache for iOS with Rock
- Host: GitHub
- URL: https://github.com/callstackincubator/ios
- Owner: callstackincubator
- License: mit
- Created: 2025-03-17T15:41:17.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-12-16T15:54:26.000Z (3 months ago)
- Last Synced: 2025-12-20T06:56:43.568Z (3 months ago)
- Topics: react-native
- Homepage: https://rockjs.dev
- Size: 110 KB
- Stars: 6
- Watchers: 3
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Rock iOS GitHub Action
This GitHub Action enables remote building of iOS applications using [Rock](https://rockjs.dev). It supports both simulator and device builds, with automatic artifact caching and code signing capabilities.
## Features
- Build iOS apps for simulator or device
- Automatic artifact caching to speed up builds
- Code signing support for device builds
- Support for additional provisioning profiles (extensions, notifications, etc.)
- Re-signing capability for PR builds
- Native fingerprint-based caching
- Configurable build parameters
## Usage
```yaml
name: iOS Build
on:
push:
branches: [main]
pull_request:
branches: ['**']
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Build iOS
uses: callstackincubator/ios@v3 # replace with latest commit hash
with:
destination: 'simulator' # or 'device'
scheme: 'YourScheme'
configuration: 'Debug'
github-token: ${{ secrets.GITHUB_TOKEN }}
# For device builds, add these (for certificate and provisioning profile - either file OR base64):
# certificate-file: './certs/distribution.p12'
# certificate-base64: ${{ secrets.CERTIFICATE_BASE64 }}
# certificate-password: ${{ secrets.CERTIFICATE_PASSWORD }} # Optional - only needed if P12 has a password
# keychain-password: ${{ secrets.KEYCHAIN_PASSWORD }} # Optional - defaults to auto-generated password
# re-sign: true
# ad-hoc: true
# For apps that require provisioning profiles:
# provisioning-profiles: |
# [
# {
# "name": "NewApp_AdHoc",
# "file": "./profiles/new-app-profile.mobileprovision"
# },
# {
# "name": "ShareExtension",
# "file": "./profiles/share-extension.mobileprovision"
# },
# {
# "name": "NotificationExtension",
# "base64": "${{ secrets.NOTIFICATION_PROFILE_BASE64 }}"
# }
# ]
```
## Inputs
| Input | Description | Required | Default |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------- | ----------- |
| `github-token` | GitHub Token | Yes | - |
| `working-directory` | Working directory for the build command | No | `.` |
| `destination` | Build destination: "simulator" or "device" | Yes | `simulator` |
| `scheme` | Xcode scheme | Yes | - |
| `configuration` | Xcode configuration | Yes | - |
| `re-sign` | Re-sign the app bundle with new JS bundle | No | `false` |
| `ad-hoc` | Upload the IPA for ad-hoc distribution to easily install on provisioned devices | No | `false` |
| `certificate-base64` | Base64 encoded P12 file for device builds | No | - |
| `certificate-file` | P12 file for device builds | No | - |
| `certificate-password` | Password for the P12 file (optional - only needed if certificate has a password) | No | - |
| `provisioning-profile-base64` | Base64 encoded provisioning profile | No | - |
| `provisioning-profile-file` | Provisioning profile file | No | - |
| `provisioning-profile-name` | Name of the provisioning profile | No | - |
| `provisioning-profiles` | JSON array of provisioning profiles. Supports passing PP as both file and base64 string. Supported keys: `name`, `file`, `base64` | No | - |
| `keychain-password` | Password for temporary keychain (optional - defaults to auto-generated password) | No | - |
| `rock-build-extra-params` | Extra parameters for rock build:ios | No | - |
| `comment-bot` | Whether to comment PR with build link | No | `true` |
## Outputs
| Output | Description |
| -------------- | ------------------------- |
| `artifact-url` | URL of the build artifact |
| `artifact-id` | ID of the build artifact |
## Prerequisites
- macOS runner
- Rock CLI installed in your project
- For device builds:
- Valid Apple Developer certificate
- Valid provisioning profile
- Proper code signing setup
## License
MIT