Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sparkfabrik/ios-build-action

Build iOS project (.xcodeproj, .xcworkspace), export .ipa, optional upload to BrowserStack App Live.
https://github.com/sparkfabrik/ios-build-action

build ionic ios mobile react-native

Last synced: 5 days ago
JSON representation

Build iOS project (.xcodeproj, .xcworkspace), export .ipa, optional upload to BrowserStack App Live.

Awesome Lists containing this project

README

        

# Build iOS App

This action builds your iOS project (`.xcodeproj`, `.xcworkspace`) and can export the resulting `.ipa` file as GitHub artifact, with optional automatic upload to BrowserStack AppLive, and optional signed production build with App Store upload.

Tested with Ionic, React Native and native ios projects.

## WARNING v2 has breaking changes and it will break your Actions!

To keep the old behavior please use the `v1` version.

`v2.0.0` uses Match to simplify and strengthen the certificates management, and can optionally upload the build to the App Store.

## Inputs

### `project-path`

**Required** .xcodeproj path.

### `workspace-path`

.xcworkspace path. Default `""`.

### `export-method`

Choose app-store, `"ad-hoc"`, `"package"` `"enterprise"`, `"development"`, or `"developer-id"`. Default `"app-store"`.

### `configuration`

For example, `"Debug"`, `"Release"`. Default `"Release"`.

### `scheme`

For example, `MyScheme`.

### `output-path`

Output path of ipa. Default `"output.ipa"`.

### `team-id`

**Required** Team id.

### `team-name`

**Required** Team name.

### `build-pods`

Run the `pod install` command during the build (boolean)

### `pods-path`

The path to the Podfile. Default `"Podfile"`

### `upload-to-testflight`

Upload the build to the App Store (boolean)

### `increment-build-number`

Automatically increment the latest build number from TestFlight by one (boolean)

### `apple-key-id`

The Apple Key ID. See https://docs.fastlane.tools/app-store-connect-api/ and https://docs.fastlane.tools/actions/app_store_connect_api_key/ for more examples.

### `apple-key-issuer-id`

The Apple Key Issuer ID. See https://docs.fastlane.tools/app-store-connect-api/ and https://docs.fastlane.tools/actions/app_store_connect_api_key/ for more examples.

### `apple-key-content`

The Apple Key content. See https://docs.fastlane.tools/app-store-connect-api/ and https://docs.fastlane.tools/actions/app_store_connect_api_key/ for more examples.

### `match-git-url`

The GitHub repo URL for storing Match certificates.
See https://docs.fastlane.tools/actions/match/

### `match-git-basic-authorization`

base64 key to the repo.
Generate it with `echo -n your_github_username:your_personal_access_token | base64`

### `match-password`

The password to decrypt the certificates.

### `match-build-type`

The Match build type (eg. "development")

### `browserstack-upload`

Set this to true to upload the resulting .ipa file to Browserstack App Live right after the build (https://www.browserstack.com/docs/app-live/integrations/fastlane)

Defaut to false.

### `browserstack-username`

Browserstack username (**required if** browserstack-upload == true)

### `browserstack-access-key`

Browserstack access key (**required if** browserstack-upload == true)

### `fastlane-version`

Fastlane version to be used. If not specified, the default value will be used.

### `fastlane-env`

Name of the env file name to pass to `fastlane --env`

### `ios-app-id`

The iOS application identifier; useful to sync a specific provisioning profile

## Contributions Welcome!

If you have any other inputs you'd like to add, feel free to create PR.

**NOTE:** Remember to run `yarn install` and `yarn bundle` if you make changes to the `index.js`.

## Example usage with a production build uploaded to App Store

```yaml
- uses: sparkfabrik/[email protected]
with:
upload-to-testflight: true
increment-build-number: true
build-pods: true
pods-path: "ios/Podfile"
configuration: Release
export-method: app-store
workspace-path: ${{ secrets.WORKSPACE_PATH }}
project-path: ${{ secrets.PROJECT_PATH }}
scheme: MyScheme
output-path: build-${{ github.sha }}.ipa
apple-key-id: ${{ secrets.APPLE_KEY_ID }}
apple-key-issuer-id: ${{ secrets.APPLE_KEY_ISSUER_ID }}
apple-key-content: ${{ secrets.APPLE_KEY_CONTENT }}
team-id: ${{ secrets.TEAM_ID }}
team-name: ${{ secrets.TEAM_NAME }}
match-password: ${{ secrets.MATCH_PASSWORD }}
match-git-url: ${{ secrets.MATCH_GIT_URL }}
match-git-basic-authorization: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }}
match-build-type: "appstore"
browserstack-upload: true
browserstack-username: ${{ secrets.BROWSERSTACK_USERNAME }}
browserstack-access-key: ${{ secrets.BROWSERSTACK_ACCESS_KEY }}
fastlane-env: stage
ios-app-id: com.identifier.my_app
```