Github Action

GitHub Actions makes it easy to automate all your software workflows with world-class CI/CD. Build, test, and deploy your code right from GitHub.

Adding our GitHub Action to your repo will automatically upload the APK or IPA to TestApp.io and notify your testers.

TestApp.io GitHub Action for Linux and macOS

This action uploads artifacts (.apk or .ipa) to TestApp.io and notifies your team members.

- name: TestApp.io App Distribution
  uses: testappio/github-action@v5

Use @v5. It installs the latest ta-cli on every run. @v3 and @v4 always install an old version of ta-cli and miss recent upload fixes, so update the tag if your workflow still uses one of them.


Requirements

This action will execute on runners with Ubuntu & macOS operating systems.

Configuration

Key Description Default
api_token You can get it from portal.testapp.io/profile/tokens
app_id Open your app at portal.testapp.io/apps, then Integrations → Release → TestApp.io CLI → View Setup
file Path to the Android .apk or iOS .ipa file. The action picks Android or iOS from the file extension
release_notes Manually add the release notes to be displayed for the testers
git_release_notes Collect release notes from the latest git commit message: true or false false
include_git_commit_id Include the last commit ID in the release notes: true or false false
notify Send notifications to your team members about this release: true or false false

Check ta-cli for more info

Upload time limit

ta-cli stops an upload that takes longer than 2 hours. For very large files on a slow connection, set TESTAPPIO_UPLOAD_TIMEOUT on the step, for example 3h. 0 turns the limit off. See Upload time limit in the ta-cli guide.

      - name: Upload to TestApp.io
        uses: testappio/github-action@v5
        env:
          TESTAPPIO_UPLOAD_TIMEOUT: 3h
        with:
          api_token: ${{ secrets.TESTAPPIO_API_TOKEN }}
          app_id: ${{ secrets.TESTAPPIO_APP_ID }}
          file: app/build/outputs/apk/release/app-release.apk

Sample Usage for Android

name: Upload APK to TestApp.io

on:
  push:
    branches:
      - main

jobs:
  android:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '17'

      - name: Build debug APK
        run: ./gradlew assembleDebug

      - name: Upload to TestApp.io
        uses: testappio/github-action@v5
        with:
          api_token: ${{ secrets.TESTAPPIO_API_TOKEN }}
          app_id: ${{ secrets.TESTAPPIO_APP_ID }}
          file: app/build/outputs/apk/debug/app-debug.apk
          release_notes: ""
          git_release_notes: true
          include_git_commit_id: false
          notify: true

If you want a release build instead, replace:

      - name: Build release APK
        run: ./gradlew assembleRelease
          file: app/build/outputs/apk/release/app-release.apk

Sample Usage for iOS

name: Upload IPA to TestApp.io

on:
  push:
    branches:
      - main

jobs:
  ios:
    runs-on: macos-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Build and export iOS
        uses: yukiarrr/ios-build-action@v1.12.0
        with:
          project-path: ios/YourApp.xcodeproj
          workspace-path: ios/YourApp.xcworkspace
          scheme: YourApp
          export-method: ad-hoc
          configuration: Release
          output-path: artifacts/output.ipa
          p12-base64: ${{ secrets.P12_BASE64 }}
          certificate-password: ${{ secrets.P12_PASSWORD }}
          mobileprovision-base64: ${{ secrets.ADHOC_MOBILEPROVISION_BASE64 }}
          code-signing-identity: ${{ secrets.CODE_SIGNING_IDENTITY }}
          team-id: ${{ secrets.TEAM_ID }}

      - name: Upload to TestApp.io
        uses: testappio/github-action@v5
        with:
          api_token: ${{ secrets.TESTAPPIO_API_TOKEN }}
          app_id: ${{ secrets.TESTAPPIO_APP_ID }}
          file: artifacts/output.ipa
          release_notes: ""
          git_release_notes: true
          include_git_commit_id: false
          notify: true

More info about the iOS build & export action: yukiarrr/ios-build-action


Install

- name: TestApp.io App Distribution
  uses: testappio/github-action@v5


Need help? Contact us. we're happy to assist!