Bitrise CI pipeline allows you to build and upload both Android & iOS apps to TestApp.io to notify your testers for testing and feedback.
iOS
We will demonstrate with our sample project testappio-ios-sample-app to integrate TestApp.io with Bitrise CI.
1. Clone the project repository and checkout the integration-bitrise branch:
git clone https://github.com/testappio/ios-sample-app.git
git checkout integration-bitrise
2. Configure the iOS project for Fastlane:
Create a
./Gemfilefile in the root directory of your project with the following content:
source "https://rubygems.org" gem "fastlane"
Run
bundle updateand add both the./Gemfileand the./Gemfile.lockfiles to version control.
Initiate Fastlane by running the following command in the iOS project folder:
bundle exec fastlane init
Follow the wizard; it will create a
./fastlane/Appfilefile with your Apple ID and team.
Initiate Match by running the following command:
bundle exec fastlane match init
Follow the instructions and provide the new empty git repository when asked; it will create the Matchfile
⚠️ Note: Please use the HTTPS GIT repository address.
Generate the certificate and provisioning profile by running the following command:
bundle exec fastlane match adhoc
Provide a matching password for encrypting the certificates and profiles in the GIT repository.
⚠️ Note: Provide a matching password for encrypting the certificates and profiles in the GIT repository.
Add the
testappioplugin for Fastlane by running the following command:
bundle exec fastlane add_plugin testappio
3. Select provisioning profiles in Xcode:
The newly created certificates and profiles should now be possible to select inside your project. Open Xcode and go to Signing & Capabilities.
⚠️Note: Don't choose Automatically manage signing
4. Setup Bitrise:
Setup Bitrise Secret
Configure
MATCH_PASSWORDthe secret parameter in Bitrise.Go to your Bitrise project page, then Workflow, and add a Secret parameter
MATCH_PASSWORD.Configure
GITHUB_API_TOKENsecret parameter in Bitrise CI.Navigate to Tokens to generate a Personal Access Token, and create a
GITHUB_API_TOKENsecret in Bitrise CI. This is for accessing the private certificates' repository.Add secret parameters for
testappioFastlane plugin.Add
TESTAPPIO_API_TOKENandTESTAPPIO_APP_IDto Bitrise secret parameters. You can grab them from your App -> Integrations.
5. Run the pipeline:
Create the lane by creating ./fastlane/Fastfile with the following content:
default_platform(:ios)
platform :ios do
desc "Build the adhoc and upload to TestApp.io"
lane :beta do
match(type: "adhoc")
gym(export_method: "ad-hoc")
upload_to_testappio(
release_notes: "My release notes here...",
git_release_notes: true,
git_commit_id: false,
notify: true
)
end
end
More info on the Fastlane plugin: https://help.testapp.io/fastlane-plugin/#testappio-actions
have your lane in place; copy the upload_to_testappio action and put it into your pipeline after the IPA export.
6. The Bitrise pipeline:
Create or update bitrise.yml a file under your project root folder. Or update your bitrise.yml accordingly, if you have the bitrise.yml file stored and managed on bitrise.io.
---
format_version: '11'
default_step_lib_source: 'https://github.com/bitrise-io/bitrise-steplib.git'
project_type: ios
app:
envs:
- FASTLANE_XCODE_LIST_TIMEOUT: '120'
- opts:
is_expand: false
FASTLANE_WORK_DIR: .
- opts:
is_expand: false
FASTLANE_LANE: ios development
- opts:
is_expand: false
TESTAPPIO_NOTIFY: 'true'
- opts:
is_expand: false
MATCH_SKIP_CERTIFICATE_MATCHING: 'true'
workflows:
primary:
steps:
- activate-ssh-key@4:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@6: {}
- script@1:
inputs:
- content: |-
#!/usr/bin/env bash
# fail if any commands fails
set -e
# debug log
set -x
# write your script here
echo "machine github.com login $GITHUB_API_TOKEN" >> ~/.netrc
- fastlane@3:
inputs:
- lane: $FASTLANE_LANE
- work_dir: $FASTLANE_WORK_DIR
meta:
bitrise.io:
stack: osx-xcode-13.2.x
machine_type_id: g2.4core
trigger_map:
- push_branch: main
workflow: primary
7. Commit and push the change to trigger the Bitrise pipeline.
Android
Sample project we used for following instructions, android-sample-app.
1. Clone the project repository and checkout the integration-bitrise branch:
git clone https://github.com/testappio/android-sample-app.git
git checkout integration-bitrise
2. Configure the Android project for Fastlane:
Create a
./Gemfilefile in the root directory of your project with the following content:
source "https://rubygems.org" gem "fastlane"
Run
bundle updateand add both the./Gemfileand the./Gemfile.lockto version control.For more details please see Setup Fastlane.
3. Init Fastlane:
In the Android project folder, run:
bundle exec fastlane init
And follow the wizard; it will create ./fastlane/Appfile with the required information.
4. Setup Bitrise:
Add secret parameters for
testappioFastlane plugin.Add
TESTAPPIO_API_TOKENandTESTAPPIO_APP_IDto Bitrise secret parameters. You can grab them from your App -> Integrations.
5. Run the pipeline:
Create or update bitrise.yml file under your project root folder. Or update your bitrise.yml accordingly, if you have the bitrise.yml file stored and managed on bitrise.io.
---
format_version: '11'
default_step_lib_source: 'https://github.com/bitrise-io/bitrise-steplib.git'
project_type: android
app:
envs:
- FASTLANE_XCODE_LIST_TIMEOUT: '120'
- opts:
is_expand: false
FASTLANE_WORK_DIR: .
- opts:
is_expand: false
FASTLANE_LANE: android beta
workflows:
primary:
steps:
- activate-ssh-key@4:
run_if: '{{getenv "SSH_RSA_PRIVATE_KEY" | ne ""}}'
- git-clone@6: {}
- fastlane@3:
inputs:
- lane: $FASTLANE_LANE
- work_dir: $FASTLANE_WORK_DIR
meta:
bitrise.io:
stack: linux-docker-android-20.04
machine_type_id: elite
trigger_map:
- push_branch: main
workflow: primary
6. Commit and push the change to trigger the Bitrise pipeline.
Feedback & Support
Developers built TestApp.io to solve the pain of app distribution for mobile app development teams.
Join our community for feedback and support.
Happy releasing 🎉
