gradle-hockeyapp-plugin
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 'com.github.3mph4515:gradle-hockeyapp-plugin$LAST_VERSION'
}
}
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
apiToken
: Your API Token from HockeyApp
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 servercommitSha
: Optional: commit SHA for this buildmandatory
:0
not mandatory,1
mandatorymappingFileNameRegex
: Optional:mappingFileNameRegex="mapping.txt"
Should contain the filename or a regex for the proguardmapping.txt
mapping file (Android) ordSYM
file (iOS). Standard ismapping.txt
notes
: Release notes as Textile or MarkdownnotesType
:0
Textile,1
Markdownnotify
:0
not notify testers,1
notify all testers that can install this appreleaseType
:0
beta,1
live,2
alpharepositoryUrl
: Optional: your source repository URLstatus
:1
not allow users to download the version,2
make the version available for downloadstrategy
: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 numbertags
: Optional: restrict download to comma-separated list of tagsteamCityLog
:true
Add features for TeamCityteams
: Optional: restrict download to comma-separated list of team IDs; example teams 123, 213 with 123,213 being database ids of your teamsusers
: Optional: restrict download to comma-separated list of user IDs; example: users=1224,5678 with 1224 and 5678 being the database IDs of your usersteamId
: Optional: add specific team or list of teams to project. IDs(comma-separated); example: teamId=1224,5678 with 1224 and 5678 being the database IDs of your teamsrestoreAllowed
: Optional: Allow to download any version of app. (By default only last app version is downloadable).ownerId
: Optional: Set owner to the application. Should be ID of organization.variantToApiToken
: Optional:[variantName: "YOURHOCKEYAPITOKEN", variantName2: "YOUROTHERHOCKEYAPITOKEN"]
map between your variants and api tokensvariantToApplicationId
: Optional (Android):[variantName: "hockeyAppAppId", variantName2: "hockeyAppAppId2"]
map between your variants and HockeyApp application IDsvariantToMandatory
: Optional:[variantName: "0", variantName2: "1"]
map between your variants and mandatoryvariantToNotes
: Optional:[variantName: "some notes", variantName2: "some other Notes"]
map between your variants and notesvariantToNotesType
: Optional:[variantName: "0", variantName2: "1"]
map between your variants and notesTypevariantToReleaseType
: Optional:[variantName: "0", variantName2: "1"]
map between your variants and releaseTypevariantToStatus
: Optional:[variantName: "1", variantName2: "2"]
map between your variants and statusvariantToStrategy
: Optional:[variantName: "1", variantName2: "2"]
map between your variants and strategyvariantToTags
: Optional:[variantName: "1", variantName2: "2"]
map between your variants and tagsvariantToNotify
: 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 theR
ordSYM
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
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.