Add Deploy Artifacts Support

This commit is contained in:
Rob Winch
2020-05-01 16:50:56 -05:00
parent bb92e1dd30
commit 04da00488a
9 changed files with 212 additions and 0 deletions

View File

@@ -6,6 +6,9 @@ buildscript {
classpath("org.springframework.build.gradle:propdeps-plugin:0.0.7")
classpath('org.asciidoctor:asciidoctor-gradle-plugin:1.5.1')
classpath("io.spring.gradle:spring-io-plugin:0.0.6.RELEASE")
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.12.0"
classpath 'org.hidetake:gradle-ssh-plugin:2.10.1'
classpath 'io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.10.0'
}
}
@@ -16,6 +19,7 @@ plugins {
apply plugin: 'org.asciidoctor.gradle.asciidoctor'
ext.GRADLE_SCRIPT_DIR = "${rootProject.projectDir}/gradle"
apply from: "${GRADLE_SCRIPT_DIR}/finalize-deploy.gradle"
ext.JAVA_MODULE_SCRIPT = "${GRADLE_SCRIPT_DIR}/java-module.gradle"
ext.MAVEN_DEPLOYMENT_SCRIPT = "${GRADLE_SCRIPT_DIR}/maven-deployment.gradle"
ext.JAVA_SCRIPT = "${GRADLE_SCRIPT_DIR}/java.gradle"

33
gradle/artifactory.gradle Normal file
View File

@@ -0,0 +1,33 @@
apply plugin: "com.jfrog.artifactory"
def isSnapshot = version?.matches(/^.*[.-]BUILD-SNAPSHOT$/)
artifactory {
contextUrl = 'https://repo.spring.io'
publish {
repository {
repoKey = isSnapshot ? 'libs-snapshot-local' : 'libs-release-local'
if(project.hasProperty('artifactoryUsername')) {
username = artifactoryUsername
password = artifactoryPassword
}
}
}
}
artifactoryPublish {
publishConfigs 'archives'
publishIvy false
properties = [
'bintray.package': "${project.group}:spring-security",
'bintray.version': "${project.version}"
]
}
artifactory {
publish {
defaults {
publishConfigs('archives')
}
}
}

View File

@@ -0,0 +1,11 @@
def isSnapshot = version?.matches(/^.*[.-]BUILD-SNAPSHOT$/)
task deployArtifacts {
group = 'Deploy tasks'
description = "Deploys the artifacts to either Artifactory or Maven Central"
if(isSnapshot) {
dependsOn "artifactoryPublish"
} else {
dependsOn "uploadArchives"
}
}

46
gradle/deploy-docs.gradle Normal file
View File

@@ -0,0 +1,46 @@
apply plugin: 'org.hidetake.ssh'
project.ssh.settings {
knownHosts = allowAnyHosts
}
project.remotes {
docs {
role 'docs'
host = 'docs.af.pivotal.io'
user = project.findProperty('deployDocsSshUsername')
if(project.hasProperty('deployDocsSshKeyPath')) {
identity = project.file(project.findProperty('deployDocsSshKeyPath'))
}
if(project.hasProperty('deployDocsSshPassphrase')) {
passphrase = project.findProperty('deployDocsSshPassphrase')
}
}
}
project.task('deployDocs') {
dependsOn 'docsZip'
doFirst {
project.ssh.run {
session(project.remotes.docs) {
def now = System.currentTimeMillis()
def name = project.rootProject.name
def version = project.rootProject.version
def tempPath = "/tmp/${name}-${now}-docs".replaceAll(' ', '_')
execute "mkdir -p $tempPath"
project.tasks.docsZip.outputs.each { o ->
put from: o.files, into: tempPath
}
execute "unzip $tempPath/*.zip -d $tempPath"
def extractPath = "/var/www/domains/springsource.org/www/htdocs/autorepo/docs/${name}/${version}/"
execute "rm -rf $extractPath"
execute "mkdir -p $extractPath"
execute "mv $tempPath/* $extractPath"
}
}
}
}

View File

@@ -0,0 +1,50 @@
apply plugin: 'org.hidetake.ssh'
project.ssh.settings {
knownHosts = allowAnyHosts
}
project.remotes {
docs {
role 'docs'
host = 'docs.af.pivotal.io'
user = project.findProperty('deployDocsSshUsername')
if(project.hasProperty('deployDocsSshKeyPath')) {
identity = project.file(project.findProperty('deployDocsSshKeyPath'))
}
if(project.hasProperty('deployDocsSshPassphrase')) {
passphrase = project.findProperty('deployDocsSshPassphrase')
}
}
}
project.task('deploySchema') {
dependsOn 'schemaZip'
doFirst {
project.ssh.run {
session(project.remotes.docs) {
def now = System.currentTimeMillis()
def name = project.rootProject.name
def version = project.rootProject.version
def tempPath = "/tmp/${name}-${now}-schema".replaceAll(' ', '_')
execute "mkdir -p $tempPath"
project.tasks.schemaZip.outputs.each { o ->
println "Putting $o.files"
put from: o.files, into: tempPath
}
execute "unzip $tempPath/*.zip -d $tempPath"
def extractPath = "/var/www/domains/springsource.org/www/htdocs/autorepo/schema/${name}/${version}/"
execute "rm -rf $extractPath"
execute "mkdir -p $extractPath"
execute "rm -f $tempPath*.zip"
execute "rm -rf $extractPath*"
execute "mv $tempPath/* $extractPath"
}
}
}
}

View File

@@ -0,0 +1,13 @@
def isSnapshot = version?.matches(/^.*[.-]BUILD-SNAPSHOT$/)
def isRelease = !isSnapshot
task finalizeDeployArtifacts {
}
if (isRelease && project.hasProperty("ossrhUsername")) {
project.ext.nexusUsername = project.ossrhUsername
project.ext.nexusPassword = project.ossrhPassword
project.getPluginManager().apply("io.codearte.nexus-staging")
finalizeDeployArtifacts.dependsOn project.tasks.closeAndReleaseRepository
project.nexusStaging.packageGroup = 'org.springframework'
}

View File

@@ -3,6 +3,9 @@ apply from: MAVEN_DEPLOYMENT_SCRIPT
apply from: RELEASE_CHECKS_SCRIPT
apply from: SPRING_SNAPSHOT_TEST_SCRIPT
apply plugin: 'spring-io'
apply from: "${GRADLE_SCRIPT_DIR}/artifactory.gradle"
apply from: "${GRADLE_SCRIPT_DIR}/ossrh.gradle"
apply from: "${GRADLE_SCRIPT_DIR}/deploy-artifacts.gradle"
ext.springIoVersion = project.hasProperty('platformVersion') ? platformVersion : 'Athens-RELEASE'

View File

@@ -4,6 +4,12 @@ install {
customizePom(repositories.mavenInstaller.pom, project)
}
uploadArchives {
repositories.mavenDeployer {
customizePom(pom, project)
}
}
def customizePom(pom, gradleProject) {
def isWar = project.hasProperty('war')
def projectName = gradleProject.name

46
gradle/ossrh.gradle Normal file
View File

@@ -0,0 +1,46 @@
def isSnapshot = version?.matches(/^.*[.-]BUILD-SNAPSHOT$/)
def isRelease = !isSnapshot
if(project.hasProperty("signing.keyId") && isRelease) {
apply plugin: "signing"
sign(project)
}
if(project.hasProperty('ossrhUsername')) {
uploadArchives {
repositories {
mavenDeployer {
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: project.ossrhUsername, password: project.ossrhPassword)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: project.ossrhUsername, password: project.ossrhPassword)
}
}
}
}
}
def sign(Project project) {
project.install {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> project.signing.signPom(deployment) }
}
}
}
project.uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> project.signing.signPom(deployment) }
}
}
}
project.signing {
required { project.gradle.taskGraph.hasTask("uploadArchives") }
sign project.configurations.archives
}
}