Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions .github/actions/maven-publish/action.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
name: Publish release to Java

inputs:
java-version:
required: true
ossr-username:
required: true
ossr-password:
ossr-token:
required: true
signing-key:
required: true
signing-password:
required: true
java-version:
required: true
is-android:
required: true
version:
required: true

runs:
using: composite
Expand All @@ -30,15 +26,19 @@ runs:
source "/home/runner/.sdkman/bin/sdkman-init.sh"
sdk list java
sdk install java ${{ inputs.java-version }} && sdk default java ${{ inputs.java-version }}
export JAVA_HOME=${SDKMAN_DIR}/candidates/java/current
echo "JAVA_HOME is set to $JAVA_HOME"

- uses: gradle/wrapper-validation-action@56b90f209b02bf6d1deae490e9ef18b21a389cd4 # [email protected]
env:
JAVA_HOME: ${{ env.JAVA_HOME }}

- name: Publish Java
shell: bash
if: inputs.is-android == 'false'
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 }}"

- name: Publish Android
- name: Publish Java Packages to Maven
shell: bash
if: inputs.is-android == 'true'
run: ./gradlew clean assemble sign publishAndroidLibraryPublicationToMavenRepository -PisSnapshot=false -Pversion="${{ inputs.version }}" -PossrhUsername="${{ inputs.ossr-username }}" -PossrhPassword="${{ inputs.ossr-password }}" -PsigningKey="${{ inputs.signing-key }}" -PsigningPassword="${{ inputs.signing-password }}"
run: ./gradlew publish -PisSnapshot=false --stacktrace
env:
JAVA_HOME: ${{ env.JAVA_HOME }}
MAVEN_USERNAME: ${{ inputs.ossr-username }}
MAVEN_PASSWORD: ${{ inputs.ossr-token }}
SIGNING_KEY: ${{ inputs.signing-key}}
SIGNING_PASSWORD: ${{ inputs.signing-password}}
17 changes: 10 additions & 7 deletions .github/workflows/java-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,10 @@ on:
java-version:
required: true
type: string
is-android:
required: true
type: string
secrets:
ossr-username:
required: true
ossr-password:
ossr-token:
required: true
signing-key:
required: true
Expand Down Expand Up @@ -66,16 +63,22 @@ jobs:
- if: steps.tag_exists.outputs.exists == 'true'
run: exit 1

# Set JAVA_HOME here and pass it to subsequent steps
- name: Set JAVA_HOME for Gradle
run: echo "JAVA_HOME=/home/runner/.sdkman/candidates/java/current" >> $GITHUB_ENV # This ensures JAVA_HOME is set globally
env:
SDKMAN_DIR: /home/runner/.sdkman

# Publish the release to Maven
- uses: ./.github/actions/maven-publish
with:
java-version: ${{ inputs.java-version }}
is-android: ${{ inputs.is-android }}
version: ${{ steps.get_version.outputs.version }}
ossr-username: ${{ secrets.ossr-username }}
ossr-password: ${{ secrets.ossr-password }}
ossr-token: ${{ secrets.ossr-token }}
signing-key: ${{ secrets.signing-key }}
signing-password: ${{ secrets.signing-password }}
env:
JAVA_HOME: ${{ env.JAVA_HOME }}

# Create a release for the tag
- uses: ./.github/actions/release-create
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
is-android: false
secrets:
ossr-username: ${{ secrets.OSSR_USERNAME }}
ossr-password: ${{ secrets.OSSR_PASSWORD }}
ossr-token: ${{ secrets.OSSR_TOKEN }}
signing-key: ${{ secrets.SIGNING_KEY }}
signing-password: ${{ secrets.SIGNING_PASSWORD }}
github-token: ${{ secrets.GITHUB_TOKEN }}
93 changes: 70 additions & 23 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,42 +1,87 @@
buildscript {
repositories {
jcenter()
}

dependencies {
// https://github.com/melix/japicmp-gradle-plugin/issues/36
classpath 'com.google.guava:guava:31.1-jre'
}
}

plugins {
id 'java'
id 'java-library'
id 'jacoco'
id 'com.auth0.gradle.oss-library.java'
id 'me.champeau.gradle.japicmp' version '0.4.1'
}

repositories {
mavenCentral()
}

group 'com.auth0'
apply from: rootProject.file('gradle/versioning.gradle')

version = getVersionFromFile()
group = GROUP
logger.lifecycle("Using version ${version} for ${name} group $group")

def signingKey = findProperty('signingKey')
def signingKeyPwd = findProperty('signingPassword')

