mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-12 21:33:30 +00:00
Add Deploy Artifacts Support
Fixes gh-7939
This commit is contained in:
parent
b87ea1373d
commit
ba4953b057
@ -1,5 +1,8 @@
|
|||||||
apply plugin: 'maven-bom'
|
apply plugin: 'maven-bom'
|
||||||
apply from: "$rootDir/gradle/maven-deployment.gradle"
|
apply from: "$rootDir/gradle/maven-deployment.gradle"
|
||||||
|
apply from: "$rootDir/gradle/artifactory.gradle"
|
||||||
|
apply from: "$rootDir/gradle/ossrh.gradle"
|
||||||
|
apply from: "$rootDir/gradle/deploy-artifacts.gradle"
|
||||||
|
|
||||||
generatePom.enabled = false
|
generatePom.enabled = false
|
||||||
sonarqube.skipProject = true
|
sonarqube.skipProject = true
|
||||||
|
10
build.gradle
10
build.gradle
@ -12,6 +12,9 @@ buildscript {
|
|||||||
classpath('org.asciidoctor:asciidoctor-gradle-plugin:1.5.1')
|
classpath('org.asciidoctor:asciidoctor-gradle-plugin:1.5.1')
|
||||||
classpath("io.spring.gradle:docbook-reference-plugin:0.3.1")
|
classpath("io.spring.gradle:docbook-reference-plugin:0.3.1")
|
||||||
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.19.RELEASE")
|
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.19.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.21.1'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,6 +23,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'base'
|
apply plugin: 'base'
|
||||||
|
apply from: "$rootDir/gradle/finalize-deploy.gradle"
|
||||||
|
|
||||||
description = 'Spring Security'
|
description = 'Spring Security'
|
||||||
|
|
||||||
@ -86,7 +90,6 @@ configure(allprojects - javaProjects) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configure(subprojects - coreModuleProjects - project(':spring-security-samples-javaconfig-messages') - project(':spring-security-bom')) {
|
configure(subprojects - coreModuleProjects - project(':spring-security-samples-javaconfig-messages') - project(':spring-security-bom')) {
|
||||||
tasks.findByPath("artifactoryPublish")?.enabled = false
|
|
||||||
sonarqube {
|
sonarqube {
|
||||||
skipProject = true
|
skipProject = true
|
||||||
}
|
}
|
||||||
@ -102,10 +105,13 @@ configure(javaProjects) {
|
|||||||
}
|
}
|
||||||
apply from: "$rootDir/gradle/ide.gradle"
|
apply from: "$rootDir/gradle/ide.gradle"
|
||||||
apply from: "$rootDir/gradle/release-checks.gradle"
|
apply from: "$rootDir/gradle/release-checks.gradle"
|
||||||
apply from: "$rootDir/gradle/maven-deployment.gradle"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
configure(coreModuleProjects) {
|
configure(coreModuleProjects) {
|
||||||
|
apply from: "$rootDir/gradle/maven-deployment.gradle"
|
||||||
|
apply from: "$rootDir/gradle/artifactory.gradle"
|
||||||
|
apply from: "$rootDir/gradle/ossrh.gradle"
|
||||||
|
apply from: "$rootDir/gradle/deploy-artifacts.gradle"
|
||||||
apply plugin: 'emma'
|
apply plugin: 'emma'
|
||||||
apply plugin: 'spring-io'
|
apply plugin: 'spring-io'
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
// Docbook and Javadoc building and uploading tasks
|
// Docbook and Javadoc building and uploading tasks
|
||||||
apply plugin: 'base'
|
apply plugin: 'base'
|
||||||
|
apply from: "$rootDir/gradle/deploy-docs.gradle"
|
||||||
|
apply from: "$rootDir/gradle/deploy-schema.gradle"
|
||||||
|
|
||||||
task docs {
|
task docs {
|
||||||
dependsOn 'manual:reference', 'apidocs', 'guides:asciidoctor'
|
dependsOn 'manual:reference', 'apidocs', 'guides:asciidoctor'
|
||||||
@ -152,6 +154,7 @@ task schemaZip(type: Zip) {
|
|||||||
}
|
}
|
||||||
assert xsdFile != null
|
assert xsdFile != null
|
||||||
into (shortName) {
|
into (shortName) {
|
||||||
|
duplicatesStrategy 'exclude'
|
||||||
from xsdFile.path
|
from xsdFile.path
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
33
gradle/artifactory.gradle
Normal file
33
gradle/artifactory.gradle
Normal 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')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
gradle/deploy-artifacts.gradle
Normal file
11
gradle/deploy-artifacts.gradle
Normal 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
46
gradle/deploy-docs.gradle
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
50
gradle/deploy-schema.gradle
Normal file
50
gradle/deploy-schema.gradle
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
gradle/finalize-deploy.gradle
Normal file
13
gradle/finalize-deploy.gradle
Normal 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'
|
||||||
|
}
|
45
gradle/ossrh.gradle
Normal file
45
gradle/ossrh.gradle
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
def isSnapshot = version?.matches(/^.*[.-]BUILD-SNAPSHOT$/)
|
||||||
|
def isRelease = !isSnapshot
|
||||||
|
|
||||||
|
if(project.hasProperty("signing.keyId") && isRelease) {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user