Skip to content

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

License

Notifications You must be signed in to change notification settings

sparkfabrik/ios-build-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

- 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