x2on/gradle-hockeyapp-plugin


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

Download


Step 1. Add the JitPack repository to your build file

Add it in your root settings.gradle at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url 'https://jitpack.io' }
		}
	}

Add it in your settings.gradle.kts at the end of repositories:

	dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url = uri("https://jitpack.io") }
		}
	}

Add to pom.xml

	<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>

Add it in your build.sbt at the end of resolvers:

 
    resolvers += "jitpack" at "https://jitpack.io"
        
    

Add it in your project.clj at the end of repositories:

 
    :repositories [["jitpack" "https://jitpack.io"]]
        
    

Step 2. Add the dependency

	dependencies {
		implementation 'com.github.x2on:gradle-hockeyapp-plugin:3.6'
	}
	dependencies {
		implementation("com.github.x2on:gradle-hockeyapp-plugin:3.6")
	}
	<dependency>
	    <groupId>com.github.x2on</groupId>
	    <artifactId>gradle-hockeyapp-plugin</artifactId>
	    <version>3.6</version>
	</dependency>

                            
    libraryDependencies += "com.github.x2on" % "gradle-hockeyapp-plugin" % "3.6"
        
        

                            
    :dependencies [[com.github.x2on/gradle-hockeyapp-plugin "3.6"]]
        
        

Readme


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.6'
    }
}

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
  • owner_id: Optional: the ID of your organization
  • releaseType: 0 beta, 1 store, 2 alpha, 3 enterprise
  • 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 and 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.