Spring Cloud projects reuse the same pattern of building and deploying the applications. That’s
-why this tool makes it easy to automate the release / dependency update process of our applications.
1.1 What does it do?
Clones the Spring Cloud Release project and picks all versions (Boot + Cloud projects)
Modifies the project versions with values from SC-Release
throws an exception when we bump versions to release and there’s a SNAPSHOT version referenced in the POM
Performs the build and checks if the docs modules have properly created the documentation
throws an exception when in the docs module there’s an unresolved tag in any HTML file
Commits changed poms (ONLY FOR NON-SNAPSHOT VERSIONS)
Creates a tag for the release / milestone (ONLY FOR NON-SNAPSHOT VERSIONS)
Runs the deployment of the artifacts
Publishes the docs (to spring-cloud-static for non-snapshots, to gh-pages for snapshots)
Reverts back to snapshots, bumps the version by a patch (1.0.1.RELEASE → 1.0.2.BUILD-SNAPSHOT) (ONLY FOR RELEASE VERSIONS)
Closes the milestone on Github (e.g. v1.0.1.RELEASE) (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates an email template under target/email.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a blog template under target/blog.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a tweet template under target/tweet.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a release notes template under target/notes.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Updates project information in Sagan (http://spring.io) (ONLY FOR SNAPSHOT / RELEASE VERSIONS)
Starting with version that does Sagan integration, you MUST pass the OAuth token,
+why this tool makes it easy to automate the release / dependency update process of our applications.
1.1 What does it do?
Clones the Spring Cloud Release project and picks all versions (Boot + Cloud projects)
Modifies the project versions with values from SC-Release
throws an exception when we bump versions to release and there’s a SNAPSHOT version referenced in the POM
Performs the build and checks if the docs modules have properly created the documentation
throws an exception when in the docs module there’s an unresolved tag in any HTML file
Commits changed poms (ONLY FOR NON-SNAPSHOT VERSIONS)
Creates a tag for the release / milestone (ONLY FOR NON-SNAPSHOT VERSIONS)
Runs the deployment of the artifacts
Publishes the docs (to spring-cloud-static for non-snapshots, to gh-pages for snapshots)
Reverts back to snapshots, bumps the version by a patch (1.0.1.RELEASE → 1.0.2.BUILD-SNAPSHOT) (ONLY FOR RELEASE VERSIONS)
Closes the milestone on Github (e.g. v1.0.1.RELEASE) (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates an email template under target/email.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a blog template under target/blog.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a tweet template under target/tweet.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a release notes template under target/notes.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Updates project information in Sagan (http://spring.io) (ONLY FOR SNAPSHOT / RELEASE VERSIONS)
Starting with version that does Sagan integration, you MUST pass the OAuth token,
otherwise the application will fail to start
1.2 What should I do first?
Members of the Spring Cloud Team typically use this tool as follows. They first
clone the releaser locally and build the jar manually
$ git clone git@github.com:spring-cloud/spring-cloud-release-tools.git
$ cd spring-cloud-release-tools
@@ -40,41 +40,45 @@ $ cd spr
$ # example of running the releaser agains Dalston.SR1 tag with 1.0.0.BUILD-SNAPSHOT version of the releaser
$ java -jar ~/repo/spring-cloud-release-tools/spring-cloud-release-tools-spring/target/spring-cloud-release-tools-spring-1.0.0.BUILD-SNAPSHOT.jar --releaser.pom.branch=vDalston.SR1 --spring.config.name=releaser -h
You will see a help screen looking like more or less like this
Here you can find the list of tasks in order
-[updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,createTemplates]
+[updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,createTemplates,updateSagan,updateGuides,updateDocumentation]
-Option Description
------- -----------
--a, --start-from <String> Starts all release task starting from the given
- task. Requires passing the task name (either
- one letter or the full name)
--b, --build [String] Build the project
--c, --commit [String] Commit, tag and push the tag
--d, --deploy [String] Deploy the artifacts
--f, --full-release [Boolean] Do you want to do the full release (default:
- false)
+Option Description
+------ -----------
+-a, --start-from <String> Starts all release task starting from the
+ given task. Requires passing the task
+ name (either one letter or the full
+ name)
+-b, --build [String] Build the project
+-c, --commit [String] Commit, tag and push the tag
+-d, --deploy [String] Deploy the artifacts
+-f, --full-release [Boolean] Do you want to do the full release
+ (default: false)
+-g, --updateSagan [String] Updating Sagan with release info
-h, --help [String]
--i, --interactive <Boolean> Do you want to set the properties from the
- command line (default: true)
--m, --closeMilestone [String] Close the milestone at Github
--o, --docs [String] Publish the docs
--p, --push [String] Push the commits
--r, --range <String> Runs release tasks from the given range.
- Requires passing the task names with a
- hyphen. The first task is inclusive, the
- second inclusive. E.g. 's-m' would mean
- running 'snapshot', 'push' and 'milestone'
- tasks
--s, --snapshots [String] Go back to snapshots and bump originalVersion
- by patch
--t, --createTemplates [String] Create email / blog / tweet etc. templates
--u, --updatePoms [String] Update poms with versions from Spring Cloud
- Release
+-i, --interactive <Boolean> Do you want to set the properties from
+ the command line (default: true)
+-m, --closeMilestone [String] Close the milestone at Github
+-o, --docs [String] Publish the docs
+-p, --push [String] Push the commits
+-r, --range <String> Runs release tasks from the given range.
+ Requires passing the task names with a
+ hyphen. The first task is inclusive,
+ the second inclusive. E.g. 's-m' would
+ mean running 'snapshot', 'push' and
+ 'milestone' tasks
+-s, --snapshots [String] Go back to snapshots and bump
+ originalVersion by patch
+-t, --createTemplates [String] Create email / blog / tweet etc. templates
+-u, --updatePoms [String] Update poms with versions from Spring
+ Cloud Release
+--ud, --updateDocumentation [String] Updating documentation repository
+--ug, --updateGuides [String] Updating Spring Guides
Examples of usage:
Run 'build' & 'commit' & 'deploy'
-java -jar releaser.jar -b -c -d
+java -jar jar.jar -b -c -d
Start from 'push'
java -jar releaser.jar -a push
@@ -98,7 +102,7 @@ $ java -jar ~/repo/spring-cloud-release-tools/spring-cloud-release-tools-spring/
releaser.fixed-versions - A String to String mapping of manually set versions. E.g. "spring-cloud-cli" → "1.0.0.RELEASE" will set
-the spring-cloud-cli.version to 1.0.0.RELEASE regardless of what was set in spring-cloud-release project. Example --releaser.fixed-versions[spring-cloud-cli]=1.0.0.RELEASE.
releaser.git.fetch-versions-from-git - If true then should fill the map of versions from Git. If false then picks fixed versions
releaser.git.clone-destination-dir - Where should the Spring Cloud Release repo get cloned to. If null defaults to a temporary directory
releaser.git.oauth-token - GitHub OAuth token to be used to interact with GitHub repo.
releaser.git.username - Optional Git username. If not passed keys will be used for authentication.
releaser.git.password - Optional Git password. If not passed keys will be used for authentication.
releaser.git.number-of-checked-milestones - In order not to iterate endlessly over milestones we introduce a threshold of milestones that
+the spring-cloud-cli.version to 1.0.0.RELEASE regardless of what was set in spring-cloud-release project. Example --releaser.fixed-versions[spring-cloud-cli]=1.0.0.RELEASE.
releaser.git.fetch-versions-from-git - If true then should fill the map of versions from Git. If false then picks fixed versions
releaser.git.clone-destination-dir - Where should the Spring Cloud Release repo get cloned to. If null defaults to a temporary directory
releaser.git.documentation-branch - Branch to check out for the documentation project. Defaults to gh-pages
releaser.git.oauth-token - GitHub OAuth token to be used to interact with GitHub repo.
releaser.git.username - Optional Git username. If not passed keys will be used for authentication.
releaser.git.password - Optional Git password. If not passed keys will be used for authentication.
releaser.git.number-of-checked-milestones - In order not to iterate endlessly over milestones we introduce a threshold of milestones that
we will go through to find the matching milestone. Defaults to 10
releaser.maven.build-command - Command to be executed to build the project. Defaults to ./mvnw clean install -Pdocs
releaser.maven.deploy-command - Command to be executed to deploy a built project". Defaults to ./mvnw deploy -DskipTests -Pfast
releaser.maven.publish-docs-commands - Command to be executed to deploy a built project. If present {{version}} will be replaced by the proper version.
Defaults to the standard Spring Cloud wget and execution of ghpages.
releaser.maven.system-properties - Additional system properties that should be passed to any commands. If present {{systemProps}} will be replaced by the contents of this property.
releaser.maven.wait-time-in-minutes - Max wait time in minutes for the process to finish. Defaults to 20
releaser.gradle.gradle-props-substitution - a map containing a key which is a property key inside gradle.properties and a value of
a project name. E.g. in gradle.properties you have foo=1.0.0.BUILD-SNAPSHOT and you would like spring-cloud-contract version to
diff --git a/single/images/callouts/1.png b/single/images/callouts/1.png
new file mode 100644
index 00000000..7d473430
Binary files /dev/null and b/single/images/callouts/1.png differ
diff --git a/single/images/callouts/2.png b/single/images/callouts/2.png
new file mode 100644
index 00000000..5d09341b
Binary files /dev/null and b/single/images/callouts/2.png differ
diff --git a/single/images/callouts/3.png b/single/images/callouts/3.png
new file mode 100644
index 00000000..ef7b7004
Binary files /dev/null and b/single/images/callouts/3.png differ
diff --git a/single/spring-cloud-release-tools.html b/single/spring-cloud-release-tools.html
index c29815bc..9bb53761 100644
--- a/single/spring-cloud-release-tools.html
+++ b/single/spring-cloud-release-tools.html
@@ -1,7 +1,7 @@
Spring Cloud Release Tools
Spring Cloud projects reuse the same pattern of building and deploying the applications. That’s
-why this tool makes it easy to automate the release / dependency update process of our applications.
1.1 What does it do?
Clones the Spring Cloud Release project and picks all versions (Boot + Cloud projects)
Modifies the project versions with values from SC-Release
throws an exception when we bump versions to release and there’s a SNAPSHOT version referenced in the POM
Performs the build and checks if the docs modules have properly created the documentation
throws an exception when in the docs module there’s an unresolved tag in any HTML file
Commits changed poms (ONLY FOR NON-SNAPSHOT VERSIONS)
Creates a tag for the release / milestone (ONLY FOR NON-SNAPSHOT VERSIONS)
Runs the deployment of the artifacts
Publishes the docs (to spring-cloud-static for non-snapshots, to gh-pages for snapshots)
Reverts back to snapshots, bumps the version by a patch (1.0.1.RELEASE → 1.0.2.BUILD-SNAPSHOT) (ONLY FOR RELEASE VERSIONS)
Closes the milestone on Github (e.g. v1.0.1.RELEASE) (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates an email template under target/email.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a blog template under target/blog.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a tweet template under target/tweet.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a release notes template under target/notes.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Updates project information in Sagan (http://spring.io) (ONLY FOR SNAPSHOT / RELEASE VERSIONS)
Starting with version that does Sagan integration, you MUST pass the OAuth token,
+why this tool makes it easy to automate the release / dependency update process of our applications.
1.1 What does it do?
Clones the Spring Cloud Release project and picks all versions (Boot + Cloud projects)
Modifies the project versions with values from SC-Release
throws an exception when we bump versions to release and there’s a SNAPSHOT version referenced in the POM
Performs the build and checks if the docs modules have properly created the documentation
throws an exception when in the docs module there’s an unresolved tag in any HTML file
Commits changed poms (ONLY FOR NON-SNAPSHOT VERSIONS)
Creates a tag for the release / milestone (ONLY FOR NON-SNAPSHOT VERSIONS)
Runs the deployment of the artifacts
Publishes the docs (to spring-cloud-static for non-snapshots, to gh-pages for snapshots)
Reverts back to snapshots, bumps the version by a patch (1.0.1.RELEASE → 1.0.2.BUILD-SNAPSHOT) (ONLY FOR RELEASE VERSIONS)
Closes the milestone on Github (e.g. v1.0.1.RELEASE) (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates an email template under target/email.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a blog template under target/blog.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a tweet template under target/tweet.txt (ONLY FOR NON-SNAPSHOT VERSIONS)
Generates a release notes template under target/notes.md (ONLY FOR NON-SNAPSHOT VERSIONS)
Updates project information in Sagan (http://spring.io) (ONLY FOR SNAPSHOT / RELEASE VERSIONS)
Starting with version that does Sagan integration, you MUST pass the OAuth token,
otherwise the application will fail to start
1.2 What should I do first?
Members of the Spring Cloud Team typically use this tool as follows. They first
clone the releaser locally and build the jar manually
$ git clone git@github.com:spring-cloud/spring-cloud-release-tools.git
$ cd spring-cloud-release-tools
@@ -40,41 +40,45 @@ $ cd spr
$ # example of running the releaser agains Dalston.SR1 tag with 1.0.0.BUILD-SNAPSHOT version of the releaser
$ java -jar ~/repo/spring-cloud-release-tools/spring-cloud-release-tools-spring/target/spring-cloud-release-tools-spring-1.0.0.BUILD-SNAPSHOT.jar --releaser.pom.branch=vDalston.SR1 --spring.config.name=releaser -h
You will see a help screen looking like more or less like this
Here you can find the list of tasks in order
-[updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,createTemplates]
+[updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,createTemplates,updateSagan,updateGuides,updateDocumentation]
-Option Description
------- -----------
--a, --start-from <String> Starts all release task starting from the given
- task. Requires passing the task name (either
- one letter or the full name)
--b, --build [String] Build the project
--c, --commit [String] Commit, tag and push the tag
--d, --deploy [String] Deploy the artifacts
--f, --full-release [Boolean] Do you want to do the full release (default:
- false)
+Option Description
+------ -----------
+-a, --start-from <String> Starts all release task starting from the
+ given task. Requires passing the task
+ name (either one letter or the full
+ name)
+-b, --build [String] Build the project
+-c, --commit [String] Commit, tag and push the tag
+-d, --deploy [String] Deploy the artifacts
+-f, --full-release [Boolean] Do you want to do the full release
+ (default: false)
+-g, --updateSagan [String] Updating Sagan with release info
-h, --help [String]
--i, --interactive <Boolean> Do you want to set the properties from the
- command line (default: true)
--m, --closeMilestone [String] Close the milestone at Github
--o, --docs [String] Publish the docs
--p, --push [String] Push the commits
--r, --range <String> Runs release tasks from the given range.
- Requires passing the task names with a
- hyphen. The first task is inclusive, the
- second inclusive. E.g. 's-m' would mean
- running 'snapshot', 'push' and 'milestone'
- tasks
--s, --snapshots [String] Go back to snapshots and bump originalVersion
- by patch
--t, --createTemplates [String] Create email / blog / tweet etc. templates
--u, --updatePoms [String] Update poms with versions from Spring Cloud
- Release
+-i, --interactive <Boolean> Do you want to set the properties from
+ the command line (default: true)
+-m, --closeMilestone [String] Close the milestone at Github
+-o, --docs [String] Publish the docs
+-p, --push [String] Push the commits
+-r, --range <String> Runs release tasks from the given range.
+ Requires passing the task names with a
+ hyphen. The first task is inclusive,
+ the second inclusive. E.g. 's-m' would
+ mean running 'snapshot', 'push' and
+ 'milestone' tasks
+-s, --snapshots [String] Go back to snapshots and bump
+ originalVersion by patch
+-t, --createTemplates [String] Create email / blog / tweet etc. templates
+-u, --updatePoms [String] Update poms with versions from Spring
+ Cloud Release
+--ud, --updateDocumentation [String] Updating documentation repository
+--ug, --updateGuides [String] Updating Spring Guides
Examples of usage:
Run 'build' & 'commit' & 'deploy'
-java -jar releaser.jar -b -c -d
+java -jar jar.jar -b -c -d
Start from 'push'
java -jar releaser.jar -a push
@@ -98,7 +102,7 @@ $ java -jar ~/repo/spring-cloud-release-tools/spring-cloud-release-tools-spring/
releaser.fixed-versions - A String to String mapping of manually set versions. E.g. "spring-cloud-cli" → "1.0.0.RELEASE" will set
-the spring-cloud-cli.version to 1.0.0.RELEASE regardless of what was set in spring-cloud-release project. Example --releaser.fixed-versions[spring-cloud-cli]=1.0.0.RELEASE.
releaser.git.fetch-versions-from-git - If true then should fill the map of versions from Git. If false then picks fixed versions
releaser.git.clone-destination-dir - Where should the Spring Cloud Release repo get cloned to. If null defaults to a temporary directory
releaser.git.oauth-token - GitHub OAuth token to be used to interact with GitHub repo.
releaser.git.username - Optional Git username. If not passed keys will be used for authentication.
releaser.git.password - Optional Git password. If not passed keys will be used for authentication.
releaser.git.number-of-checked-milestones - In order not to iterate endlessly over milestones we introduce a threshold of milestones that
+the spring-cloud-cli.version to 1.0.0.RELEASE regardless of what was set in spring-cloud-release project. Example --releaser.fixed-versions[spring-cloud-cli]=1.0.0.RELEASE.
releaser.git.fetch-versions-from-git - If true then should fill the map of versions from Git. If false then picks fixed versions
releaser.git.clone-destination-dir - Where should the Spring Cloud Release repo get cloned to. If null defaults to a temporary directory
releaser.git.documentation-branch - Branch to check out for the documentation project. Defaults to gh-pages
releaser.git.oauth-token - GitHub OAuth token to be used to interact with GitHub repo.
releaser.git.username - Optional Git username. If not passed keys will be used for authentication.
releaser.git.password - Optional Git password. If not passed keys will be used for authentication.
releaser.git.number-of-checked-milestones - In order not to iterate endlessly over milestones we introduce a threshold of milestones that
we will go through to find the matching milestone. Defaults to 10
releaser.maven.build-command - Command to be executed to build the project. Defaults to ./mvnw clean install -Pdocs
releaser.maven.deploy-command - Command to be executed to deploy a built project". Defaults to ./mvnw deploy -DskipTests -Pfast
releaser.maven.publish-docs-commands - Command to be executed to deploy a built project. If present {{version}} will be replaced by the proper version.
Defaults to the standard Spring Cloud wget and execution of ghpages.
releaser.maven.system-properties - Additional system properties that should be passed to any commands. If present {{systemProps}} will be replaced by the contents of this property.
releaser.maven.wait-time-in-minutes - Max wait time in minutes for the process to finish. Defaults to 20
releaser.gradle.gradle-props-substitution - a map containing a key which is a property key inside gradle.properties and a value of
a project name. E.g. in gradle.properties you have foo=1.0.0.BUILD-SNAPSHOT and you would like spring-cloud-contract version to
diff --git a/spring-cloud-release-tools.xml b/spring-cloud-release-tools.xml
index 99fbbaac..496ca4c4 100644
--- a/spring-cloud-release-tools.xml
+++ b/spring-cloud-release-tools.xml
@@ -68,6 +68,9 @@ why this tool makes it easy to automate the release / dependency update process
For GA/ SR release will create an issue in Spring Guides under https://github.com/spring-guides/getting-started-guides/issues/
+
+For GA/ SR release will update the links under https://github.com/spring-cloud/spring-cloud-static/tree/gh-pages/current
+Starting with version that does Sagan integration, you MUST pass the OAuth token,
@@ -140,41 +143,45 @@ $ java -jar ~/repo/spring-cloud-release-tools/spring-cloud-release-tools-spring/
You will see a help screen looking like more or less like thisHere you can find the list of tasks in order
-[updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,createTemplates]
+[updatePoms,build,commit,deploy,docs,snapshots,push,closeMilestone,createTemplates,updateSagan,updateGuides,updateDocumentation]
-Option Description
------- -----------
--a, --start-from <String> Starts all release task starting from the given
- task. Requires passing the task name (either
- one letter or the full name)
--b, --build [String] Build the project
--c, --commit [String] Commit, tag and push the tag
--d, --deploy [String] Deploy the artifacts
--f, --full-release [Boolean] Do you want to do the full release (default:
- false)
+Option Description
+------ -----------
+-a, --start-from <String> Starts all release task starting from the
+ given task. Requires passing the task
+ name (either one letter or the full
+ name)
+-b, --build [String] Build the project
+-c, --commit [String] Commit, tag and push the tag
+-d, --deploy [String] Deploy the artifacts
+-f, --full-release [Boolean] Do you want to do the full release
+ (default: false)
+-g, --updateSagan [String] Updating Sagan with release info
-h, --help [String]
--i, --interactive <Boolean> Do you want to set the properties from the
- command line (default: true)
--m, --closeMilestone [String] Close the milestone at Github
--o, --docs [String] Publish the docs
--p, --push [String] Push the commits
--r, --range <String> Runs release tasks from the given range.
- Requires passing the task names with a
- hyphen. The first task is inclusive, the
- second inclusive. E.g. 's-m' would mean
- running 'snapshot', 'push' and 'milestone'
- tasks
--s, --snapshots [String] Go back to snapshots and bump originalVersion
- by patch
--t, --createTemplates [String] Create email / blog / tweet etc. templates
--u, --updatePoms [String] Update poms with versions from Spring Cloud
- Release
+-i, --interactive <Boolean> Do you want to set the properties from
+ the command line (default: true)
+-m, --closeMilestone [String] Close the milestone at Github
+-o, --docs [String] Publish the docs
+-p, --push [String] Push the commits
+-r, --range <String> Runs release tasks from the given range.
+ Requires passing the task names with a
+ hyphen. The first task is inclusive,
+ the second inclusive. E.g. 's-m' would
+ mean running 'snapshot', 'push' and
+ 'milestone' tasks
+-s, --snapshots [String] Go back to snapshots and bump
+ originalVersion by patch
+-t, --createTemplates [String] Create email / blog / tweet etc. templates
+-u, --updatePoms [String] Update poms with versions from Spring
+ Cloud Release
+--ud, --updateDocumentation [String] Updating documentation repository
+--ug, --updateGuides [String] Updating Spring Guides
Examples of usage:
Run 'build' & 'commit' & 'deploy'
-java -jar releaser.jar -b -c -d
+java -jar jar.jar -b -c -d
Start from 'push'
java -jar releaser.jar -a push
@@ -242,6 +249,12 @@ the spring-cloud-cli.version to 1.0.0.RELEASEreleaser.git.spring-cloud-release-git-url - URL to Spring Cloud Release Git repository. Defaults to https://github.com/spring-cloud/spring-cloud-release
+releaser.git.documentation-url - URL to the documentation Git repository. Defaults to https://github.com/spring-cloud/spring-cloud-static
+
+
+releaser.git.documentation-branch - Branch to check out for the documentation project. Defaults to gh-pages
+
+releaser.git.oauth-token - GitHub OAuth token to be used to interact with GitHub repo.