Skip to content

Commit

Permalink
Add Deploy Artifacts Support
Browse files Browse the repository at this point in the history
  • Loading branch information
rwinch committed May 1, 2020
1 parent bb92e1d commit 04da004
Show file tree
Hide file tree
Showing 9 changed files with 212 additions and 0 deletions.
4 changes: 4 additions & 0 deletions build.gradle
Expand Up @@ -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'
}
}

Expand All @@ -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"
Expand Down
33 changes: 33 additions & 0 deletions gradle/artifactory.gradle
@@ -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')
}
}
}
11 changes: 11 additions & 0 deletions gradle/deploy-artifacts.gradle
@@ -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 changes: 46 additions & 0 deletions gradle/deploy-docs.gradle
@@ -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"
}
}
}
}
50 changes: 50 additions & 0 deletions gradle/deploy-schema.gradle
@@ -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"
}
}
}
}
13 changes: 13 additions & 0 deletions gradle/finalize-deploy.gradle
@@ -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'
}
3 changes: 3 additions & 0 deletions gradle/java-module.gradle
Expand Up @@ -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'

Expand Down
6 changes: 6 additions & 0 deletions gradle/maven-deployment.gradle
Expand Up @@ -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
Expand Down
46 changes: 46 additions & 0 deletions gradle/ossrh.gradle
@@ -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
}
}

0 comments on commit 04da004

Please sign in to comment.