How to publish multiple build variants of an APK to Artifactory?

533 views
Skip to first unread message

Péter Laukó

unread,
Feb 9, 2017, 10:41:13 AM2/9/17
to android-platform
Hi,

My APK has four build variants (devDebug, devRelease, tstDebug, tstRelease), they are built by Gradle. I want to publish them to our company's Artifactory server using Jenkins Artifactory Plugin, but I'm facing problems.
I set android.publishNonDefault = true and expect all four variants be deployed and their classifiers set according to their variant, however, only devDebug is deployed without any classifier set.
I also tried to deploy a quite similar AAR build and it deploys all four variants nicely, therefore I assume this problem is related to APK artifacts registration.

What I've found so far is that configurations.archives collection contains quite different instances, and I assume Artifactory Plugin cannot digest the ones generated by APK build.

AAR (ok):

configuration ':archives'
  a=ArchivePublishArtifact_Decorated gradle-android-aar:aar:aar:devDebug (class org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact_Decorated)
  a=ArchivePublishArtifact_Decorated gradle-android-aar:aar:aar:devRelease (class org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact_Decorated)
  a=ArchivePublishArtifact_Decorated gradle-android-aar:aar:aar:tstDebug (class org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact_Decorated)
  a=ArchivePublishArtifact_Decorated gradle-android-aar:aar:aar:tstRelease (class org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact_Decorated)

APK (nok):
configuration ':archives'
  a=com.android.build.gradle.internal.publishing.ApkPublishArtifact@3ef0e576 (class com.android.build.gradle.internal.publishing.ApkPublishArtifact)
  a=com.android.build.gradle.internal.publishing.ApkPublishArtifact@b0d3e7 (class com.android.build.gradle.internal.publishing.ApkPublishArtifact)
  a=com.android.build.gradle.internal.publishing.ApkPublishArtifact@33a71d23 (class com.android.build.gradle.internal.publishing.ApkPublishArtifact)
  a=com.android.build.gradle.internal.publishing.ApkPublishArtifact@17053b5 (class com.android.build.gradle.internal.publishing.ApkPublishArtifact)

I don't know if this is misconfiguration on my side, or an issue related to android plugin. Any help is appreciated. Thank you!

Scripts and logs are attached.

Environment:

Artifactory Professional 4.8.2 rev 40222
Jenkins ver. 2.40
Artifactory Plugin 2.9.1

com.android.tools.build:gradle:2.0.0
compileSdkVersion 25
buildToolsVersion "25.0.1"


$ ./gradlew -version

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time:   2015-12-21 21:15:04 UTC
Build number: none
Revision:     276bdcded730f53aa8c11b479986aafa58e124a6

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_31 (Oracle Corporation 25.31-b07)
OS:           Windows 8.1 6.3 amd64
build.gradle
dummy-android-single-apk.txt
gradle-android-aar.txt
init.gradle
job.groovy
single-aar-artifactory.PNG
single-apk-artifactory.PNG
Reply all
Reply to author
Forward
0 new messages