diff --git a/docs/src/main/asciidoc/images/releasers.png b/docs/src/main/asciidoc/images/releasers.png new file mode 100644 index 00000000..6920cda4 Binary files /dev/null and b/docs/src/main/asciidoc/images/releasers.png differ diff --git a/docs/src/main/asciidoc/images/releasersForMetaRelease.png b/docs/src/main/asciidoc/images/releasersForMetaRelease.png new file mode 100644 index 00000000..6e9a0311 Binary files /dev/null and b/docs/src/main/asciidoc/images/releasersForMetaRelease.png differ diff --git a/docs/src/main/asciidoc/images/runningScBuildReleaser.png b/docs/src/main/asciidoc/images/runningScBuildReleaser.png new file mode 100644 index 00000000..33ea65ec Binary files /dev/null and b/docs/src/main/asciidoc/images/runningScBuildReleaser.png differ diff --git a/docs/src/main/asciidoc/images/runningSpringCloudMetaReleaser.png b/docs/src/main/asciidoc/images/runningSpringCloudMetaReleaser.png new file mode 100644 index 00000000..c4895308 Binary files /dev/null and b/docs/src/main/asciidoc/images/runningSpringCloudMetaReleaser.png differ diff --git a/docs/src/main/asciidoc/images/scBuildReleaser.png b/docs/src/main/asciidoc/images/scBuildReleaser.png new file mode 100644 index 00000000..ad3fcd3b Binary files /dev/null and b/docs/src/main/asciidoc/images/scBuildReleaser.png differ diff --git a/docs/src/main/asciidoc/images/springCloudMetaRelease.png b/docs/src/main/asciidoc/images/springCloudMetaRelease.png new file mode 100644 index 00000000..84c6c458 Binary files /dev/null and b/docs/src/main/asciidoc/images/springCloudMetaRelease.png differ diff --git a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc index 7b8f9f70..d4507084 100644 --- a/docs/src/main/asciidoc/spring-cloud-release-tools.adoc +++ b/docs/src/main/asciidoc/spring-cloud-release-tools.adoc @@ -382,6 +382,112 @@ $ wget https://repo.spring.io/libs-milestone/org/springframework/cloud/internal/ $ java -jar target/spring-cloud-release-tools-spring-1.0.0.M1.jar --releaser.working-dir=/path/to/project/root ---- +=== Performing a release via Jenkins + +NOTE: Whenever a release process is broken, Jenkins will mark it with a red ball and break the build. Whenever a post-release action went wrong, but the release is successful, Jenkins will mark the build wuth a yellow ball and mark the build as unstable. + +==== Releasing a single project + +Let us assume that we are to release `spring-cloud-build` project. We need to do the following steps: + +- create a branch (e.g. `springCloudBuildRelease`) in a BOM containing project e.g. https://github.com/spring-cloud/spring-cloud-release/[spring-cloud-release] +```bash +$ git clone git@github.com:spring-cloud/spring-cloud-release.git +$ cd spring-cloud-release +$ git checkout -b springCloudBuildRelease +``` +- update *all* versions as if you were doing a release train. We need to update the project's versions, Boot version and dependencies versions too. Let us assume that we will eventually be doing a release train `Hoxton.M1` release, Spring Boot to latest available one and `spring-cloud-commons` to `1.2.3.BUILD-SNAPSHOT` +```bash +// setting the release train value +$ ./mvnw versions:set -DnewVersion=Hoxton.M1 -DgenerateBackupPoms=false -DprocessAllModules=true +// Update all parent versions +$ ./mvnw versions:update-parent -DgenerateBackupPoms=false -DprocessAllModules=true +// Setting the necessary dependencies +$ ./mvnw versions:set-property -Dproperty=spring-cloud-commons.version -DnewVersion=1.2.3.BUILD-SNAPSHOT -pl spring-cloud-dependencies -DgenerateBackupPoms=false +// NOTE!!! +// Verify if the versions set by Maven are correct!! +$ git diff +// commit and push the branch +$ git add . && git commit -m "Updating project for Spring Cloud Build release" && git push origin springCloudBuildRelease +``` + +Since the project is prepared, go to Jenkins to the https://jenkins.spring.io/view/Spring%20Cloud/view/Releaser/[Releaser view]. + +image::{github-raw}/docs/src/main/asciidoc/images/releasers.png[Releaser view] + + Pick the proper releaser project (e.g. `spring-cloud-build-releaser`. + +image::{github-raw}/docs/src/main/asciidoc/images/scBuildReleaser.png[Spring Cloud Build Releaser - build with parameters] + +Next, click `Build with parameters`. + +image::{github-raw}/docs/src/main/asciidoc/images/runningScBuildReleaser.png[Updated `RELEASER_POM_BRANCH`] + +Pick from which branch you would like the project (e.g. `spring-cloud-build` to be built - defaults to `master`) and update the `RELEASER_POM_BRANCH` to point to the checked out branch of Spring Cloud Release (e.g. `springCloudBuildRelease`). You can pick if you only want to perform post-release tasks or the whole release. + +Finally, click `Build`. + +You're done! + +==== Releasing a release train + +We call a release train a `meta-release`. In order to perform one, you need to: + +- in your BOM containing project (e.g. `spring-cloud-release` you have to have a branch, where you store properties with versions of your projects. E.g. the branch name can be https://github.com/spring-cloud/spring-cloud-release/tree/jenkins-releaser-config[jenkins-releaser-config]). +```bash +$ git clone git@github.com:spring-cloud/spring-cloud-release.git +$ cd spring-cloud-release +$ git checkout jenkins-releaser-config +``` +- create a file that will contain all properties for a given release train. The name of the release train should be lowercase and dots should be converted to underscores. E.g. for the `Greenwich.SR2` release train we need to have `greenwich_sr2.properties` file. +```bash +$ touch greenwich_sr2.properties +``` +- We need to update the file with all versions for the release train. The properties file contains an *ordered* list of `releaser.fixed-versions[project-name]=project-version` entries. +```bash +$ echo "releaser.fixed-versions[spring-boot]=2.1.5.RELEASE +releaser.fixed-versions[spring-cloud-build]=2.1.5.RELEASE +releaser.fixed-versions[spring-cloud-commons]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-function]=2.0.2.RELEASE +releaser.fixed-versions[spring-cloud-stream]=Fishtown.SR3 +releaser.fixed-versions[spring-cloud-aws]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-bus]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-task]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-config]=2.1.3.RELEASE +releaser.fixed-versions[spring-cloud-netflix]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-cloudfoundry]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-kubernetes]=1.0.2.RELEASE +releaser.fixed-versions[spring-cloud-openfeign]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-consul]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-gateway]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-security]=2.1.3.RELEASE +releaser.fixed-versions[spring-cloud-sleuth]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-zookeeper]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-contract]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-gcp]=1.1.2.RELEASE +releaser.fixed-versions[spring-cloud-vault]=2.1.2.RELEASE +releaser.fixed-versions[spring-cloud-release]=Greenwich.SR2" >> greenwich_sr2.properties +$ git add greenwich_sr2.properties && git commit -m "Added Greenwich.SR2 properties" && git push origin jenkins-releaser-config +``` + +Since the project is prepared, go to Jenkins to the https://jenkins.spring.io/view/Spring%20Cloud/view/Releaser/[Releaser view]. + +image::{github-raw}/docs/src/main/asciidoc/images/releasersForMetaRelease.png[Releaser view] + + Pick the proper meta-releaser project (e.g. `spring-cloud-meta-releaser`. + +image::{github-raw}/docs/src/main/asciidoc/images/springCloudMetaRelease.png[Spring Cloud Meta Releaser - build with parameters] + +Next, click `Build with parameters`. + +image::{github-raw}/docs/src/main/asciidoc/images/runningSpringCloudMetaReleaser.png[Updated `RELEASER_POM_BRANCH`] + +You have quite a few options to pick, but the most important one is to set the value of the `RELEASE_VERSION` to the given release train version (e.g. `Greenwich.SR2`). Continue updating the rest of the fields if necessary and read the field descriptions and this documentation for more information. + +Finally, click `Build`. + +You're done! + === FAQ ==== JSchException: Auth fail