Skip to content
smartphone

GitHub Action

Build iOS Action

v2.3.2 Latest version

Build iOS Action

smartphone

Build iOS Action

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

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Build iOS Action

uses: sparkfabrik/[email protected]

Learn more about this action in sparkfabrik/ios-build-action

Choose a version

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

apple-key-issuer-id

The Apple Key Issuer ID

apple-key-content

The Apple Key content

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

- 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