Compare commits

...
116 Commits
Author SHA1 Message Date
buildmaster db5c07d175 Update SNAPSHOT to 2.2.0.RC1 2019-10-23 19:58:52 +00:00
Spencer Gibb c0b4f01f4e Adds buildCommand back 2019-10-23 15:56:36 -04:00
buildmaster 2e19f63b25 Bumping versions 2019-10-23 18:24:23 +00:00
Marcin Grzejszczak fc96d209c7 Added project-root var resolution in readme generation script 2019-10-23 15:49:54 +02:00
buildmaster c780d61513 Bumping versions 2019-10-18 07:13:15 +00:00
Ryan Baxter b1bfba6477 Merge remote-tracking branch 'origin/2.1.x' 2019-10-17 15:54:00 -04:00
Ryan Baxter a8f202ab85 Removing resource_class from circle config 2019-10-17 15:51:48 -04:00
Ryan Baxter 637a075b76 Update to Spring Boot 2.2.0.RELEASE 2019-10-17 15:44:13 -04:00
buildmaster 758e7241a2 Bumping versions 2019-10-05 07:13:05 +00:00
Marcin Grzejszczak 377f8ab000 Upgraded asciidoctor plugin to 1.5.8 2019-10-04 16:16:40 +02:00
Marcin Grzejszczak c71f50931b Lowered the precedense of project-root attribute 2019-10-04 14:04:04 +02:00
Marcin Grzejszczak 200efcb348 Added gitignore so that the unpacked sources are not added [don't have a better idea ATM] 2019-10-03 21:34:56 +02:00
Marcin Grzejszczak ed42b3a69a Revert "remove bats fixtures temporarily"
This reverts commit 6ece1d5969.
2019-10-03 21:25:01 +02:00
Marcin Grzejszczak 2a7cf5d7be We don't want to download sources of our own project 2019-10-03 21:24:58 +02:00
Spencer Gibb 3a6c453d61 Comment out release hack 2019-10-03 14:56:34 -04:00
Spencer Gibb 098dba54c2 skip tests 2019-10-03 14:43:15 -04:00
Spencer Gibb 9d8a2e134e Attempt to install build without deploying 2019-10-03 14:39:41 -04:00
Spencer Gibb 2a3797bdaa Revert "Updates to 2.2.0.M6"
This reverts commit 92c70e32
2019-10-03 12:31:16 -04:00
Spencer Gibb 92c70e3253 Updates to 2.2.0.M6 2019-10-03 12:28:25 -04:00
Spencer Gibb 6ece1d5969 remove bats fixtures temporarily 2019-10-03 12:08:06 -04:00
buildmaster f01646cffd Bumping versions 2019-10-03 13:46:18 +00:00
buildmaster ac503a0448 Bumping versions 2019-09-24 14:05:10 +00:00
buildmaster 46a0f7cd0c Bumping versions 2019-09-24 11:01:17 +00:00
buildmaster bf7db5e2dd Bumping versions 2019-09-24 07:50:35 +00:00
buildmaster 7d473e0ba2 Bumping versions 2019-09-24 07:13:02 +00:00
Spencer Gibb c011c51240 Revert "Bumping versions"
This reverts commit 3f62e003
2019-09-23 12:36:17 -04:00
buildmaster 3f62e003c0 Bumping versions 2019-09-21 07:13:06 +00:00
Spencer Gibb 6ed8684df3 Bumps boot to 2.2.0.M6... again 2019-09-20 17:02:43 -04:00
Ryan Baxter 1b2b6bfb2c Revert "2.2.0.M5 version changes"
This reverts commit dcf98e5632.
2019-09-18 12:10:48 -04:00
Ryan Baxter dcf98e5632 2.2.0.M5 version changes 2019-09-18 12:09:15 -04:00
buildmaster 4faff54278 Bumping versions 2019-09-17 07:13:02 +00:00
Igor Perikov 1a67bf0b89 Update path to local checkstyle-header.txt (#141)
So it is valid and same as url pointing to github-uploaded .txt file
2019-09-16 11:59:22 -04:00
Marcin Grzejszczak f2f55d458f Fixed logging 2019-09-12 11:44:55 +02:00
buildmaster dfff168439 Bumping versions 2019-09-12 07:13:04 +00:00
Marcin Grzejszczak 643ca5161e Reclone spring cloud static if there are issues when cloning / pulling changes 2019-09-11 17:17:22 +02:00
Spencer Gibb 083caea6b2 Bumps boot to 2.2.0.M6 2019-09-11 09:56:46 -04:00
Marcin Grzejszczak 1d35ef3be7 Added tests, not failing if parent file doesn't exist 2019-09-09 11:30:17 +02:00
Marcin Grzejszczak f9aad5f2f5 Fixed the default path for configprops 2019-09-06 14:28:57 +02:00
Marcin Grzejszczak efdb76462e Improved rendering of the table with props 2019-09-06 13:54:18 +02:00
Marcin Grzejszczak 39c493473b Added the inclusion pattern 2019-09-06 13:49:31 +02:00
Marcin Grzejszczak f7f7f81534 Parametrized the configprops path 2019-09-06 13:32:42 +02:00
Marcin Grzejszczak 941340a588 Added automated configprops table generation; fixes gh-144 2019-09-06 13:15:50 +02:00
Ryan Baxter 1e7306187b Bumping version for next release 2019-09-05 20:55:23 -04:00
Ryan Baxter 3c6e1cfaa6 Revert "Prepping for 2.1.7.RELEASE"
This reverts commit 929f134f7f.
2019-09-05 20:54:13 -04:00
Ryan Baxter 929f134f7f Prepping for 2.1.7.RELEASE 2019-09-05 19:59:26 -04:00
Ryan Baxter 4fcaad3875 Bumping boot release 2019-09-05 16:46:33 -04:00
Marcin Grzejszczak 5c21bf991e Added additional test assertion 2019-08-19 13:05:31 +02:00
Marcin Grzejszczak 620f5a4ade Makes the spring cloud static repo exportable; fixes gh-140 2019-08-19 12:54:58 +02:00
Marcin Grzejszczak 12ac72d4b3 Removed the trailing slash in docs url 2019-08-19 09:00:38 +02:00
Marcin Grzejszczak adfcaa2525 origin master as git.branch 2019-08-12 12:51:03 +02:00
Marcin Grzejszczak 6a8cc81e0a Moved the setup of properties to the initialize phase 2019-08-12 12:51:03 +02:00
buildmaster 18da776da9 Bumping versions 2019-08-09 07:12:31 +00:00
Ryan Baxter 02d30876cf Setting Boot to 2.2.0.M5 2019-08-08 12:57:12 -04:00
Ryan Baxter 7013634e77 Revert "Version changes for 2.2.0.M4 release"
This reverts commit 80aa70eaa9.
2019-08-08 12:01:29 -04:00
Ryan Baxter 80aa70eaa9 Version changes for 2.2.0.M4 release 2019-08-08 11:59:51 -04:00
buildmaster e1ea303044 Bumping versions 2019-08-07 07:13:04 +00:00
Spencer Gibb 06547a6ff7 Bumps boot to 2.2.0.M5 2019-08-06 12:39:15 -04:00
buildmaster 32f586b20c Bumping versions 2019-08-06 07:12:43 +00:00
Marcin Grzejszczak d43a3e1b7d Added spring-cloud-version as an attribute 2019-08-05 22:45:36 +02:00
buildmaster 3afd0a2bd3 Bumping versions 2019-07-31 07:12:43 +00:00
Marcin Grzejszczak 7de33c920c Added info about attributes 2019-07-30 09:55:25 +02:00
Marcin Grzejszczak 8e73741657 Added info about attributes 2019-07-30 09:33:01 +02:00
buildmaster 5503649e5b Bumping versions 2019-07-30 07:13:14 +00:00
Marcin Grzejszczak 277160fb32 Multi pages (#139)
* WIP

* single / multi and pdf added

* Added git info to docs

* docs urls, links set from props

* Fixed extensions

* Added readme

* index.html is a normal page

* Fixed invalid reference to spring-cloud raw github links

* Added project root attribute

* Changes following review
2019-07-29 14:49:55 +02:00
Marcin Grzejszczak fb4e0c6b59 Added symbolic link of index.adoc 2019-07-29 14:23:42 +02:00
Marcin Grzejszczak 8c47c5fcf7 Added symbolic link of index.adoc 2019-07-29 14:23:40 +02:00
Marcin Grzejszczak fb4e94d07c Changes following review 2019-07-26 14:56:43 +02:00
Marcin Grzejszczak 3f2eb50c74 Merge branch 'master' into multi_pages 2019-07-23 18:13:57 +02:00
Marcin Grzejszczak 6176fb3ba7 Added project root attribute 2019-07-23 13:12:06 +02:00
buildmaster d885a49ddd Bumping versions 2019-07-23 11:04:03 +00:00
Marcin Grzejszczak 8d1f5b2c53 Removed brittle tests 2019-07-23 13:01:15 +02:00
Marcin Grzejszczak e96bbbdda1 Fixed invalid reference to spring-cloud raw github links 2019-07-22 17:34:00 +02:00
Marcin Grzejszczak 1b8e3471c0 index.html is a normal page 2019-07-22 16:40:37 +02:00
Marcin Grzejszczak 2a25b01f99 Added readme 2019-07-22 15:11:36 +02:00
Marcin Grzejszczak eaa807396c Updated old versions of asciidoctor stuff 2019-07-22 14:03:43 +02:00
Marcin Grzejszczak a3874d2c62 Fixed extensions 2019-07-20 11:39:06 +02:00
Marcin Grzejszczak 181fb388fc docs urls, links set from props 2019-07-19 17:39:52 +02:00
Marcin Grzejszczak 3673bb8944 Added git info to docs 2019-07-18 14:16:07 +02:00
Marcin Grzejszczak eafe8ff067 single / multi and pdf added 2019-07-16 17:05:16 +02:00
Marcin Grzejszczak e7b3617cca WIP 2019-07-11 17:00:45 +02:00
Clay McCoy 47a1177134 Add mac related file to .gitignore (#138) 2019-06-28 16:32:37 -04:00
Clay McCoy dc5e21e1b8 Add link to Spring Cloud Build project to IntelliJ setup docs (#137)
This would have helped me when setting up Checkstyle in the Spring Cloud Config project. I think a lot of IJ users will skip to this section like I did and miss the fact that these files aren’t in the local repo. Otherwise the docs are great.
2019-06-28 16:32:15 -04:00
Marcin Grzejszczak 66d630b974 Uncommented bats 2019-06-28 22:10:50 +02:00
Marcin Grzejszczak cd389e7a3b Should help with CI 2019-06-28 22:06:01 +02:00
Spencer Gibb 8125841e11 Revert "Update SNAPSHOT to 2.2.0.M3"
This reverts commit e46b1072a8.
2019-06-28 15:39:26 -04:00
Spencer Gibb e46b1072a8 Update SNAPSHOT to 2.2.0.M3 2019-06-28 15:37:49 -04:00
Spencer Gibb 6d67ffe1a3 Temporarily disable bats tests
see gh-136
2019-06-28 12:46:11 -04:00
Spencer Gibb 7ebdff56bb Bumps boot to 2.2.0.M4 2019-06-28 12:37:42 -04:00
Marcin Grzejszczak a3ede5ccc1 Made tests less birittle for CI 2019-06-28 17:23:11 +02:00
Marcin Grzejszczak 8590eece60 Added support for username and password 2019-06-28 15:23:52 +02:00
Marcin Grzejszczak ea3ab78228 Added empty password for token 2019-06-28 14:34:35 +02:00
Marcin Grzejszczak f068c529d5 More debugging 2019-06-28 13:47:02 +02:00
Marcin Grzejszczak b157cc00be MOAR logging 2019-06-27 16:34:36 +02:00
buildmaster 531b596883 Bumping versions to 2.1.7.BUILD-SNAPSHOT after release 2019-06-20 17:41:26 +00:00
buildmaster 0014bcb71f Going back to snapshots 2019-06-20 17:41:25 +00:00
buildmaster d16c66f632 Update SNAPSHOT to 2.1.6.RELEASE 2019-06-20 17:40:30 +00:00
Spencer Gibb dc6a2070e3 Bumps boot to 2.1.6.RELEASE 2019-06-19 12:04:52 -04:00
Spencer Gibb d783dad589 Removes exclusion of commons-logging from spring-core 2019-06-14 16:02:10 -04:00
Dave Syer 88a6c5c63a Don't use ${spring.version} 2019-06-14 11:35:20 +01:00
Marcin Grzejszczak 423ec17482 Bumped nohttp checkstyle to 0.0.2.RELEASE 2019-06-11 15:54:34 +02:00
Marcin Grzejszczak cedbdc586d Updated release train pushing 2019-06-11 10:06:19 +02:00
Marcin Grzejszczak f0aea46bb8 Updated gh-pages 2019-06-11 10:01:29 +02:00
Ryan Baxter 7496cb5b80 Revert "Version changes for 2.2.0.M2 release"
This reverts commit c2278c8cb5.
2019-06-10 13:45:50 -04:00
Spencer Gibb 5a691a5ede Updates to boot 2.1.6.BUILD-SNAPSHOT 2019-06-04 14:47:57 -04:00
Ryan Baxter 5512e6e613 Bumping to next release 2019-05-15 12:26:32 -04:00
Ryan Baxter 2cd5817a32 2.1.5.RELEASE changes 2019-05-15 12:13:51 -04:00
Ryan Baxter 62ce24f573 Bumping to boot 2.1.5 2019-05-15 12:03:40 -04:00
Spencer Gibb f0d77c65cb Update docker compose url 2019-04-01 12:41:28 -04:00
Ryan Baxter 93e0430a0c Merge pull request #119 from spring-operator/polish-urls-xml-2.1.x
URL Cleanup
2019-03-26 11:59:10 -04:00
Ryan Baxter 2c7d425bed Merge pull request #126 from spring-operator/polish-urls-remaining-2.1.x
URL Cleanup
2019-03-26 11:57:39 -04:00
Spring Operator 40a436a9a7 URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* [ ] http://xslthl.sf.net (301) with 4 occurrences could not be migrated:
   ([https](https://xslthl.sf.net) result AnnotatedConnectException).
* [ ] http://exslt.org/common (404) with 1 occurrences could not be migrated:
   ([https](https://exslt.org/common) result SSLHandshakeException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* [ ] http://compose.docker.io/ (UnknownHostException) with 1 occurrences migrated to:
  https://compose.docker.io/ ([https](https://compose.docker.io/) result UnknownHostException).
* [ ] http://www.puppycrawl.com/dtds/suppressions_1_1.dtd (404) with 2 occurrences migrated to:
  https://www.puppycrawl.com/dtds/suppressions_1_1.dtd ([https](https://www.puppycrawl.com/dtds/suppressions_1_1.dtd) result 404).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html with 3 occurrences migrated to:
  https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html ([https](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) result 200).
* [ ] http://contributor-covenant.org with 1 occurrences migrated to:
  https://contributor-covenant.org ([https](https://contributor-covenant.org) result 301).
* [ ] http://contributor-covenant.org/version/1/3/0/ with 1 occurrences migrated to:
  https://contributor-covenant.org/version/1/3/0/ ([https](https://contributor-covenant.org/version/1/3/0/) result 301).
* [ ] http://plugins.jetbrains.com/plugin/6546 with 3 occurrences migrated to:
  https://plugins.jetbrains.com/plugin/6546 ([https](https://plugins.jetbrains.com/plugin/6546) result 301).
* [ ] http://eclipse.org with 1 occurrences migrated to:
  https://eclipse.org ([https](https://eclipse.org) result 302).
* [ ] http://eclipse.org/m2e/ with 2 occurrences migrated to:
  https://eclipse.org/m2e/ ([https](https://eclipse.org/m2e/) result 302).
* [ ] http://www.springsource.com/developer/sts with 1 occurrences migrated to:
  https://www.springsource.com/developer/sts ([https](https://www.springsource.com/developer/sts) result 302).

# Ignored
These URLs were intentionally ignored.

* http://docbook.org/ns/docbook with 4 occurrences
* http://docbook.sourceforge.net/xmlns/l10n/1.0 with 2 occurrences
* http://www.w3.org/1999/XSL/Format with 2 occurrences
* http://www.w3.org/1999/XSL/Transform with 6 occurrences
* http://www.w3.org/1999/xlink with 1 occurrences
2019-03-26 03:09:21 -05:00
Spring Operator 323b5f2678 URL Cleanup
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# HTTP URLs that Could Not Be Fixed
These URLs were unable to be fixed. Please review them to see if they can be manually resolved.

* [ ] http://xslthl.sf.net (301) with 1 occurrences could not be migrated:
   ([https](https://xslthl.sf.net) result AnnotatedConnectException).

# Fixed URLs

## Fixed But Review Recommended
These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended.

* [ ] http://www.puppycrawl.com/dtds/configuration_1_3.dtd (404) with 1 occurrences migrated to:
  https://www.puppycrawl.com/dtds/configuration_1_3.dtd ([https](https://www.puppycrawl.com/dtds/configuration_1_3.dtd) result 404).
* [ ] http://www.puppycrawl.com/dtds/suppressions_1_1.dtd (404) with 1 occurrences migrated to:
  https://www.puppycrawl.com/dtds/suppressions_1_1.dtd ([https](https://www.puppycrawl.com/dtds/suppressions_1_1.dtd) result 404).

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://asciidoctor.org with 1 occurrences migrated to:
  https://asciidoctor.org ([https](https://asciidoctor.org) result 200).
* [ ] http://sourceforge.net/projects/xslthl/ with 14 occurrences migrated to:
  https://sourceforge.net/projects/xslthl/ ([https](https://sourceforge.net/projects/xslthl/) result 200).
* [ ] http://www.w3.org/TR/CSS21/propidx.html with 1 occurrences migrated to:
  https://www.w3.org/TR/CSS21/propidx.html ([https](https://www.w3.org/TR/CSS21/propidx.html) result 200).

# Ignored
These URLs were intentionally ignored.

* http://maven.apache.org/POM/4.0.0 with 10 occurrences
* http://www.w3.org/2001/XMLSchema-instance with 5 occurrences
2019-03-25 23:50:27 -05:00
buildmaster 8d5da126d3 Bumping versions to 2.1.5.BUILD-SNAPSHOT after release 2019-03-25 13:58:32 +00:00
buildmaster af8ca0befb Going back to snapshots 2019-03-25 13:58:32 +00:00
buildmaster 6f6d6aa856 Update SNAPSHOT to 2.1.4.RELEASE 2019-03-25 13:52:46 +00:00
Spring Operator 0b737621f0 URL Cleanup (#106)
This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener).

# Fixed URLs

## Fixed Success
These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended.

* [ ] http://www.apache.org/licenses/ with 2 occurrences migrated to:
  https://www.apache.org/licenses/ ([https](https://www.apache.org/licenses/) result 200).
* [ ] http://www.apache.org/licenses/LICENSE-2.0 with 8 occurrences migrated to:
  https://www.apache.org/licenses/LICENSE-2.0 ([https](https://www.apache.org/licenses/LICENSE-2.0) result 200).
2019-03-22 10:52:25 +01:00
39 changed files with 901 additions and 273 deletions
-1
View File
@@ -10,7 +10,6 @@ jobs:
branches:
ignore:
- gh-pages # list of branches to ignore
resource_class: large
steps:
- checkout
- restore_cache:
+1
View File
@@ -18,3 +18,4 @@ _site/
.factorypath
.vscode/
.flattened-pom.xml
.DS_Store
+72 -11
View File
@@ -179,6 +179,7 @@ $ touch .springformat
==== Intellij IDEA
In order to setup Intellij you should import our coding conventions, inspection profiles and set up the checkstyle plugin.
The following files can be found in the https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] project.
.spring-cloud-build-tools/
----
@@ -219,7 +220,7 @@ image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring
Go to `File` -> `Settings` -> `Other settings` -> `Checkstyle`. There click on the `+` icon in the `Configuration file` section. There, you'll have to define where the checkstyle rules should be picked from. In the image above, we've picked the rules from the cloned Spring Cloud Build repository. However, you can point to the Spring Cloud Build's GitHub repository (e.g. for the `checkstyle.xml` : `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml`). We need to provide the following variables:
- `checkstyle.header.file` - please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/main/resources/checkstyle/checkstyle-header.txt` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` URL.
- `checkstyle.header.file` - please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` URL.
- `checkstyle.suppressions.file` - default suppressions. Please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` URL.
- `checkstyle.additional.suppressions.file` - this variable corresponds to suppressions in your local project. E.g. you're working on `spring-cloud-contract`. Then point to the `project-root/src/checkstyle/checkstyle-suppressions.xml` folder. Example for `spring-cloud-contract` would be: `/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml`.
@@ -240,33 +241,91 @@ approach of generating documentation just add these plugins to your `docs` modul
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId> <1>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId> <1>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <2>
<artifactId>maven-dependency-plugin</artifactId> <2>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <3>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId> <4>
</plugin>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId> <3>
<artifactId>asciidoctor-maven-plugin</artifactId> <5>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId> <4>
<artifactId>maven-antrun-plugin</artifactId> <6>
</plugin>
</plugins>
</build>
</profile>
</profiles>
----
<1> This plugin downloads the resources of the `spring-cloud-build-docs` module
<2> This plugin unpacks the resources of the `spring-cloud-build-docs` module
<3> This plugin is required to parse the Asciidoctor documentation
<4> This plugin is required to copy resources into proper final destinations and to generate main README.adoc and to assert that no files use unresolved links
<2> This plugin downloads sets up all the git information of the project
<2> This plugin downloads the resources of the `spring-cloud-build-docs` module
<3> This plugin unpacks the resources of the `spring-cloud-build-docs` module
<4> This plugin generates an `adoc` file with all the configuration properties from the classpath
<5> This plugin is required to parse the Asciidoctor documentation
<6> This plugin is required to copy resources into proper final destinations and to generate main README.adoc and to assert that no files use unresolved links
IMPORTANT: The order of plugin declaration is important!
In order for the build to generate the `adoc` file with all your configuration properties, your `docs` module should contain all the dependencies on the classpath, that you would want to scan for configuration properties. The file will be output to `${docsModule}/src/main/asciidoc/_configprops.adoc` file (configurable via the `configprops.path` property).
If you want to modify which of the configuration properties are put in the table, you can tweak the `configprops.inclusionPattern` pattern to include only a subset of the properties (e.g. `<configprops.inclusionPattern>spring.sleuth.*</configprops.inclusionPattern>`).
Spring Cloud Build Docs comes with a set of attributes for asciidoctor that you can reuse.
[source,xml]
----
<attributes>
<docinfo>shared</docinfo>
<allow-uri-read>true</allow-uri-read>
<nofooter/>
<toc>left</toc>
<toc-levels>4</toc-levels>
<sectlinks>true</sectlinks>
<sources-root>${project.basedir}/src</sources-root>
<asciidoc-sources-root>${project.basedir}/src/main/asciidoc</asciidoc-sources-root>
<generated-resources-root>${project.basedir}/target/generated-resources
</generated-resources-root>
<!-- Use this attribute the reference code from another module -->
<!-- Note the @ at the end, lowering the precedence of the attribute -->
<project-root>${maven.multiModuleProjectDirectory}@</project-root>
<!-- It's mandatory for you to pass the docs.main property -->
<github-repo>${docs.main}</github-repo>
<github-raw>
https://raw.githubusercontent.com/spring-cloud/${docs.main}/${github-tag}
</github-raw>
<github-code>https://github.com/spring-cloud/${docs.main}/tree/${github-tag}
</github-code>
<github-issues>https://github.com/spring-cloud/${docs.main}/issues/</github-issues>
<github-wiki>https://github.com/spring-cloud/${docs.main}/wiki</github-wiki>
<github-master-code>https://github.com/spring-cloud/${docs.main}/tree/master
</github-master-code>
<index-link>${index-link}</index-link>
<!-- Spring Cloud specific -->
<!-- for backward compatibility -->
<spring-cloud-version>${project.version}</spring-cloud-version>
<project-version>${project.version}</project-version>
<github-tag>${github-tag}</github-tag>
<version-type>${version-type}</version-type>
<docs-url>${docs-url}</docs-url>
<raw-docs-url>${raw-docs-url}</raw-docs-url>
<project-version>${project.version}</project-version>
<project-name>${docs.main}</project-name>
</attributes>
----
== Updating the guides
We assume that your project contains guides under the `guides` folder.
@@ -294,4 +353,6 @@ $ ./mvnw clean deploy -Pguides
what will happen is that for GA project versions, we will clone `gs-guide1`, `gs-guide2` and `gs-guide3` and update their contents with the ones being under your `guides` project.
You can skip this by either not adding the `guides` profile, or passing the `-DskipGuides` system property when the profile is turned on.
You can skip this by either not adding the `guides` profile, or passing the `-DskipGuides` system property when the profile is turned on.
You can configure the project version passed to guides via the `guides-project.version` (defaults to `${project.version}`). The phase at which guides get updated can be configured by `guides-update.phase` (defaults to `deploy`).
+4
View File
@@ -0,0 +1,4 @@
releaser:
maven:
buildCommand: ./scripts/build.sh {{systemProps}}
# deployCommand: echo "skip deploy"
+88 -1
View File
@@ -10,21 +10,99 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.2.0.M2</version>
<version>2.2.0.RC1</version>
</parent>
<properties>
<docs.main>spring-cloud-build</docs.main>
<!-- Comma separated list of whitelisted branches -->
<docs.whitelisted.branches>1.2.x,1.3.x,2.0.x,2.1.x</docs.whitelisted.branches>
<main.basedir>${basedir}/..</main.basedir>
<gmavenplus-plugin.version>1.6.1</gmavenplus-plugin.version>
<!-- We don't want to downloaded sources of our own project-->
<maven-dependency-plugin-for-docs.phase>none</maven-dependency-plugin-for-docs.phase>
<docs.resources.dir>${project.basedir}/src/main/</docs.resources.dir>
</properties>
<dependencies>
<!-- Script -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-xml</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-nio</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-json</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main</directory>
<excludes>
<exclude>groovy/**/*.*</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${build-helper-maven-plugin.version}</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/groovy</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>${gmavenplus-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>addSources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
@@ -36,6 +114,10 @@
<id>docs</id>
<build>
<plugins>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
@@ -44,6 +126,10 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
@@ -77,6 +163,7 @@
</goals>
<configuration>
<skip>${skipTests}</skip>
<!-- <skip>true</skip> -->
<executable>${basedir}/src/test/bash/run-bats.sh</executable>
</configuration>
</execution>
+2
View File
@@ -0,0 +1,2 @@
META-INF/
org/
+30 -9
View File
@@ -57,33 +57,54 @@ approach of generating documentation just add these plugins to your `docs` modul
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId> <1>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId> <1>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <2>
<artifactId>maven-dependency-plugin</artifactId> <2>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <3>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId> <4>
</plugin>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId> <3>
<artifactId>asciidoctor-maven-plugin</artifactId> <5>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId> <4>
<artifactId>maven-antrun-plugin</artifactId> <6>
</plugin>
</plugins>
</build>
</profile>
</profiles>
----
<1> This plugin downloads the resources of the `spring-cloud-build-docs` module
<2> This plugin unpacks the resources of the `spring-cloud-build-docs` module
<3> This plugin is required to parse the Asciidoctor documentation
<4> This plugin is required to copy resources into proper final destinations and to generate main README.adoc and to assert that no files use unresolved links
<2> This plugin downloads sets up all the git information of the project
<2> This plugin downloads the resources of the `spring-cloud-build-docs` module
<3> This plugin unpacks the resources of the `spring-cloud-build-docs` module
<4> This plugin generates an `adoc` file with all the configuration properties from the classpath
<5> This plugin is required to parse the Asciidoctor documentation
<6> This plugin is required to copy resources into proper final destinations and to generate main README.adoc and to assert that no files use unresolved links
IMPORTANT: The order of plugin declaration is important!
In order for the build to generate the `adoc` file with all your configuration properties, your `docs` module should contain all the dependencies on the classpath, that you would want to scan for configuration properties. The file will be output to `${docsModule}/src/main/asciidoc/_configprops.adoc` file (configurable via the `configprops.path` property).
If you want to modify which of the configuration properties are put in the table, you can tweak the `configprops.inclusionPattern` pattern to include only a subset of the properties (e.g. `<configprops.inclusionPattern>spring.sleuth.*</configprops.inclusionPattern>`).
Spring Cloud Build Docs comes with a set of attributes for asciidoctor that you can reuse.
[source,xml]
----
include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/pom.xml[tags=attributes,indent=0]
----
== Updating the guides
We assume that your project contains guides under the `guides` folder.
+3 -2
View File
@@ -131,6 +131,7 @@ $ touch .springformat
==== Intellij IDEA
In order to setup Intellij you should import our coding conventions, inspection profiles and set up the checkstyle plugin.
The following files can be found in the https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] project.
.spring-cloud-build-tools/
----
@@ -171,8 +172,8 @@ image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring
Go to `File` -> `Settings` -> `Other settings` -> `Checkstyle`. There click on the `+` icon in the `Configuration file` section. There, you'll have to define where the checkstyle rules should be picked from. In the image above, we've picked the rules from the cloned Spring Cloud Build repository. However, you can point to the Spring Cloud Build's GitHub repository (e.g. for the `checkstyle.xml` : `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml`). We need to provide the following variables:
- `checkstyle.header.file` - please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/main/resources/checkstyle/checkstyle-header.txt` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` URL.
- `checkstyle.header.file` - please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` URL.
- `checkstyle.suppressions.file` - default suppressions. Please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` URL.
- `checkstyle.additional.suppressions.file` - this variable corresponds to suppressions in your local project. E.g. you're working on `spring-cloud-contract`. Then point to the `project-root/src/checkstyle/checkstyle-suppressions.xml` folder. Example for `spring-cloud-contract` would be: `/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml`.
IMPORTANT: Remember to set the `Scan Scope` to `All sources` since we apply checkstyle rules for production and test sources.
IMPORTANT: Remember to set the `Scan Scope` to `All sources` since we apply checkstyle rules for production and test sources.
+44 -34
View File
@@ -4,14 +4,20 @@
set -e
export GIT_BIN ROOT_FOLDER COMMIT_CHANGES MAVEN_PATH MAVEN_EXEC REPO_NAME SPRING_CLOUD_STATIC_REPO
export GIT_BIN ROOT_FOLDER COMMIT_CHANGES MAVEN_PATH MAVEN_EXEC REPO_NAME SPRING_CLOUD_STATIC_REPO SPRING_CLOUD_STATIC_REPO_DESTINATION
export CURRENT_BRANCH PREVIOUS_BRANCH
export GITHUB_REPO_USERNAME_ENV="${GITHUB_REPO_USERNAME_ENV:-GITHUB_REPO_USERNAME}"
export GITHUB_REPO_PASSWORD_ENV="${GITHUB_REPO_PASSWORD_ENV:-GITHUB_REPO_PASSWORD}"
REPO_USER="${!GITHUB_REPO_USERNAME_ENV}"
REPO_PASS="${!GITHUB_REPO_PASSWORD_ENV}"
export SPRING_CLOUD_STATIC_REPO_DESTINATION="${SPRING_CLOUD_STATIC_REPO_DESTINATION:-$( dirname "$(mktemp)")/}"
GIT_BIN="${GIT_BIN:-git}"
# The script should be executed from the root folder
ROOT_FOLDER="$( pwd )"
echo "Current folder is ${ROOT_FOLDER}"
echo "Current folder is [${ROOT_FOLDER}]"
echo "Spring Cloud Static repo is [${SPRING_CLOUD_STATIC_REPO_DESTINATION}]"
# Set default props like MAVEN_PATH, ROOT_FOLDER etc.
function set_default_props() {
@@ -42,20 +48,29 @@ function add_oauth_token_to_remote_url() {
local remote
remote="$( "${GIT_BIN}" config remote.origin.url | sed -e 's/^git:/https:/' )"
echo "Current remote [${remote}]"
if [[ "${RELEASER_GIT_OAUTH_TOKEN}" != "" && ${remote} != *"@"* ]]; then
echo "OAuth token found. Will reuse it to push the code"
if [[ ${remote} != *".git" ]]; then
echo "Remote doesn't end with [.git]"
remote="${remote}.git"
echo "Remote with [.git] suffix: [${remote}]"
fi
if [[ "${REPO_USER}" != "" && ${remote} != *"@"* ]]; then
withUserAndPass=${remote/https:\/\//https://${REPO_USER}:${REPO_PASS}@}
echo "Username and password found. Will reuse it to push the code to [${withUserAndPass}]"
"${GIT_BIN}" remote set-url --push origin "${withUserAndPass}"
elif [[ "${RELEASER_GIT_OAUTH_TOKEN}" != "" && ${remote} != *"@"* ]]; then
withToken=${remote/https:\/\//https://${RELEASER_GIT_OAUTH_TOKEN}@}
echo "OAuth token found. Will reuse it to push the code to [${withToken}]"
"${GIT_BIN}" remote set-url --push origin "${withToken}"
else
echo "No OAuth token found"
"${GIT_BIN}" remote set-url --push origin "$( "${GIT_BIN}" config remote.origin.url | sed -e 's/^git:/https:/' )"
echo "No OAuth token found. Will push to [${remote}]"
"${GIT_BIN}" remote set-url --push origin "${remote}"
fi
}
# Check if gh-pages exists and docs have been built
function check_if_anything_to_sync() {
add_oauth_token_to_remote_url
if ! ("${GIT_BIN}" remote set-branches --add origin gh-pages && "${GIT_BIN}" fetch -q) && [[ "${RELEASE_TRAIN}" != "yes" ]] ; then
if [[ "${RELEASE_TRAIN}" != "yes" ]] && ! ("${GIT_BIN}" remote set-branches --add origin gh-pages && "${GIT_BIN}" fetch -q) ; then
echo "No gh-pages, so not syncing"
exit 0
fi
@@ -86,6 +101,8 @@ function retrieve_current_branch() {
function switch_to_tag() {
if [[ "${RELEASE_TRAIN}" != "yes" ]] ; then
"${GIT_BIN}" checkout v"${VERSION}"
else
echo "Not switching to tag"
fi
}
@@ -93,6 +110,8 @@ function switch_to_tag() {
function build_docs_if_applicable() {
if [[ "${BUILD}" == "yes" ]] ; then
./mvnw clean install -P docs -pl docs -DskipTests
else
echo "Not building docs"
fi
}
@@ -100,13 +119,10 @@ function build_docs_if_applicable() {
# Get whitelisted branches - assumes that a `docs` module is available under `docs` profile
# shellcheck disable=SC2016
function retrieve_doc_properties() {
MAIN_ADOC_VALUE=$("${MAVEN_EXEC}" -q \
-Dexec.executable="echo" \
-Dexec.args='${docs.main}' \
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec \
-P docs \
-pl docs | tail -1 )
echo "Extracted 'main.adoc' from Maven build [${MAIN_ADOC_VALUE}]"
if [[ "${RELEASE_TRAIN}" == "yes" ]]; then
echo "Will not extract any properties for release train"
return
fi
WHITELIST_PROPERTY=${WHITELIST_PROPERTY:-"docs.whitelisted.branches"}
@@ -137,13 +153,21 @@ function add_docs_from_target() {
DESTINATION_REPO_FOLDER="${ROOT_FOLDER}"
elif [[ "${CLONE}" == "yes" ]]; then
mkdir -p "${ROOT_FOLDER}"/target
local clonedStatic="${ROOT_FOLDER}"/target/spring-cloud-static
local clonedStatic="${SPRING_CLOUD_STATIC_REPO_DESTINATION}"/spring-cloud-static
if [[ ! -e "${clonedStatic}/.git" ]]; then
echo "Cloning Spring Cloud Static to target"
echo "Cloning Spring Cloud Static to [${clonedStatic}]"
"${GIT_BIN}" clone "${SPRING_CLOUD_STATIC_REPO}" "${clonedStatic}" && cd "${clonedStatic}" && "${GIT_BIN}" checkout gh-pages
else
echo "Spring Cloud Static already cloned - will pull changes"
cd "${clonedStatic}" && "${GIT_BIN}" checkout gh-pages && "${GIT_BIN}" pull origin gh-pages
echo "Spring Cloud Static already cloned to [${clonedStatic}] - will pull changes"
local pullSuccessful="false"
cd "${clonedStatic}" && "${GIT_BIN}" checkout gh-pages && "${GIT_BIN}" pull origin gh-pages && pullSuccessful="true" || echo "Failed to clone and pull versions - will remove the folder and clone it again"
if [[ "${pullSuccessful}" == "false" ]]; then
cd "${ROOT_FOLDER}"
echo "Removing the [${clonedStatic}] folder"
rm -rf "${clonedStatic}"
echo "Cloning Spring Cloud Static again"
"${GIT_BIN}" clone "${SPRING_CLOUD_STATIC_REPO}" "${clonedStatic}" && cd "${clonedStatic}" && "${GIT_BIN}" checkout gh-pages
fi
fi
if [[ -z "${RELEASE_TRAIN}" ]] ; then
DESTINATION_REPO_FOLDER="${clonedStatic}/${REPO_NAME}"
@@ -204,15 +228,8 @@ function copy_docs_for_current_version() {
echo "The file [${file}] shouldn't be ignored"
# Not ignored...
# We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
if [[ "${file}" == "${MAIN_ADOC_VALUE}.html" ]] ; then
# We don't want to copy the spring-cloud-sleuth.html
# we want it to be converted to index.html
cp -rf "${f}" "${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html"
"${GIT_BIN}" add -A "${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html"
else
cp -rf "${f}" "${ROOT_FOLDER}/${CURRENT_BRANCH}"
cp -rf "${f}" "${ROOT_FOLDER}/${CURRENT_BRANCH}"
"${GIT_BIN}" add -A "${ROOT_FOLDER}/${CURRENT_BRANCH}/${file}" || echo "Failed to add the file [${file}]"
fi
fi
done
COMMIT_CHANGES="yes"
@@ -246,14 +263,7 @@ function copy_docs_for_branch() {
echo "Copying file [${file}] to destination [${destination}]"
if ! "${GIT_BIN}" ls-files -i -o --exclude-standard --directory | grep -q ^"${file}"$; then
# Not ignored...
# We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
if [[ ("${file}" == "${MAIN_ADOC_VALUE}.html") || ("${file}" == "${REPO_NAME}.html") ]] ; then
# We don't want to copy the spring-cloud-sleuth.html
# we want it to be converted to index.html
cp -rf "${f}" "${destination}"/index.html
else
cp -rf "${f}" "${destination}"
fi
cp -rf "${f}" "${destination}"
"${GIT_BIN}" add -A "${destination}"
fi
}
+1
View File
@@ -0,0 +1 @@
spring-cloud-build.adoc
View File
@@ -0,0 +1,112 @@
package org.springframework.cloud.internal
import java.util.regex.Pattern
import groovy.json.JsonSlurper
import groovy.transform.CompileStatic
import org.springframework.core.io.Resource
import org.springframework.core.io.support.PathMatchingResourcePatternResolver
/**
* @author Marcin Grzejszczak
*/
class Main {
@CompileStatic
static void main(String... args) {
String outputFile = args[0]
String inclusionPattern = args.length > 1 ? args[1] : ".*"
File parent = new File(outputFile).parentFile
if (!parent.exists()) {
println "No parent directory [${parent.toString()}] found. Won't generate the configuration properties file"
return
}
new Generator().generate(outputFile, inclusionPattern)
}
static class Generator {
void generate(String outputFile, String inclusionPattern) {
println "Parsing all configuration metadata"
Resource[] resources = getResources()
println "Found [${resources.length}] configuration metadata jsons"
TreeSet names = new TreeSet()
def descriptions = [:]
int count = 0
int matchingPropertyCount = 0
int propertyCount = 0
Pattern pattern = Pattern.compile(inclusionPattern)
resources.each { Resource resource ->
if (resourceNameContainsPattern(resource)) {
count++
def slurper = new JsonSlurper()
slurper.parseText(resource.inputStream.text).properties.each { val ->
propertyCount++
if (!pattern.matcher(val.name).matches()) {
return
}
matchingPropertyCount++
names.add val.name
descriptions[val.name] = new ConfigValue(val.name, val.description, val.defaultValue)
}
}
}
println "Found [${count}] Cloud projects configuration metadata jsons. [${matchingPropertyCount}/${propertyCount}] were matching the pattern [${inclusionPattern}]"
println "Successfully built the description table"
if (names.empty) {
println("Will not update the table, since no configuration properties were found!")
return
}
new File(outputFile).text = """\
|===
|Name | Default | Description
${names.collect { it -> return descriptions[it] }.join("\n")}
|===
"""
println "Successfully stored the output file"
}
protected boolean resourceNameContainsPattern(Resource resource) {
try {
return resource.getURL().toString().contains("cloud")
}
catch (Exception e) {
println("Exception [${e}] for resource [${resource}] occurred while trying to retrieve its URL")
return false
}
}
protected Resource[] getResources() {
return new PathMatchingResourcePatternResolver()
.getResources("classpath*:/META-INF/spring-configuration-metadata.json")
}
}
@CompileStatic
static class ConfigValue {
String name
String description
Object defaultValue
ConfigValue() {}
ConfigValue(String name, String description, Object defaultValue) {
this.name = name
this.description = escapedValue(description)
this.defaultValue = escapedValue(defaultValue)
}
private String escapedValue(Object value) {
return value != null ?
value.toString().replaceAll('\\|', '\\\\|') : ''
}
String toString() {
"|${name} | ${defaultValue} | ${description}"
}
}
}
+4 -1
View File
@@ -17,7 +17,10 @@ end
file = ARGV[0] if ARGV.length>0
# Copied from https://github.com/asciidoctor/asciidoctor-extensions-lab/blob/master/scripts/asciidoc-coalescer.rb
doc = Asciidoctor.load_file file, safe: :unsafe, header_only: true, attributes: options[:attributes]
attributes = {}
attributes['project-root'] = File.expand_path("#{base_dir}/../")
doc = Asciidoctor.load_file file, safe: :unsafe, header_only: true, attributes: attributes
header_attr_names = (doc.instance_variable_get :@attributes_modified).to_a
header_attr_names.each {|k| doc.attributes[%(#{k}!)] = '' unless doc.attr? k }
attrs = doc.attributes
@@ -11,7 +11,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<version>2.2.0.RC1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
@@ -11,15 +11,15 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<version>2.2.0.RC1</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
<spring-cloud-contract.version>2.0.2.RELEASE</spring-cloud-contract.version>
<spring-cloud.version>Hoxton.BUILD-SNAPSHOT</spring-cloud.version>
<spring-cloud-contract.version>2.2.0.BUILD-SNAPSHOT</spring-cloud-contract.version>
</properties>
<dependencies>
@@ -11,7 +11,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<version>2.2.0.RC1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
@@ -11,15 +11,15 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<version>2.2.0.RC1</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.SR2</spring-cloud.version>
<spring-cloud-contract.version>2.0.2.RELEASE</spring-cloud-contract.version>
<spring-cloud.version>Hoxton.BUILD-SNAPSHOT</spring-cloud.version>
<spring-cloud-contract.version>2.2.0.BUILD-SNAPSHOT</spring-cloud-contract.version>
</properties>
<dependencies>
@@ -7,7 +7,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<packaging>pom</packaging>
<name>spring-cloud-stream-core-docs</name>
@@ -9,7 +9,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.1.4.BUILD-SNAPSHOT</version>
<version>2.2.0.BUILD-SNAPSHOT</version>
<relativePath/>
</parent>
<scm>
@@ -28,8 +28,7 @@
<reactor.version>Californium-SR5</reactor.version>
<kryo-shaded.version>3.0.3</kryo-shaded.version>
<objenesis.version>2.1</objenesis.version>
<spring-cloud-function.version>2.1.0.M1
</spring-cloud-function.version>
<spring-cloud-function.version>3.0.0.BUILD-SNAPSHOT</spring-cloud-function.version>
<maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError>
<maven-checkstyle-plugin.failsOnViolation>true</maven-checkstyle-plugin.failsOnViolation>
@@ -13,7 +13,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<dependencies>
@@ -12,7 +12,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<dependencies>
@@ -5,7 +5,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -8,7 +8,7 @@
<parent>
<artifactId>spring-cloud-stream-parent</artifactId>
<groupId>org.springframework.cloud</groupId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<dependencies>
@@ -5,7 +5,7 @@
<parent>
<artifactId>spring-cloud-stream-parent</artifactId>
<groupId>org.springframework.cloud</groupId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-stream-test-support-internal</artifactId>
<description>Set of classes and utility code that may assist in testing both
@@ -6,7 +6,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-stream-test-support</artifactId>
<description>A set of classes to ease testing of Spring Cloud Stream modules.
@@ -5,7 +5,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.1.4.BUILD-SNAPSHOT</version>
<version>2.2.0.BUILD-SNAPSHOT</version>
<relativePath />
</parent>
@@ -12,7 +12,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-parent</artifactId>
<version>2.2.0.BUILD-SNAPSHOT</version>
<version>Horsham.BUILD-SNAPSHOT</version>
</parent>
<dependencies>
+43 -98
View File
@@ -15,6 +15,9 @@ setup() {
mv "${TEMP_DIR}/spring-cloud-static/git" "${TEMP_DIR}/spring-cloud-static/.git"
export SOURCE_FUNCTIONS="true"
export GITHUB_REPO_USERNAME_ENV="MY_REPO_USERNAME"
export GITHUB_REPO_PASSWORD_ENV="MY_REPO_PASSWORD"
export SPRING_CLOUD_STATIC_REPO_DESTINATION="${TEMP_DIR}"
}
teardown() {
@@ -34,7 +37,7 @@ function git_with_remotes {
if [[ "$*" == *"set-url"* ]]; then
echo "git $*"
elif [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
git $*
fi
@@ -54,7 +57,7 @@ function printing_git_failing_with_diff_index {
function printing_git_with_remotes {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
printing_git $*
fi
@@ -62,7 +65,7 @@ function printing_git_with_remotes {
function stubbed_git {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
elif [[ "$*" == *"diff-index"* ]]; then
return 1
elif [[ "$*" == *"symbolic-ref"* ]]; then
@@ -86,13 +89,13 @@ export -f stubbed_git
export RELEASER_GIT_OAUTH_TOKEN="mytoken"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
run "${SOURCE_DIR}"/ghpages.sh
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "Spring Cloud Static repo is [${TEMP_DIR}]"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git fetch -q"
assert_output --partial "git checkout master"
assert_output --partial "git stash"
@@ -101,7 +104,7 @@ export -f stubbed_git
# Current branch is master - will copy the current docs only to the root folder
assert_output --partial "git add -A ${TEMP_DIR}/spring-cloud-stream"
assert_output --partial "git commit -a -m Sync docs from master to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
assert_output --partial "git checkout master"
assert_output --partial "git stash pop"
@@ -116,27 +119,26 @@ export -f stubbed_git
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
run "${SOURCE_DIR}"/ghpages.sh
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "Spring Cloud Static repo is [${TEMP_DIR}]"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git remote set-branches --add origin gh-pages"
assert_output --partial "git fetch -q"
# Previous branch was [master]
assert_output --partial "git checkout master"
assert_output --partial "git checkout v1.0.0.RELEASE"
assert_output --partial "Extracted 'main.adoc' from Maven build [home]"
assert_output --partial "git stash"
assert_output --partial "git checkout gh-pages"
assert_output --partial "git pull origin gh-pages"
# Current branch is master - will copy the current docs only to the root folder
assert [ -f "${TEMP_DIR}/spring-cloud-static/spring-cloud-stream/${VERSION}/foo.html" ]
assert [ -f "${TEMP_DIR}/spring-cloud-static/spring-cloud-stream/${VERSION}/example1.html" ]
assert_output --partial "git add -A ${TEMP_DIR}/spring-cloud-static/spring-cloud-stream/${VERSION}"
assert_output --partial "git commit -a -m Sync docs from v1.0.0.RELEASE to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
assert_output --partial "git checkout master"
assert_output --partial "git stash pop"
@@ -152,26 +154,22 @@ export -f stubbed_git
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
run "${SOURCE_DIR}"/ghpages.sh
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-branches --add origin gh-pages"
assert_output --partial "git fetch -q"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
# Previous branch was [master]
assert_output --partial "git checkout master"
assert_output --partial "Extracted 'main.adoc' from Maven build [home]"
assert_output --partial "git stash"
assert_output --partial "git checkout gh-pages"
assert_output --partial "git pull origin gh-pages"
# Current branch is master - will copy the current docs only to the root folder
assert [ -f "${TEMP_DIR}/spring-cloud-static/${VERSION}/foo.html" ]
assert [ -f "${TEMP_DIR}/spring-cloud-static/${VERSION}/example1.html" ]
assert_output --partial "git add -A ${TEMP_DIR}/spring-cloud-static/${VERSION}"
assert_output --partial "git commit -a -m Sync docs from vGreenwich.SR2 to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
assert_output --partial "git checkout master"
assert_output --partial "git stash pop"
@@ -202,7 +200,7 @@ export -f stubbed_git
run add_oauth_token_to_remote_url
assert_success
assert_output --partial "git remote set-url --push origin https://foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://example1.example2/example3.git"
}
@test "should add auth token to URL if token is present" {
@@ -215,7 +213,7 @@ export -f stubbed_git
run add_oauth_token_to_remote_url
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
}
@test "should retrieve the name of the current branch" {
@@ -298,21 +296,6 @@ export -f stubbed_git
assert_output --partial "clean install"
}
@test "should retrieve maven properties for docs" {
export WHITELIST_PROPERTY="spring-doc-resources.version"
export MAVEN_EXEC="./mvnw"
cd "${TEMP_DIR}/spring-cloud-stream/"
source "${SOURCE_DIR}"/ghpages.sh
retrieve_doc_properties
assert_success
assert [ "${MAIN_ADOC_VALUE}" == "home" ]
assert [ "${WHITELISTED_BRANCHES_VALUE}" == "0.1.1.RELEASE" ]
}
@test "should stash changes if dirty" {
export GIT_BIN="printing_git_failing_with_diff_index"
cd "${TEMP_DIR}/spring-cloud-stream/"
@@ -342,8 +325,7 @@ export -f stubbed_git
export CURRENT_BRANCH="master"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
source "${SOURCE_DIR}"/ghpages.sh
@@ -357,11 +339,10 @@ export -f stubbed_git
export GIT_BIN="printing_git"
export CURRENT_BRANCH="present"
export WHITELISTED_BRANCHES_VALUE="present"
export MAIN_ADOC_VALUE="my_doc"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/my_doc.html
touch docs/target/generated-docs/example1.html
source "${SOURCE_DIR}"/ghpages.sh
@@ -373,8 +354,8 @@ export -f stubbed_git
run copy_docs_for_current_version
assert_success
assert_output --partial "add -A ${ROOT_FOLDER}/present/index.html"
assert_output --partial "add -A ${ROOT_FOLDER}/present/foo.html"
assert_output --partial "add -A ${ROOT_FOLDER}/present/my_doc.html"
assert_output --partial "add -A ${ROOT_FOLDER}/present/example1.html"
}
@test "should do nothing if current branch is not whitelisted" {
@@ -390,58 +371,6 @@ export -f stubbed_git
assert [ "${COMMIT_CHANGES}" != "yes" ]
}
@test "should reuse main adoc value as new index.html" {
export GIT_BIN="printing_git"
export DESTINATION_REPO_FOLDER="${TEMP_DIR}/spring-cloud-static"
export VERSION="1.0.0.RELEASE"
export MAIN_ADOC_VALUE="my_doc"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
source "${SOURCE_DIR}"/ghpages.sh
copy_docs_for_provided_version
assert_success
assert [ "${COMMIT_CHANGES}" == "yes" ]
assert [ "${CURRENT_BRANCH}" == "v${VERSION}" ]
run copy_docs_for_provided_version
assert_success
assert_output --partial "add -A ${DESTINATION_REPO_FOLDER}/${VERSION}"
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/index.html" ]
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/foo.html" ]
}
@test "should reuse repo name as new index.html" {
export GIT_BIN="printing_git"
export DESTINATION_REPO_FOLDER="${TEMP_DIR}/spring-cloud-static"
export VERSION="1.0.0.RELEASE"
export REPO_NAME="spring-cloud-stream"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${REPO_NAME}.html
touch docs/target/generated-docs/foo.html
source "${SOURCE_DIR}"/ghpages.sh
copy_docs_for_provided_version
assert_success
assert [ "${COMMIT_CHANGES}" == "yes" ]
assert [ "${CURRENT_BRANCH}" == "v${VERSION}" ]
run copy_docs_for_provided_version
assert_success
assert_output --partial "add -A ${DESTINATION_REPO_FOLDER}/${VERSION}"
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/index.html" ]
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/foo.html" ]
}
@test "should not do anything if commit flag not set" {
export GIT_BIN="printing_git_with_remotes"
export COMMIT_CHANGES="no"
@@ -465,7 +394,23 @@ export -f stubbed_git
assert_success
assert_output --partial "git commit -a -m Sync docs from to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
}
@test "should commit changes with username and password if commit flag set" {
export GIT_BIN="printing_git_with_remotes"
export COMMIT_CHANGES="yes"
export MY_REPO_USERNAME="username"
export MY_REPO_PASSWORD="password"
source "${SOURCE_DIR}"/ghpages.sh
run commit_changes_if_applicable
assert_success
assert_output --partial "git commit -a -m Sync docs from to gh-pages"
assert_output --partial "git remote set-url --push origin https://username:password@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
}
+4 -4
View File
@@ -33,7 +33,7 @@ function git_with_remotes {
if [[ "$*" == *"set-url"* ]]; then
echo "git $*"
elif [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
git $*
fi
@@ -45,7 +45,7 @@ function printing_git {
function printing_git_with_remotes {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
printing_git $*
fi
@@ -53,7 +53,7 @@ function printing_git_with_remotes {
function stubbed_git {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
elif [[ "$*" == *"commit"* ]]; then
printing_git $*
elif [[ "$*" == *"push"* ]]; then
@@ -111,7 +111,7 @@ export -f stubbed_git
assert_success
# change remote
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
# commit and push
assert_output --partial "git commit -m Updating guides"
assert_output --partial "git push origin master"
@@ -0,0 +1,116 @@
/*
* Copyright 2013-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.internal;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Files;
import org.junit.jupiter.api.Test;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import static org.assertj.core.api.BDDAssertions.then;
class GeneratorTests {
URL root = GeneratorTests.class.getResource(".");
@Test
void should_not_create_a_file_when_no_properties_were_found()
throws URISyntaxException {
Main.Generator generator = new Main.Generator() {
@Override
protected Resource[] getResources() {
return new Resource[0];
}
};
File file = new File(root.toURI().toString(), "output.adoc");
String inclusionPattern = ".*";
generator.generate(file.getAbsolutePath(), inclusionPattern);
then(file).doesNotExist();
}
@Test
void should_create_a_file_when_cloud_file_was_found() {
Main.Generator generator = new Main.Generator() {
@Override
protected Resource[] getResources() {
return new Resource[] { resource("/not-matching-name.json"),
resource("/with-cloud-in-name.json") };
}
@Override
protected boolean resourceNameContainsPattern(Resource resource) {
try {
return resource.getURI().toString().contains("with-cloud");
}
catch (IOException ex) {
throw new IllegalStateException(ex);
}
}
};
File file = new File(root.getFile().toString(), "output.adoc");
String inclusionPattern = ".*";
generator.generate(file.getAbsolutePath(), inclusionPattern);
then(file).exists();
then(asString(file)).contains("spring.first-property")
.contains("unmatched.second-property")
.doesNotContain("example1.first-property");
}
@Test
void should_create_a_file_when_spring_property_was_found() {
Main.Generator generator = new Main.Generator() {
@Override
protected Resource[] getResources() {
return new Resource[] { resource("/not-matching-name.json"),
resource("/with-cloud-in-name.json") };
}
};
File file = new File(root.getFile().toString(), "output.adoc");
String inclusionPattern = "spring.*";
generator.generate(file.getAbsolutePath(), inclusionPattern);
then(file).exists();
then(asString(file)).contains("spring.first-property")
.doesNotContain("example1.first-property")
.doesNotContain("unmatched.second-property");
}
static String asString(File file) {
try {
return new String(Files.readAllBytes(file.toPath()));
}
catch (IOException ex) {
throw new IllegalStateException(ex);
}
}
static Resource resource(String path) {
return new FileSystemResource(GeneratorTests.class.getResource(path).getFile());
}
}
@@ -0,0 +1,35 @@
/*
* Copyright 2013-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.cloud.internal;
import java.io.File;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.BDDAssertions.then;
class MainTests {
@Test
void should_do_nothing_when_parent_dir_is_not_found() {
File nonExistantFile = new File("/this/file/does/not/exist");
Main.main(nonExistantFile.getAbsolutePath());
then(nonExistantFile).doesNotExist();
}
}
@@ -0,0 +1,16 @@
{
"properties": [
{
"defaultValue": "false",
"name": "example1.first-property",
"description": "First Description",
"type": "java.lang.Boolean"
},
{
"defaultValue": "true",
"name": "example2.second-property",
"description": "Second Description",
"type": "java.lang.Boolean"
}
]
}
@@ -0,0 +1,16 @@
{
"properties": [
{
"defaultValue": "false",
"name": "spring.first-property",
"description": "First Description",
"type": "java.lang.Boolean"
},
{
"defaultValue": "true",
"name": "unmatched.second-property",
"description": "Second Description",
"type": "java.lang.Boolean"
}
]
}
+281 -71
View File
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.2.0.M2</version>
<version>2.2.0.RC1</version>
<packaging>pom</packaging>
<name>Spring Cloud Parent</name>
<description>Spring Cloud parent pom, managing plugins and dependencies for Spring
@@ -28,15 +28,20 @@
<maven.compiler.target>${java.version}</maven.compiler.target>
<main.basedir>${basedir}</main.basedir>
<docs.main>${project.artifactId}</docs.main>
<spring-boot.version>2.2.0.M3</spring-boot.version>
<spring-cloud-build.version>2.2.0.M2</spring-cloud-build.version>
<spring-boot.version>2.2.0.RELEASE</spring-boot.version>
<spring-cloud-build.version>2.2.0.RC1</spring-cloud-build.version>
<docs.resources.dir>${project.build.directory}/build-docs</docs.resources.dir>
<refdocs.build.directory>${project.build.directory}/refdocs/</refdocs.build.directory>
<spring-doc-resources.version>0.1.0.RELEASE</spring-doc-resources.version>
<spring-asciidoctor-extensions.version>0.1.0.RELEASE
<spring-asciidoctor-extensions.version>0.1.3.RELEASE
</spring-asciidoctor-extensions.version>
<asciidoctorj-pdf.version>1.5.0-alpha.16</asciidoctorj-pdf.version>
<asciidoctorj-pdf.version>1.5.0-alpha.18</asciidoctorj-pdf.version>
<asciidoctorj-diagram.version>1.5.18</asciidoctorj-diagram.version>
<guides-project.version>${project.version}</guides-project.version>
<guides-update.phase>deploy</guides-update.phase>
<revision>${project.version}</revision>
<asciidoctorj.version>1.5.8</asciidoctorj.version>
<jruby-complete.version>9.2.7.0</jruby-complete.version>
<!-- Sonar -->
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
@@ -61,12 +66,12 @@
<maven-war-plugin.version>3.2.2</maven-war-plugin.version>
<exec-maven-plugin.version>1.6.0</exec-maven-plugin.version>
<maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
<git-commit-id-plugin.version>2.2.4</git-commit-id-plugin.version>
<git-commit-id-plugin.version>3.0.0</git-commit-id-plugin.version>
<maven-shade-plugin.version>3.1.1</maven-shade-plugin.version>
<maven-enforcer-plugin.version>3.0.0-M2</maven-enforcer-plugin.version>
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
<maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
<asciidoctor-maven-plugin.version>1.5.7.1</asciidoctor-maven-plugin.version>
<asciidoctor-maven-plugin.version>1.5.8</asciidoctor-maven-plugin.version>
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
<artifactory-maven-plugin.version>2.2.1</artifactory-maven-plugin.version>
<license-maven-plugin.version>1.16</license-maven-plugin.version>
@@ -89,8 +94,14 @@
<checkstyle.additional.suppressions.file>
${maven.multiModuleProjectDirectory}/src/checkstyle/checkstyle-suppressions.xml
</checkstyle.additional.suppressions.file>
<nohttp-checkstyle.version>0.0.1.BUILD-SNAPSHOT</nohttp-checkstyle.version>
<nohttp-checkstyle.version>0.0.2.RELEASE</nohttp-checkstyle.version>
<disable.nohttp.checks>true</disable.nohttp.checks>
<antelopetasks.version>3.2.10</antelopetasks.version>
<ant-nodeps.version>1.8.1</ant-nodeps.version>
<configprops.path>${project.basedir}/src/main/asciidoc/_configprops.adoc</configprops.path>
<configprops.inclusionPattern>.*</configprops.inclusionPattern>
<maven-dependency-plugin-for-docs.phase>generate-resources</maven-dependency-plugin-for-docs.phase>
<maven-dependency-plugin-for-guides.phase>generate-resources</maven-dependency-plugin-for-guides.phase>
</properties>
<dependencyManagement>
<dependencies>
@@ -481,6 +492,7 @@
<generateGitPropertiesFilename>
${project.build.outputDirectory}/git.properties
</generateGitPropertiesFilename>
<skipPoms>false</skipPoms>
</configuration>
</plugin>
<!-- Support our own plugin -->
@@ -791,7 +803,7 @@
<executions>
<execution>
<id>unpack-docs</id>
<phase>generate-resources</phase>
<phase>${maven-dependency-plugin-for-guides.phase}</phase>
<goals>
<goal>unpack</goal>
</goals>
@@ -917,7 +929,7 @@
<executions>
<execution>
<id>unpack-docs</id>
<phase>generate-resources</phase>
<phase>${maven-dependency-plugin-for-docs.phase}</phase>
<goals>
<goal>unpack</goal>
</goals>
@@ -932,7 +944,7 @@
</version>
<classifier>sources</classifier>
<type>jar</type>
<overWrite>false</overWrite>
<overWrite>true</overWrite>
<outputDirectory>${docs.resources.dir}
</outputDirectory>
</artifactItem>
@@ -953,7 +965,7 @@
<version>${spring-doc-resources.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/refdocs/</outputDirectory>
<outputDirectory>${refdocs.build.directory}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
@@ -984,6 +996,41 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>${exec-maven-plugin.version}</version>
<executions>
<execution>
<id>generate-configprops</id>
<phase>prepare-package</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.springframework.cloud
</groupId>
<artifactId>spring-cloud-build-docs
</artifactId>
<version>${spring-cloud-build.version}
</version>
<type>jar</type>
</dependency>
</dependencies>
<configuration>
<includePluginDependencies>
true
</includePluginDependencies>
<mainClass>org.springframework.cloud.internal.Main</mainClass>
<arguments>
<argument>${configprops.path}</argument>
<argument>${configprops.inclusionPattern}</argument>
</arguments>
</configuration>
</plugin>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
@@ -999,10 +1046,65 @@
<artifactId>asciidoctorj-pdf</artifactId>
<version>${asciidoctorj-pdf.version}</version>
</dependency>
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj-diagram</artifactId>
<version>${asciidoctorj-diagram.version}</version>
</dependency>
</dependencies>
<configuration>
<sourceDirectory>${project.build.directory}/refdocs/</sourceDirectory>
<sourceDocumentName>${docs.main}.adoc</sourceDocumentName>
<sourceDirectory>${refdocs.build.directory}</sourceDirectory>
<resources>
<resource>
<directory>${refdocs.build.directory}</directory>
<excludes>
<exclude>**/*.*adoc</exclude>
</excludes>
</resource>
</resources>
<!-- tag::attributes[] -->
<attributes>
<docinfo>shared</docinfo>
<allow-uri-read>true</allow-uri-read>
<nofooter/>
<toc>left</toc>
<toc-levels>4</toc-levels>
<sectlinks>true</sectlinks>
<sources-root>${project.basedir}/src</sources-root>
<asciidoc-sources-root>${project.basedir}/src/main/asciidoc</asciidoc-sources-root>
<generated-resources-root>${project.basedir}/target/generated-resources
</generated-resources-root>
<!-- Use this attribute the reference code from another module -->
<!-- Note the @ at the end, lowering the precedence of the attribute -->
<project-root>${maven.multiModuleProjectDirectory}@</project-root>
<!-- It's mandatory for you to pass the docs.main property -->
<github-repo>${docs.main}</github-repo>
<github-raw>
https://raw.githubusercontent.com/spring-cloud/${docs.main}/${github-tag}
</github-raw>
<github-code>https://github.com/spring-cloud/${docs.main}/tree/${github-tag}
</github-code>
<github-issues>https://github.com/spring-cloud/${docs.main}/issues/</github-issues>
<github-wiki>https://github.com/spring-cloud/${docs.main}/wiki</github-wiki>
<github-master-code>https://github.com/spring-cloud/${docs.main}/tree/master
</github-master-code>
<index-link>${index-link}</index-link>
<!-- Spring Cloud specific -->
<!-- for backward compatibility -->
<spring-cloud-version>${project.version}</spring-cloud-version>
<project-version>${project.version}</project-version>
<github-tag>${github-tag}</github-tag>
<version-type>${version-type}</version-type>
<docs-url>${docs-url}</docs-url>
<raw-docs-url>${raw-docs-url}</raw-docs-url>
<project-version>${project.version}</project-version>
<project-name>${docs.main}</project-name>
</attributes>
<!-- end::attributes[] -->
<requires>
<require>asciidoctor-diagram</require>
</requires>
</configuration>
<executions>
<execution>
@@ -1013,35 +1115,84 @@
</goals>
<configuration>
<backend>html5</backend>
<sourceDocumentExtensions>
<sourceDocumentExtension>.adoc</sourceDocumentExtension>
<sourceDocumentExtension>.htmladoc</sourceDocumentExtension>
</sourceDocumentExtensions>
<outputDirectory>${project.build.directory}/generated-docs/reference/html
</outputDirectory>
<sourceHighlighter>highlight.js</sourceHighlighter>
<doctype>book</doctype>
<attributes>
// these attributes are required to use the doc resources
<docinfo>shared</docinfo>
<stylesdir>css/</stylesdir>
<stylesheet>spring.css</stylesheet>
<linkcss>true</linkcss>
<icons>font</icons>
<highlightjsdir>js/highlight</highlightjsdir>
<highlightjs-theme>atom-one-dark-reasonable</highlightjs-theme>
<allow-uri-read>true</allow-uri-read>
<nofooter/>
<toc>left</toc>
<toc-levels>4</toc-levels>
<spring-cloud-version>${project.version}</spring-cloud-version>
<sectlinks>true</sectlinks>
<linkcss>true</linkcss>
<imagesdir>./images</imagesdir>
<icons>font</icons>
<stylesdir>css/</stylesdir>
<stylesheet>spring.css</stylesheet>
<attribute-missing>warn</attribute-missing>
</attributes>
<outputFile>${docs.main}.html</outputFile>
<logHandler>
<outputToConsole>true</outputToConsole>
<failIf>
<!-- <severity>DEBUG</severity>-->
</failIf>
</logHandler>
</configuration>
</execution>
<execution>
<id>generate-htmlsingle-documentation</id>
<phase>prepare-package</phase>
<goals>
<goal>process-asciidoc</goal>
</goals>
<configuration>
<backend>html5</backend>
<sourceDocumentExtensions>
<sourceDocumentExtension>.htmlsingleadoc</sourceDocumentExtension>
</sourceDocumentExtensions>
<outputDirectory>
${project.build.directory}/generated-docs/reference/htmlsingle
</outputDirectory>
<sourceHighlighter>highlight.js</sourceHighlighter>
<doctype>book</doctype>
<attributes>
<highlightjsdir>js/highlight</highlightjsdir>
<highlightjs-theme>atom-one-dark-reasonable</highlightjs-theme>
<linkcss>true</linkcss>
<imagesdir>./images</imagesdir>
<icons>font</icons>
<stylesdir>css/</stylesdir>
<stylesheet>spring.css</stylesheet>
</attributes>
</configuration>
</execution>
<execution>
<id>generate-pdf-documentation</id>
<phase>prepare-package</phase>
<goals>
<goal>process-asciidoc</goal>
</goals>
<configuration>
<backend>pdf</backend>
<sourceDocumentExtensions>
<sourceDocumentExtension>.pdfadoc</sourceDocumentExtension>
</sourceDocumentExtensions>
<outputDirectory>${project.build.directory}/generated-docs/reference/pdf
</outputDirectory>
<resources>
<resource>
<directory>${refdocs.build.directory}</directory>
<excludes>
<exclude>**/*</exclude>
</excludes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${build-helper-maven-plugin.version}</version>
<inherited>false</inherited>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
@@ -1061,22 +1212,22 @@
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-nodeps</artifactId>
<version>1.8.1</version>
<version>${ant-nodeps.version}</version>
</dependency>
<dependency>
<groupId>org.tigris.antelope</groupId>
<artifactId>antelopetasks</artifactId>
<version>3.2.10</version>
<version>${antelopetasks.version}</version>
</dependency>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-complete</artifactId>
<version>1.7.17</version>
<version>${jruby-complete.version}</version>
</dependency>
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctorj</artifactId>
<version>1.5.8</version>
<version>${asciidoctorj.version}</version>
</dependency>
</dependencies>
<executions>
@@ -1119,57 +1270,116 @@
</target>
</configuration>
</execution>
<execution>
<id>package-and-attach-docs-zip</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<zip
destfile="${project.build.directory}/${project.artifactId}-${revision}.zip">
<!--<zipfileset
src="${project.build.directory}/${project.artifactId}-${revision}-javadoc.jar"
prefix="api" />-->
<!-- <fileset dir="${project.build.directory}/contents"/>-->
<fileset dir="${project.build.directory}/generated-docs"/>
</zip>
</target>
</configuration>
</execution>
<execution>
<id>setup-maven-properties</id>
<phase>validate</phase>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<exportAntProperties>true</exportAntProperties>
<target>
<taskdef
resource="net/sf/antcontrib/antcontrib.properties"/>
<taskdef name="stringutil"
classname="ise.antelope.tasks.StringUtilTask"/>
<var name="version-type"
value="${project.version}"/>
<propertyregex property="version-type"
override="true"
input="${version-type}"
regexp=".*\.(.*)"
replace="\1"/>
<propertyregex property="version-type"
override="true"
input="${version-type}"
regexp="(M)\d+"
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
<taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask"/>
<var name="version-type" value="${revision}"/>
<propertyregex property="version-type" override="true"
input="${version-type}" regexp=".*\.(.*)" replace="\1"/>
<propertyregex property="version-type" override="true"
input="${version-type}" regexp="(M)\d+" replace="MILESTONE"/>
<propertyregex property="version-type" override="true"
input="${version-type}" regexp="(RC)\d+"
replace="MILESTONE"/>
<propertyregex property="version-type"
override="true"
input="${version-type}"
regexp="(RC)\d+"
replace="MILESTONE"/>
<propertyregex property="version-type"
override="true"
input="${version-type}"
regexp="BUILD-(.*)"
<propertyregex property="version-type" override="true"
input="${version-type}" regexp="BUILD-(.*)"
replace="SNAPSHOT"/>
<stringutil string="${version-type}"
property="spring-cloud-repo">
<stringutil string="${version-type}" property="spring-cloud-repo">
<lowercase/>
</stringutil>
<var name="github-tag"
value="v${project.version}"/>
<propertyregex property="github-tag"
override="true"
input="${github-tag}"
regexp=".*SNAPSHOT"
replace="master"/>
<propertyregex property="git.branch" override="true"
input="${git.branch}" regexp="origin/(.*)"
replace="\1"/>
<var name="github-tag" value="${git.branch}"/>
<condition property="docs-url"
value="https://cloud.spring.io/${docs.main}">
<and>
<equals arg1="${version-type}" arg2="SNAPSHOT"/>
<or>
<equals arg1="${git.branch}" arg2="master"/>
<equals arg1="${git.branch}" arg2="origin/master"/>
</or>
</and>
</condition>
<condition property="docs-url"
value="https://cloud.spring.io/${docs.main}/${git.branch}">
<and>
<equals arg1="${version-type}" arg2="SNAPSHOT"/>
<not>
<or>
<equals arg1="${git.branch}" arg2="master"/>
<equals arg1="${git.branch}" arg2="origin/master"/>
</or>
</not>
</and>
</condition>
<condition property="docs-url"
value="https://cloud.spring.io/spring-cloud-static/${docs.main}/${project.version}">
<and>
<not>
<equals arg1="${version-type}" arg2="SNAPSHOT"/>
</not>
</and>
</condition>
<propertyregex property="raw-docs-url" override="true"
input="${docs-url}" regexp="https://cloud.spring.io/(.*)"
replace="https://raw.githubusercontent.com/\1"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${build-helper-maven-plugin.version}</version>
<inherited>false</inherited>
<executions>
<execution>
<id>attach-zip</id>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>
${project.build.directory}/${project.artifactId}-${project.version}.zip
</file>
<type>zip</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jfrog.buildinfo</groupId>
<artifactId>artifactory-maven-plugin</artifactId>
+4
View File
@@ -0,0 +1,4 @@
#!/bin/bash
./mvnw clean install -B -Pdocs ${@}
#./mvnw clean install -B -DskipTests ${@}
+3 -18
View File
@@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build-dependencies</artifactId>
<version>2.2.0.M2</version>
<version>2.2.0.RC1</version>
<name>spring-cloud-build-dependencies</name>
<packaging>pom</packaging>
<description>Spring Cloud Build Dependencies: an internal BOM for use with Spring
@@ -14,28 +14,13 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.0.M3</version>
<version>2.2.0.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring-boot.version>2.2.0.M3</spring-boot.version>
<spring-boot.version>2.2.0.RELEASE</spring-boot.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
<distributionManagement>
<downloadUrl>https://github.com/spring-cloud</downloadUrl>
<site>
+1 -1
View File
@@ -10,7 +10,7 @@
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-build</artifactId>
<version>2.2.0.M2</version>
<version>2.2.0.RC1</version>
</parent>
<dependencies>
<dependency>
+1 -1
View File
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.cloud</groupId>
<version>2.2.0.M2</version>
<version>2.2.0.RC1</version>
<artifactId>spring-cloud-dependencies-parent</artifactId>
<packaging>pom</packaging>
<name>spring-cloud-dependencies-parent</name>