diff --git a/Jenkinsfile b/Jenkinsfile
index 7831e8fa..04e462a5 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -68,35 +68,47 @@ pipeline {
}
}
- stage('Release to artifactory') {
+ stage('Deploy') {
when {
beforeAgent(true)
anyOf {
- branch(pattern: "main|(\\d\\.\\d\\.x)", comparator: "REGEXP")
+ branch(pattern: "main|(\\d\\.\\d\\.x)|v(\\d\\.\\d\\.d)|", comparator: "REGEXP")
not { triggeredBy 'UpstreamCause' }
}
}
agent {
- label 'data'
+ docker {
+ image "harbor-repo.vmware.com/dockerhub-proxy-cache/springci/spring-vault-openjdk17-vault:${p['java.main.tag']}-${p['docker.vault.version']}"
+ args "${p['docker.java.inside.basic']}"
+ }
}
options { timeout(time: 20, unit: 'MINUTES') }
environment {
ARTIFACTORY = credentials("${p['artifactory.credentials']}")
+ SONATYPE = credentials('oss-login')
+ KEYRING = credentials('spring-signing-secring.gpg')
+ PASSPHRASE = credentials('spring-gpg-passphrase')
}
steps {
script {
- docker.image("harbor-repo.vmware.com/dockerhub-proxy-cache/springci/spring-vault-openjdk8-vault:${p['java.main.tag']}-${p['docker.vault.version']}").inside(p['docker.java.inside.basic']) {
- sh 'MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,artifactory ' +
- '-Dartifactory.server=https://repo.spring.io ' +
- "-Dartifactory.username=${ARTIFACTORY_USR} " +
- "-Dartifactory.password=${ARTIFACTORY_PSW} " +
- "-Dartifactory.staging-repository=libs-snapshot-local " +
- "-Dartifactory.build-name=spring-vault " +
- "-Dartifactory.build-number=${BUILD_NUMBER} " +
- '-Dmaven.test.skip=true clean deploy -U -B'
+ PROJECT_VERSION = sh(
+ script: "ci/version.sh",
+ returnStdout: true
+ ).trim()
+
+ RELEASE_TYPE = 'snapshot'
+
+ if (PROJECT_VERSION.matches(/.*-RC[0-9]+$/) || PROJECT_VERSION.matches(/.*-M[0-9]+$/)) {
+ RELEASE_TYPE = "milestone"
+ } else if (PROJECT_VERSION.endsWith('SNAPSHOT')) {
+ RELEASE_TYPE = 'snapshot'
+ } else if (PROJECT_VERSION.matches(/.*\.[0-9]+$/)) {
+ RELEASE_TYPE = 'release'
}
+
+ sh "ci/deploy-${RELEASE_TYPE}.sh"
}
}
}
diff --git a/ci/deploy-milestone.sh b/ci/deploy-milestone.sh
new file mode 100755
index 00000000..bd9da866
--- /dev/null
+++ b/ci/deploy-milestone.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -euo pipefail
+
+MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,milestone,artifactory,release \
+ -Dartifactory.server=https://repo.spring.io \
+ -Dartifactory.username=${ARTIFACTORY_USR} \
+ -Dartifactory.password=${ARTIFACTORY_PSW} \
+ -Dartifactory.staging-repository=libs-milestone-local \
+ -Dartifactory.build-name=spring-vault \
+ -Dartifactory.build-number=${BUILD_NUMBER} \
+ clean deploy -U -B
+
+MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pdistribute \
+ -Dartifactory.server=https://repo.spring.io \
+ -Dartifactory.username=${ARTIFACTORY_USR} \
+ -Dartifactory.password=${ARTIFACTORY_PSW} \
+ -Dartifactory.staging-repository=temp-private-local \
+ clean deploy -U -B
diff --git a/ci/deploy-release.sh b/ci/deploy-release.sh
new file mode 100755
index 00000000..a54ea2fb
--- /dev/null
+++ b/ci/deploy-release.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+set -euo pipefail
+
+GNUPGHOME=/tmp/gpghome
+export GNUPGHOME
+
+mkdir $GNUPGHOME
+cp $KEYRING $GNUPGHOME
+
+MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,central,release \
+ -Dgpg.passphrase=${PASSPHRASE} \
+ -Dgpg.secretKeyring=${GNUPGHOME}/secring.gpg \
+ -DstagingDescription="Releasing Spring Vault ${VERSION}" \
+ clean deploy -U -B
+
+MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pdistribute \
+ -Dartifactory.server=https://repo.spring.io \
+ -Dartifactory.username=${ARTIFACTORY_USR} \
+ -Dartifactory.password=${ARTIFACTORY_PSW} \
+ -Dartifactory.staging-repository=temp-private-local \
+ clean deploy -U -B
diff --git a/ci/deploy-snapshot.sh b/ci/deploy-snapshot.sh
new file mode 100755
index 00000000..5820fb94
--- /dev/null
+++ b/ci/deploy-snapshot.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -euo pipefail
+MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -s settings.xml -Pci,snapshot,artifactory \
+ -Dartifactory.server=https://repo.spring.io \
+ -Dartifactory.username=${ARTIFACTORY_USR} \
+ -Dartifactory.password=${ARTIFACTORY_PSW} \
+ -Dartifactory.staging-repository=libs-snapshot-local \
+ -Dartifactory.build-name=spring-vault \
+ -Dartifactory.build-number=${BUILD_NUMBER} \
+ -Dmaven.test.skip=true \
+ clean deploy -U -B
diff --git a/ci/version.sh b/ci/version.sh
new file mode 100755
index 00000000..71b2f024
--- /dev/null
+++ b/ci/version.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -euo pipefail
+
+RAW_VERSION=`MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw \
+ org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate \
+ -Dexpression=project.version -q -DforceStdout`
+
+# Split things up
+VERSION_PARTS=($RAW_VERSION)
+
+# Grab the last part, which is the actual version number.
+echo ${VERSION_PARTS[${#VERSION_PARTS[@]}-1]}
diff --git a/pom.xml b/pom.xml
index 919aba4b..79009934 100644
--- a/pom.xml
+++ b/pom.xml
@@ -619,6 +619,20 @@
+
+
+ snapshot
+
+
+
+ spring-libs-snapshot
+ Spring Snapshot Repository
+ https://repo.spring.io/libs-snapshot-local
+
+
+
+
+
milestone
@@ -679,6 +693,35 @@
true
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.1.0
+
+
+ enforce-no-third-party-snapshots
+
+ enforce
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ de.smartics.rules
+ smartics-enforcer-rules
+ 1.0.2
+
+
+
@@ -815,14 +858,6 @@
artifactory
-
-
- spring-libs-snapshot
- Spring Snapshot Repository
- https://repo.spring.io/libs-snapshot-local
-
-
-
diff --git a/settings.xml b/settings.xml
index b3227cc1..2700e663 100644
--- a/settings.xml
+++ b/settings.xml
@@ -24,6 +24,11 @@
${env.ARTIFACTORY_USR}
${env.ARTIFACTORY_PSW}
+
+ sonatype-nexus-staging
+ ${env.SONATYPE_USR}
+ ${env.SONATYPE_PSW}
+
-
\ No newline at end of file
+
diff --git a/spring-vault-dependencies/pom.xml b/spring-vault-dependencies/pom.xml
index a8a2144d..024de8db 100644
--- a/spring-vault-dependencies/pom.xml
+++ b/spring-vault-dependencies/pom.xml
@@ -221,6 +221,20 @@
+
+
+ snapshot
+
+
+
+ spring-libs-snapshot
+ Spring Snapshot Repository
+ https://repo.spring.io/libs-snapshot-local
+
+
+
+
+
milestone
@@ -268,7 +282,7 @@
org.apache.maven.plugins
maven-gpg-plugin
- 1.6
+ 3.0.1
sign-artifacts
@@ -288,14 +302,6 @@
artifactory
-
-
- spring-libs-snapshot
- Spring Snapshot Repository
- https://repo.spring.io/libs-snapshot-local
-
-
-
@@ -348,6 +354,41 @@
+
+ release
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.1.0
+
+
+ enforce-no-third-party-snapshots
+
+ enforce
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ de.smartics.rules
+ smartics-enforcer-rules
+ 1.0.2
+
+
+
+
+
+
diff --git a/spring-vault-distribution/pom.xml b/spring-vault-distribution/pom.xml
index 49ffa0c1..0d653157 100644
--- a/spring-vault-distribution/pom.xml
+++ b/spring-vault-distribution/pom.xml
@@ -427,13 +427,14 @@
Spring Vault Docs ${project.version}
1
+ {{BUILD_URL}}
- https://repo.spring.io
- ${artifactory.username}
- ${artifactory.password}
- temp-private-local
- temp-private-local
+ {{artifactory.server}}
+ {{artifactory.username}}
+ {{artifactory.password}}
+ {{artifactory.staging-repository}}
+ {{artifactory.staging-repository}}
*.zip