From 19571891b7d00aadcb92538f45fd1c8d7b0c22f1 Mon Sep 17 00:00:00 2001 From: Sam Gleske Date: Thu, 16 Aug 2018 22:16:26 -0700 Subject: [PATCH] Support storing version in gradle.properties This will now auto-increment the patch version if the Jenkins version does not change. --- build.gradle | 1 - gradle.properties | 1 + init.sh | 1 + scripts/upgrade/generateSedExpr.groovy | 7 ++--- scripts/upgrade/remote_dependencies.sh | 9 +++++-- scripts/upgrade/upgrade_build_gradle.sh | 34 +++++++++++++++++++++++++ 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 9384fed..078e994 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,6 @@ apply from: "${bootstrapHome}/shared.gradle" //version should be the jenkins.war version appended by .1 and increments .1 //every time there's non-jenkins.war version changes to the package. //if upgrading jenkins.war version then it should be reset to .1. -version = '2.121.1.1' description = "Built from ${tokens['PACKAGENAME']} @ ${tokens['COMMIT']}" //Jenkins war and plugin versions diff --git a/gradle.properties b/gradle.properties index 6ba6dfa..59963c0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,2 @@ bootstrapHome=. +version=2.121.1.1 diff --git a/init.sh b/init.sh index d98fc47..59e7be2 100755 --- a/init.sh +++ b/init.sh @@ -25,6 +25,7 @@ export SED ) echo 'bootstrapHome=jenkins-bootstrap-shared' > gradle.properties +grep -- '^version' jenkins-bootstrap-shared/gradle.properties >> gradle.properties cat > jenkins_bootstrap.sh <<'EOF' #!/bin/bash source jenkins-bootstrap-shared/jenkins_bootstrap.sh diff --git a/scripts/upgrade/generateSedExpr.groovy b/scripts/upgrade/generateSedExpr.groovy index 983914a..114d19c 100644 --- a/scripts/upgrade/generateSedExpr.groovy +++ b/scripts/upgrade/generateSedExpr.groovy @@ -23,12 +23,13 @@ import jenkins.model.Jenkins -//update build.grade package version string +//update build.gradle package version string println "s/^(version ?= ?)'[^']+'(.*)\$/\\1'${Jenkins.instance.version}.1'\\2/" -//update jenkins.war version in build.gradle +println "s/^(version)=.*\$/\\1=${Jenkins.instance.version}.1/" +//update jenkins.war version in dependencies.gradle println "s/(.*getjenkins.*:jenkins-war):[^@]+@(war')/\\1:${Jenkins.instance.version}@\\2/" -//update all plugins in build.gradle +//update all plugins in dependencies.gradle Jenkins.instance.pluginManager.plugins.each { p -> println "s/(.*getplugins.*:${p.shortName}):[^@]+@(hpi')/\\1:${p.version}@\\2/" } diff --git a/scripts/upgrade/remote_dependencies.sh b/scripts/upgrade/remote_dependencies.sh index 2a4718c..6272de3 100755 --- a/scripts/upgrade/remote_dependencies.sh +++ b/scripts/upgrade/remote_dependencies.sh @@ -40,8 +40,13 @@ CUSTOM_TMPFILE="${TMP_DIR}/custom" echo 'Upgrade build.gradle file.' export JENKINS_CALL_ARGS="-m POST ${JENKINS_WEB}/scriptText --data-string script= -d" "${SCRIPT_LIBRARY_PATH}"/jenkins-call-url "${SCRIPT_LIBRARY_PATH}"/upgrade/generateSedExpr.groovy > "${TMPFILE}" -"${SED[@]}" -i.bak -f "${TMPFILE}" build.gradle -rm build.gradle.bak +if [ -n "${USE_GRADLE_PROPERTIES:-}" ]; then + VERSION_FILE=gradle.properties +else + VERSION_FILE=build.gradle +fi +"${SED[@]}" -i.bak -f "${TMPFILE}" "${VERSION_FILE}" +rm "${VERSION_FILE}.bak" #generate a new dependencies.gradle file echo 'Upgrade dependencies.gradle file.' diff --git a/scripts/upgrade/upgrade_build_gradle.sh b/scripts/upgrade/upgrade_build_gradle.sh index 1959ed4..8d2db74 100755 --- a/scripts/upgrade/upgrade_build_gradle.sh +++ b/scripts/upgrade/upgrade_build_gradle.sh @@ -77,5 +77,39 @@ if [ -z "${NO_UPGRADE}" -a "$("${SCRIPT_LIBRARY_PATH}"/jenkins-call-url "${SCRIP source "${SCRIPT_LIBRARY_PATH}"/upgrade/env.sh fi +if grep -- '^version' gradle.properties; then + export USE_GRADLE_PROPERTIES=1 +fi + +function get_version() { + awk 'BEGIN { FS="=" }; $1 == "version" { print $2 }' < gradle.properties +} + +if [ -n "${USE_GRADLE_PROPERTIES:-}" ]; then + VERSION="$(get_version)" + # increment the patch + VERSION="${VERSION%.*}.$(( ${VERSION##*.} + 1 ))" +fi + #write jenkins master and plugin versions to build.gradle and dependencies.gradle "${SCRIPT_LIBRARY_PATH}"/upgrade/remote_dependencies.sh + +# GNU or BSD sed is required. Homebrew on Mac installs GNU sed as gsed. +# Try to detect gsed; otherwise, fall back to detecting OS for using sed. +SED=() +if type -P gsed &> /dev/null; then + SED=(gsed -r) +elif [ "$(uname -s)" = "Darwin" ] || uname -s | grep -- 'BSD$' &> /dev/null; then + SED=(sed -E) +else + # assume Linux GNU sed + SED=(sed -r) +fi + +if [ -n "${USE_GRADLE_PROPERTIES:-}" ]; then + NEW_VERSION="$(get_version)" + if [ "${NEW_VERSION%.*}" = "${VERSION%.*}" ]; then + "${SED[@]}" -i.bak -- "s/^(version)=.*/\\1=${VERSION}/" gradle.properties + rm gradle.properties.bak + fi +fi