A Gradle plugin for uploading iOS and Android Apps to HockeyApp.
Groovy Java
Latest commit 1ebfde9 Nov 14, 2016 @x2on committed on GitHub Merge pull request #72 from praetoriandroid/master
Support for uploading multiple app files

README.md

gradle-hockeyapp-plugin Build Status Maven Central license

A Gradle plugin for uploading iOS and Android Apps to HockeyApp.

Compatibility

The plugin is compatible with gradle 2.14 and up.

Basic usage

Add to your build.gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'de.felixschulze.gradle:gradle-hockeyapp-plugin:3.5'
    }
}

apply plugin: 'de.felixschulze.gradle.hockeyapp'
hockeyapp {
    apiToken = "YOURHOCKEYAPITOKEN"
}

As the upload tasks are automatically generated based on application variants, ensure this plugin is applied after the android plugin. i.e.

...

apply plugin: 'com.android.application'
apply plugin: 'de.felixschulze.gradle.hockeyapp'

...

Upload task

The task name is generated based on your productFlavors and buildTypes. For a basic release build with no flavors using the gradle wrapper:

./gradlew uploadReleaseToHockeyApp

Advanced usage

Add to your build.gradle

hockeyapp {
    apiToken = "YOURHOCKEYAPITOKEN"
    releaseType = 2 // alpha
    notify = 0
    status = 2
    notesType = 1
    notes = new File(file('../README.md').absolutePath).getText('UTF-8')
    variantToApplicationId = [
            BuildVariantA:  "hockeyAppapplicationIdA",
            BuildVariantB:  "hockeyAppapplicationIdB",
    ]
}

Required

Optional

  • allowMultipleAppFiles: true allow upload multiple app files (for example when using APK splits for Android)
  • buildServerUrl: Optional: the URL of the build job on your build server
  • commitSha: Optional: commit SHA for this build
  • mandatory: 0 not mandatory, 1 mandatory
  • mappingFileNameRegex: Optional: mappingFileNameRegex="mapping.txt" Should contain the filename or a regex for the proguard mapping.txt mapping file (Android) or dSYM file (iOS). Standard is mapping.txt
  • notes: Release notes as Textile or Markdown
  • notesType: 0 Textile, 1 Markdown
  • notify: 0 not notify testers, 1 notify all testers that can install this app
  • releaseType: 0 beta, 1 live, 2 alpha
  • repositoryUrl: Optional: your source repository URL
  • status: 1 not allow users to download the version, 2 make the version available for download
  • strategy: add to add the build as a new build to even if it has the same build number (default), replace to replace to a build with the same build number
  • tags: Optional: restrict download to comma-separated list of tags
  • teamCityLog: true Add features for TeamCity
  • teams: Optional: restrict download to comma-separated list of team IDs; example teams 123, 213 with 123,213 being database ids of your teams
  • users: Optional: restrict download to comma-separated list of user IDs; example: users=1224,5678 with 1224 and 5678 being the database IDs of your users
  • variantToApiToken: Optional: [variantName: "YOURHOCKEYAPITOKEN", variantName2: "YOUROTHERHOCKEYAPITOKEN"] map between your variants and api tokens
  • variantToApplicationId: Optional (Android): [variantName: "hockeyAppAppId", variantName2: "hockeyAppAppId2"] map between your variants and HockeyApp application IDs
  • variantToMandatory: Optional: [variantName: "0", variantName2: "1"] map between your variants and mandatory
  • variantToNotes : Optional: [variantName: "some notes", variantName2: "some other Notes"] map between your variants and notes
  • variantToNotesType : Optional: [variantName: "0", variantName2: "1"] map between your variants and notesType
  • variantToReleaseType: Optional: [variantName: "0", variantName2: "1"] map between your variants and releaseType
  • variantToStatus: Optional: [variantName: "1", variantName2: "2"] map between your variants and status
  • variantToStrategy: Optional: [variantName: "1", variantName2: "2"] map between your variants and strategy
  • variantToTags: Optional: [variantName: "1", variantName2: "2"] map between your variants and tags
  • variantToNotify: Optional: [variantName: "1", variantName2: "2"] map between your variants and notify

iOS or custom Android build only options

  • appFileNameRegex: Only needed for iOS or if you don't use the android gradle plugin `appFileNameRegex = ".*.ipa"
  • outputDirectory: Only needed for iOS: file("directory")
  • symbolsDirectory: Only needed for iOS or if you don't use the android gradle plugin: file("directory") Directory which contains the R or dSYM file

Migration from 2.x to >= 3.0

To migrate to version >= 3.0 please change

apply plugin: 'hockeyApp'

to

apply plugin: 'de.felixschulze.gradle.hockeyapp'

Changelog

Releases

Fix for Error with Top-Level-Projects / Multi project environment

If you use a top-level-project or multi project environment and got the error java.lang.NoSuchFieldError: INSTANCE or Could not initialize class org.apache.http.impl.conn.ManagedHttpClientConnectionFactory move the dependency to this plugin to your root build.gradle file (see #30, #62)

License

gradle-hockeyapp-plugin is available under the MIT license. See the LICENSE file for more info.