diff --git a/Jenkinsfile b/Jenkinsfile index ffc5f5e..b504b2a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,6 +7,7 @@ pipeline { options { disableConcurrentBuilds() + buildDiscarder(logRotator(numToKeepStr: '14')) } stages { @@ -48,124 +49,6 @@ pipeline { } } } - - stage('Deploy to Artifactory') { - agent { - docker { - image 'springci/spring-hateoas-openjdk8-with-graphviz-and-jq:latest' - args '-v $HOME/.m2:/root/.m2' - } - } - - environment { - ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c') - } - - steps { - script { - // Warm up this plugin quietly before using it. - sh "./mvnw -q org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version" - - PROJECT_VERSION = sh( - script: "./mvnw org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version -o | grep -v INFO", - returnStdout: true - ).trim() - - RELEASE_TYPE = 'milestone' // .RC? or .M? - - if (PROJECT_VERSION.endsWith('BUILD-SNAPSHOT')) { - RELEASE_TYPE = 'snapshot' - } else if (PROJECT_VERSION.endsWith('RELEASE')) { - RELEASE_TYPE = 'release' - } - - OUTPUT = sh( - script: "PROFILE=ci,${RELEASE_TYPE} ci/build.sh", - returnStdout: true - ).trim() - - echo "$OUTPUT" - - build_info_path = OUTPUT.split('\n') - .find { it.contains('Artifactory Build Info Recorder') } - .split('Saving Build Info to ')[1] - .trim()[1..-2] - - dir(build_info_path + '/..') { - stash name: 'build_info', includes: "*.json" - } - } - } - } - stage('Promote to Bintray') { - when { - branch 'release' - } - agent { - docker { - image 'springci/spring-hateoas-openjdk8-with-graphviz-and-jq:latest' - args '-v $HOME/.m2:/root/.m2' - } - } - - environment { - ARTIFACTORY = credentials('02bd1690-b54f-4c9f-819d-a77cb7a9822c') - } - - steps { - script { - // Warm up this plugin quietly before using it. - sh "./mvnw -q org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version" - - PROJECT_VERSION = sh( - script: "./mvnw org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version -o | grep -v INFO", - returnStdout: true - ).trim() - - if (PROJECT_VERSION.endsWith('RELEASE')) { - unstash name: 'build_info' - sh "ci/promote-to-bintray.sh" - } else { - echo "${PROJECT_VERSION} is not a candidate for promotion to Bintray." - } - } - } - } - stage('Sync to Maven Central') { - when { - branch 'release' - } - agent { - docker { - image 'springci/spring-hateoas-openjdk8-with-graphviz-and-jq:latest' - args '-v $HOME/.m2:/root/.m2' - } - } - - environment { - BINTRAY = credentials('Bintray-spring-operator') - SONATYPE = credentials('oss-token') - } - - steps { - script { - // Warm up this plugin quietly before using it. - sh "./mvnw -q org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version" - - PROJECT_VERSION = sh( - script: "./mvnw org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version -o | grep -v INFO", - returnStdout: true - ).trim() - - if (PROJECT_VERSION.endsWith('RELEASE')) { - unstash name: 'build_info' - sh "ci/sync-to-maven-central.sh" - } else { - echo "${PROJECT_VERSION} is not a candidate for syncing to Maven Central." - } - } - } - } } post { diff --git a/RELEASE.adoc b/RELEASE.adoc deleted file mode 100644 index db76aca..0000000 --- a/RELEASE.adoc +++ /dev/null @@ -1,19 +0,0 @@ -=== Making a release - -1. Create a new release (on the main branch). -+ ----- -% ci/create-release.sh ----- -+ -2. With the release tagged, push the tagged version to the release branch. -+ ----- -% git checkout -b release -% git reset --hard -% git push -f origin release ----- - -NOTE: You can chain the previous set of commands together using `&&`. - -The pipeline will build and release the "release" branch. It will also build a new a new snapshot and stage it on artifactory. diff --git a/ci/README.adoc b/ci/README.adoc deleted file mode 100644 index bd69997..0000000 --- a/ci/README.adoc +++ /dev/null @@ -1,5 +0,0 @@ -== Concourse CI - -Spring HATEOAS Examples is built using Concourse as it's CI tool of choice. - -The pipeline is defined on https://github.com/spring-projects/spring-hateoas[Spring HATEOAS], it's parent project. \ No newline at end of file diff --git a/ci/build.sh b/ci/build.sh deleted file mode 100755 index 6a202bb..0000000 --- a/ci/build.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -./mvnw -P${PROFILE} -Dmaven.test.skip=true clean deploy -B diff --git a/ci/create-release.sh b/ci/create-release.sh deleted file mode 100755 index b6d899f..0000000 --- a/ci/create-release.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -RELEASE=$1 -SNAPSHOT=$2 - -# Bump up the version in pom.xml to the desired version and commit the change -./mvnw versions:set -DnewVersion=$RELEASE -DgenerateBackupPoms=false -git add . -git commit --message "Releasing Spring HATEOAS Examples v$RELEASE" - -# Tag the release -git tag -s v$RELEASE -m "v$RELEASE" - -# Bump up the version in pom.xml to the next snapshot -./mvnw versions:set -DnewVersion=$SNAPSHOT -DgenerateBackupPoms=false -git add . -git commit --message "Continue development on v$SNAPSHOT" - - diff --git a/ci/promote-to-bintray.sh b/ci/promote-to-bintray.sh deleted file mode 100755 index a00bb8d..0000000 --- a/ci/promote-to-bintray.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -set -e -u - -buildName=`jq -r '.name' build-info.json` -buildNumber=`jq -r '.number' build-info.json` -groupId=`jq -r '.modules[0].id' build-info.json | sed 's/\(.*\):.*:.*/\1/'` -version=`jq -r '.modules[0].id' build-info.json | sed 's/.*:.*:\(.*\)/\1/'` - -echo "Promoting ${buildName}/${buildNumber}/${groupId}/${version} to libs-release-local" - -curl \ - -s \ - --connect-timeout 240 \ - --max-time 2700 \ - -u ${ARTIFACTORY_USR}:${ARTIFACTORY_PSW} \ - -H 'Content-type:application/json' \ - -d '{"sourceRepos": ["libs-release-local"], "targetRepo" : "spring-distributions", "async":"true"}' \ - -f \ - -X \ - POST "https://repo.spring.io/api/build/distribute/${buildName}/${buildNumber}" > /dev/null || { echo "Failed to distribute" >&2; exit 1; } - -echo "Waiting for artifacts to be published" - -ARTIFACTS_PUBLISHED=false -WAIT_TIME=10 -COUNTER=0 - -while [ $ARTIFACTS_PUBLISHED == "false" ] && [ $COUNTER -lt 120 ]; do - - result=$( curl -s https://api.bintray.com/packages/spring/jars/"${groupId}" ) - versions=$( echo "$result" | jq -r '.versions' ) - exists=$( echo "$versions" | grep "$version" -o || true ) - - if [ "$exists" = "$version" ]; then - ARTIFACTS_PUBLISHED=true - fi - - COUNTER=$(( COUNTER + 1 )) - sleep $WAIT_TIME - -done diff --git a/ci/sync-to-maven-central.sh b/ci/sync-to-maven-central.sh deleted file mode 100755 index 7150ca7..0000000 --- a/ci/sync-to-maven-central.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -set -e -u - -buildName=`jq -r '.name' build-info.json` -buildNumber=`jq -r '.number' build-info.json` -groupId=`jq -r '.modules[0].id' build-info.json | sed 's/\(.*\):.*:.*/\1/'` -version=`jq -r '.modules[0].id' build-info.json | sed 's/.*:.*:\(.*\)/\1/'` - -echo "Syncing ${buildName}/${buildNumber}/${groupId}/${version} to Maven Central..." - -curl \ - -s \ - --connect-timeout 240 \ - --max-time 2700 \ - -u ${BINTRAY_USR}:${BINTRAY_PSW} \ - -H 'Content-Type: application/json' \ - -d "{ \"username\": \"${SONATYPE_USR}\", \"password\": \"${SONATYPE_PSW}\"}" \ - -f \ - -X \ - POST "https://api.bintray.com/maven_central_sync/spring/jars/${groupId}/versions/${version}" > /dev/null || { echo "Failed to sync" >&2; exit 1; } - -echo "Sync complete" diff --git a/ci/test.sh b/ci/test.sh index f6bb0bf..9effba2 100755 --- a/ci/test.sh +++ b/ci/test.sh @@ -2,4 +2,4 @@ set -euo pipefail -./mvnw -P${PROFILE} clean dependency:list test -Dsort -B +MAVEN_OPTS="-Duser.name=jenkins -Duser.home=/tmp/jenkins-home" ./mvnw -P${PROFILE} clean dependency:list test -Dsort -B diff --git a/pom.xml b/pom.xml index 0687396..3f2bcbc 100644 --- a/pom.xml +++ b/pom.xml @@ -90,130 +90,7 @@ - - - snapshot - - - - - org.jfrog.buildinfo - artifactory-maven-plugin - 2.6.1 - false - - - build-info - - publish - - - - {{BUILD_URL}} - - - spring-hateoas - spring-hateoas - false - *:*:*:*@zip - - - https://repo.spring.io - {{ARTIFACTORY_USR}} - {{ARTIFACTORY_PSW}} - libs-snapshot-local - libs-snapshot-local - - - - - - - - - - - milestone - - - - - org.jfrog.buildinfo - artifactory-maven-plugin - 2.6.1 - false - - - build-info - - publish - - - - {{BUILD_URL}} - - - spring-hateoas - spring-hateoas - false - *:*:*:*@zip - - - https://repo.spring.io - {{ARTIFACTORY_USR}} - {{ARTIFACTORY_PSW}} - libs-milestone-local - libs-milestone-local - - - - - - - - - - - release - - - - - org.jfrog.buildinfo - artifactory-maven-plugin - 2.6.1 - false - - - build-info - - publish - - - - {{BUILD_URL}} - - - spring-hateoas - spring-hateoas - false - *:*:*:*@zip - - - https://repo.spring.io - {{ARTIFACTORY_USR}} - {{ARTIFACTORY_PSW}} - libs-release-local - libs-release-local - - - - - - - - - +