Skip to content

Commit abd641c

Browse files
authored
fix: fixed release process to use maven publish plugin directly (#739)
1 parent b8d4df2 commit abd641c

File tree

11 files changed

+244
-78
lines changed

11 files changed

+244
-78
lines changed
Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
name: Publish release to Java
22

33
inputs:
4+
java-version:
5+
required: true
6+
7+
secrets:
48
ossr-username:
59
required: true
6-
ossr-password:
10+
ossr-token:
711
required: true
812
signing-key:
913
required: true
1014
signing-password:
1115
required: true
12-
java-version:
13-
required: true
14-
is-android:
15-
required: true
16-
version:
17-
required: true
16+
1817

1918
runs:
2019
using: composite
@@ -33,12 +32,11 @@ runs:
3332
3433
- uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4 # [email protected]
3534

36-
- name: Publish Java
37-
shell: bash
38-
if: inputs.is-android == 'false'
39-
run: ./gradlew clean assemble sign publishMavenJavaPublicationToMavenRepository -PisSnapshot=false -Pversion="${{ inputs.version }}" -PossrhUsername="${{ inputs.ossr-username }}" -PossrhPassword="${{ inputs.ossr-password }}" -PsigningKey="${{ inputs.signing-key }}" -PsigningPassword="${{ inputs.signing-password }}"
35+
- name: Publish Android/Java Packages to Maven
36+
run: ./gradlew publish -PisSnapshot=false
37+
env:
38+
MAVEN_USERNAME: ${{ secrets.ossr-username }}
39+
MAVEN_PASSWORD: ${{ secrets.ossr-token }}
40+
SIGNING_KEY: ${{ secrets.signing-key}}
41+
SIGNING_PASSWORD: ${{ secrets.signing-password}}
4042

41-
- name: Publish Android
42-
shell: bash
43-
if: inputs.is-android == 'true'
44-
run: ./gradlew clean assemble publishAndroidLibraryPublicationToMavenRepository -PisSnapshot=false -Pversion="${{ inputs.version }}" -PossrhUsername="${{ inputs.ossr-username }}" -PossrhPassword="${{ inputs.ossr-password }}" -PsigningKey="${{ inputs.signing-key }}" -PsigningPassword="${{ inputs.signing-password }}"

.github/workflows/java-release.yml

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ on:
66
java-version:
77
required: true
88
type: string
9-
is-android:
10-
required: true
11-
type: string
9+
1210
secrets:
1311
ossr-username:
1412
required: true
15-
ossr-password:
13+
ossr-token:
1614
required: true
1715
signing-key:
1816
required: true
@@ -67,15 +65,13 @@ jobs:
6765
run: exit 1
6866

6967
# Publish the release to Maven
68+
- name: Publish package to Maven
7069
- uses: ./.github/actions/maven-publish
71-
with:
72-
java-version: ${{ inputs.java-version }}
73-
is-android: ${{ inputs.is-android }}
74-
version: ${{ steps.get_version.outputs.version }}
70+
secrets:
7571
ossr-username: ${{ secrets.ossr-username }}
76-
ossr-password: ${{ secrets.ossr-password }}
77-
signing-key: ${{ secrets.signing-key }}
78-
signing-password: ${{ secrets.signing-password }}
72+
ossr-token: ${{ secrets.ossr-token }}
73+
signing-key: ${{ secrets.signing-key}}
74+
signing-password: ${{ secrets.signing-password}}
7975

8076
# Create a release for the tag
8177
- uses: ./.github/actions/release-create

.github/workflows/release.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@ jobs:
1818
uses: ./.github/workflows/java-release.yml
1919
with:
2020
java-version: 8.0.402-zulu
21-
is-android: true
2221
secrets:
2322
ossr-username: ${{ secrets.OSSR_USERNAME }}
24-
ossr-password: ${{ secrets.OSSR_PASSWORD }}
23+
ossr-token: ${{ secrets.OSSR_TOKEN }}
2524
signing-key: ${{ secrets.SIGNING_KEY }}
2625
signing-password: ${{ secrets.SIGNING_PASSWORD }}
2726
github-token: ${{ secrets.GITHUB_TOKEN }}

.snyk

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
2+
version: v1.25.0
3+
# ignores vulnerabilities until expiry date; change duration by modifying expiry date
4+
ignore:
5+
SNYK-JAVA-COMFASTERXMLWOODSTOX-3091135:
6+
- '*':
7+
reason: Latest version of dokka has this vulnerability
8+
expires: 2024-06-27T07:00:56.333Z
9+
created: 2024-05-28T07:00:56.334Z
10+
SNYK-JAVA-ORGJETBRAINSKOTLIN-2393744:
11+
- '*':
12+
reason: Latest version of dokka has this vulnerability
13+
expires: 2024-06-27T07:01:24.820Z
14+
created: 2024-05-28T07:01:24.825Z
15+
patch: {}

auth0/build.gradle

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -23,38 +23,15 @@
2323
*/
2424

2525
plugins {
26+
id 'com.android.library'
2627
id 'kotlin-android'
27-
id "com.auth0.gradle.oss-library.android" version "0.18.0"
28-
id "org.jetbrains.dokka" version "1.4.20"
2928
}
3029

31-
logger.lifecycle("Using version ${version} for ${name}")
32-
33-
def signingKey = findProperty('signingKey')
34-
def signingKeyPwd = findProperty('signingPassword')
35-
36-
oss {
37-
name 'Auth0.Android'
38-
repository 'Auth0.Android'
39-
organization 'auth0'
40-
description 'Android toolkit for Auth0 API'
41-
skipAssertSigningConfiguration true
30+
apply from: rootProject.file('gradle/versioning.gradle')
4231

43-
developers {
44-
auth0 {
45-
displayName = 'Auth0'
46-
47-
}
48-
lbalmaceda {
49-
displayName = 'Luciano Balmaceda'
50-
51-
}
52-
}
53-
}
32+
version = getVersionFromFile()
5433

55-
signing {
56-
useInMemoryPgpKeys(signingKey, signingKeyPwd)
57-
}
34+
logger.lifecycle("Using version ${version} for ${name}")
5835

5936
android {
6037
compileSdkVersion 31
@@ -101,12 +78,6 @@ ext {
10178
coroutinesVersion = '1.6.2'
10279
}
10380

104-
// Configure javadoc jar to use dokka output
105-
// TODO update oss-plugin to use dokka instead of doing it here
106-
javadocJar {
107-
dependsOn "dokkaJavadoc"
108-
from "$buildDir/dokka/javadoc"
109-
}
11081

11182
dependencies {
11283
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
@@ -134,4 +105,7 @@ dependencies {
134105
testImplementation 'org.robolectric:robolectric:4.6.1'
135106
testImplementation 'androidx.test.espresso:espresso-intents:3.5.1'
136107
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutinesVersion"
137-
}
108+
}
109+
110+
apply from: rootProject.file('gradle/jacoco.gradle')
111+
apply from: rootProject.file('gradle/maven-publish.gradle')

build.gradle

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,18 @@ buildscript {
1515
dependencies {
1616
classpath 'com.android.tools.build:gradle:4.2.2'
1717
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
18+
classpath "org.jacoco:org.jacoco.core:0.8.5"
1819
}
1920
}
2021

22+
plugins {
23+
id 'org.jetbrains.dokka' version '1.9.20'
24+
}
25+
26+
subprojects {
27+
apply plugin: 'org.jetbrains.dokka'
28+
}
29+
2130
allprojects {
2231
group = 'com.auth0.android'
2332

gradle.properties

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
1-
# Project-wide Gradle settings.
2-
# IDE (e.g. Android Studio) users:
3-
# Gradle settings configured through the IDE *will override*
4-
# any settings specified in this file.
5-
# For more details on how to configure your build environment visit
6-
# http://www.gradle.org/docs/current/userguide/build_environment.html
7-
# Specifies the JVM arguments used for the daemon process.
8-
# The setting is particularly useful for tweaking memory settings.
1+
GROUP=com.auth0.android
2+
POM_ARTIFACT_ID=auth0
3+
4+
POM_NAME=Auth0.Android
5+
POM_DESCRIPTION=Android toolkit for Auth0 API
6+
POM_PACKAGING=aar
7+
8+
POM_URL=https://github.com/auth0/Auth0.Android
9+
POM_SCM_URL=https://github.com/auth0/Auth0.Android
10+
POM_SCM_CONNECTION=scm:[email protected]:auth0/Auth0.Android.git
11+
POM_SCM_DEV_CONNECTION=scm:[email protected]:auth0/Auth0.Android.git
12+
13+
POM_LICENCE_NAME=The MIT License (MIT)
14+
POM_LICENCE_URL=https://raw.githubusercontent.com/auth0/Auth0.Android/master/LICENSE
15+
POM_LICENCE_DIST=repo
16+
17+
POM_DEVELOPER_ID=auth0
18+
POM_DEVELOPER_NAME=Auth0
19+
POM_DEVELOPER_EMAIL=[email protected]
20+
21+
922
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
10-
# When configured, Gradle will run in incubating parallel mode.
11-
# This option should only be used with decoupled projects. More details, visit
12-
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13-
# org.gradle.parallel=true
14-
# AndroidX package structure to make it clearer which packages are bundled with the
15-
# Android operating system, and which are packaged with your app"s APK
16-
# https://developer.android.com/topic/libraries/support-library/androidx-rn
1723
android.useAndroidX=true
1824
# Automatically convert third-party libraries to use AndroidX
1925
android.enableJetifier=false

gradle/jacoco.gradle

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
apply plugin: 'jacoco'
2+
3+
jacoco {
4+
toolVersion = "0.8.5"
5+
}
6+
7+
android {
8+
testOptions {
9+
unitTests.all {
10+
jacoco {
11+
includeNoLocationClasses = true
12+
jacoco.excludes = ['jdk.internal.*']
13+
}
14+
}
15+
}
16+
}
17+
18+
afterEvaluate {
19+
def jacocoTestReportTask = tasks.findByName("jacocoTestReport")
20+
if (!jacocoTestReportTask) {
21+
jacocoTestReportTask = tasks.create("jacocoTestReport")
22+
jacocoTestReportTask.group = "Reporting"
23+
jacocoTestReportTask.description = "Generate Jacoco coverage reports for all builds."
24+
}
25+
26+
android.libraryVariants.all { variant ->
27+
def name = variant.name
28+
def testTaskName = "test${name.capitalize()}UnitTest"
29+
30+
def reportTask = tasks.create(name: "jacocoTest${name.capitalize()}UnitTestReport", type: JacocoReport, dependsOn: testTaskName) {
31+
group = "Reporting"
32+
description = "Generate Jacoco coverage reports for the ${name.capitalize()} build."
33+
34+
classDirectories.from = fileTree(
35+
dir: "${buildDir}/intermediates/javac/${name}",
36+
excludes: ['**/R.class',
37+
'**/R$*.class',
38+
'**/*$ViewInjector*.*',
39+
'**/*$ViewBinder*.*',
40+
'**/BuildConfig.*',
41+
'**/Manifest*.*']
42+
)
43+
44+
sourceDirectories.from = ['src/main/java'].plus(android.sourceSets[name].java.srcDirs)
45+
executionData.from = "${buildDir}/jacoco/${testTaskName}.exec"
46+
47+
reports {
48+
xml.enabled = true
49+
html.enabled = true
50+
}
51+
}
52+
jacocoTestReportTask.dependsOn reportTask
53+
}
54+
}
55+

gradle/maven-publish.gradle

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
apply plugin: 'maven-publish'
2+
apply plugin: 'signing'
3+
4+
5+
apply from: rootProject.file('gradle/versioning.gradle')
6+
7+
task javadocJar(type: Jar, dependsOn: dokkaHtml) {
8+
archiveClassifier = "javadoc"
9+
from dokkaHtml.outputDirectory
10+
}
11+
12+
task sourcesJar(type: Jar) {
13+
archiveClassifier = 'sources'
14+
from android.sourceSets.main.java.source
15+
}
16+
17+
final releaseRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
18+
final snapshotRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
19+
20+
publishing {
21+
publications {
22+
release(MavenPublication) {
23+
groupId = GROUP
24+
artifactId = POM_ARTIFACT_ID
25+
version = getVersionName()
26+
27+
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
28+
artifact sourcesJar
29+
artifact javadocJar
30+
31+
pom {
32+
name = POM_NAME
33+
packaging = POM_PACKAGING
34+
description = POM_DESCRIPTION
35+
url = POM_URL
36+
37+
licenses {
38+
license {
39+
name = POM_LICENCE_NAME
40+
url = POM_LICENCE_URL
41+
distribution = POM_LICENCE_DIST
42+
}
43+
}
44+
45+
developers {
46+
developer {
47+
id = POM_DEVELOPER_ID
48+
name = POM_DEVELOPER_NAME
49+
email = POM_DEVELOPER_EMAIL
50+
}
51+
}
52+
53+
scm {
54+
url = POM_SCM_URL
55+
connection = POM_SCM_CONNECTION
56+
developerConnection = POM_SCM_DEV_CONNECTION
57+
}
58+
59+
withXml {
60+
def dependenciesNode = asNode().appendNode('dependencies')
61+
62+
project.configurations.implementation.allDependencies.each {
63+
def dependencyNode = dependenciesNode.appendNode('dependency')
64+
dependencyNode.appendNode('groupId', it.group)
65+
dependencyNode.appendNode('artifactId', it.name)
66+
dependencyNode.appendNode('version', it.version)
67+
}
68+
}
69+
}
70+
}
71+
}
72+
repositories {
73+
maven {
74+
name = "sonatype"
75+
url = version.endsWith('SNAPSHOT') ? snapshotRepositoryUrl : releaseRepositoryUrl
76+
credentials {
77+
username = System.getenv("MAVEN_USERNAME")
78+
password = System.getenv("MAVEN_PASSWORD")
79+
}
80+
}
81+
}
82+
}
83+
84+
85+
signing {
86+
def signingKey = System.getenv("SIGNING_KEY")
87+
def signingPassword = System.getenv("SIGNING_PASSWORD")
88+
useInMemoryPgpKeys(signingKey, signingPassword)
89+
sign publishing.publications
90+
}
91+
92+
93+
publish.dependsOn build
94+
tasks.named('signReleasePublication').configure {
95+
dependsOn 'bundleReleaseAar'
96+
}
97+

0 commit comments

Comments
 (0)