oss {
name 'mvc-auth-commons'
repository 'auth0-java-mvc-common'
organization 'auth0'
description 'Java library that simplifies the use of Auth0 for server-side MVC web apps'
baselineCompareVersion '1.5.0'
skipAssertSigningConfiguration true

developers {
auth0 {
displayName = 'Auth0'
email = '[email protected]'
import me.champeau.gradle.japicmp.JapicmpTask

project.afterEvaluate {
def versions = project.ext.testInJavaVersions
for (pluginJavaTestVersion in versions) {
def taskName = "testInJava-${pluginJavaTestVersion}"
tasks.register(taskName, Test) {
def versionToUse = taskName.split("-").getAt(1) as Integer
description = "Runs unit tests on Java version ${versionToUse}."
project.logger.quiet("Test will be running in ${versionToUse}")
group = 'verification'
javaLauncher.set(javaToolchains.launcherFor {
languageVersion = JavaLanguageVersion.of(versionToUse)
})
shouldRunAfter(tasks.named('test'))
}
lbalmaceda {
displayName = 'Luciano Balmaceda'
email = '[email protected]'
tasks.named('check') {
dependsOn(taskName)
}
}

project.configure(project) {
def baselineVersion = project.ext.baselineCompareVersion
task('apiDiff', type: JapicmpTask, dependsOn: 'jar') {
oldClasspath.from(files(getBaselineJar(project, baselineVersion)))
newClasspath.from(files(jar.archiveFile))
onlyModified = true
failOnModification = true
ignoreMissingClasses = true
htmlOutputFile = file("$buildDir/reports/apiDiff/apiDiff.html")
txtOutputFile = file("$buildDir/reports/apiDiff/apiDiff.txt")
doLast {
project.logger.quiet("Comparing against baseline version ${baselineVersion}")
}
}
}
}

signing {
useInMemoryPgpKeys(signingKey, signingKeyPwd)
private static File getBaselineJar(Project project, String baselineVersion) {
// Use detached configuration: https://github.com/square/okhttp/blob/master/build.gradle#L270
def group = project.group
try {
def baseline = "${project.group}:${project.name}:$baselineVersion"
project.group = 'virtual_group_for_japicmp'
def dependency = project.dependencies.create(baseline + "@jar")
return project.configurations.detachedConfiguration(dependency).files.find {
it.name == "${project.name}-${baselineVersion}.jar"
}
} finally {
project.group = group
}
}

ext {
baselineCompareVersion = '1.5.0'
testInJavaVersions = [8, 11, 17, 21]
}

jacocoTestReport {
Expand Down Expand Up @@ -91,4 +136,6 @@ dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
testImplementation 'org.springframework:spring-test:4.3.14.RELEASE'
testImplementation 'com.squareup.okhttp3:okhttp:4.11.0'
}
}

apply from: rootProject.file('gradle/maven-publish.gradle')
20 changes: 20 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
GROUP=com.auth0
POM_ARTIFACT_ID=mvc-auth-commons

POM_NAME=auth0-java-mvc-common
POM_DESCRIPTION=Java library that simplifies the use of Auth0 for server-side MVC web apps
POM_PACKAGING=jar

POM_URL=https://github.com/auth0/auth0-java-mvc-common
POM_SCM_URL=https://github.com/auth0/auth0-java-mvc-common

POM_SCM_CONNECTION=scm:git:https://github.com/auth0/auth0-java-mvc-common.git
POM_SCM_DEV_CONNECTION=scm:git:https://github.com/auth0/auth0-java-mvc-common.git

POM_LICENCE_NAME=The MIT License (MIT)
POM_LICENCE_URL=https://raw.githubusercontent.com/auth0/java-jwt/master/LICENSE
POM_LICENCE_DIST=repo

POM_DEVELOPER_ID=auth0
POM_DEVELOPER_NAME=Auth0
[email protected]
113 changes: 113 additions & 0 deletions gradle/maven-publish.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
apply plugin: 'maven-publish'
apply plugin: 'signing'

task('sourcesJar', type: Jar, dependsOn: classes) {
archiveClassifier = 'sources'
from sourceSets.main.allSource
}

task('javadocJar', type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc'
from javadoc.getDestinationDir()
}
tasks.withType(Javadoc).configureEach {
javadocTool = javaToolchains.javadocToolFor {
// Use latest JDK for javadoc generation
languageVersion = JavaLanguageVersion.of(17)
}
}

javadoc {
// Specify the Java version that the project will use
options.addStringOption('-release', "8")
}
artifacts {
archives sourcesJar, javadocJar
}


final releaseRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
final snapshotRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"

publishing {
publications {
mavenJava(MavenPublication) {

groupId = GROUP
artifactId = POM_ARTIFACT_ID
version = getVersionName()

artifact("$buildDir/libs/${project.name}-${version}.jar")
artifact sourcesJar
artifact javadocJar

pom {
name = POM_NAME
packaging = POM_PACKAGING
description = POM_DESCRIPTION
url = POM_URL

licenses {
license {
name = POM_LICENCE_NAME
url = POM_LICENCE_URL
distribution = POM_LICENCE_DIST
}
}

developers {
developer {
id = POM_DEVELOPER_ID
name = POM_DEVELOPER_NAME
email = POM_DEVELOPER_EMAIL
}
}

scm {
url = POM_SCM_URL
connection = POM_SCM_CONNECTION
developerConnection = POM_SCM_DEV_CONNECTION
}

pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')

project.configurations.implementation.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
repositories {
maven {
name = "sonatype"
url = version.endsWith('SNAPSHOT') ? snapshotRepositoryUrl : releaseRepositoryUrl
credentials {
username = System.getenv("MAVEN_USERNAME")
password = System.getenv("MAVEN_PASSWORD")
}
}
}
}

signing {
def signingKey = System.getenv("SIGNING_KEY")
def signingPassword = System.getenv("SIGNING_PASSWORD")
useInMemoryPgpKeys(signingKey, signingPassword)

sign publishing.publications.mavenJava
}

javadoc {
if(JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}

tasks.named('publish').configure {
dependsOn tasks.named('assemble')
}
17 changes: 17 additions & 0 deletions gradle/versioning.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
def getVersionFromFile() {
def versionFile = rootProject.file('.version')
return versionFile.text.readLines().first().trim()
}

def isSnapshot() {
return hasProperty('isSnapshot') ? isSnapshot.toBoolean() : true
}

def getVersionName() {
return isSnapshot() ? project.version+"-SNAPSHOT" : project.version
}

ext {
getVersionName = this.&getVersionName
getVersionFromFile = this.&getVersionFromFile
}
3 changes: 0 additions & 3 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ pluginManagement {
repositories {
gradlePluginPortal()
}
plugins {
id 'com.auth0.gradle.oss-library.java' version '0.18.0'
}
}

rootProject.name = 'mvc-auth-commons'
Loading