From 03fc6fb9deb5173b7388b46279ad86c51c93078a Mon Sep 17 00:00:00 2001 From: Spring Operator Date: Tue, 26 Mar 2019 03:45:48 -0500 Subject: [PATCH] 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://erik.eae.net/archives/2007/07/27/18.54.15/ (200) with 2 occurrences could not be migrated: ([https](https://erik.eae.net/archives/2007/07/27/18.54.15/) result SSLHandshakeException). * [ ] http://javascript.nwbox.com/IEContentLoaded/ (200) with 2 occurrences could not be migrated: ([https](https://javascript.nwbox.com/IEContentLoaded/) result SSLHandshakeException). * [ ] http://blindsignals.com/index.php/2009/07/jquery-delay/ (301) with 2 occurrences could not be migrated: ([https](https://blindsignals.com/index.php/2009/07/jquery-delay/) 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://fontawesome.io (301) with 8 occurrences migrated to: https://fontawesome.com?from=io ([https](https://fontawesome.io) result AnnotatedConnectException). * [ ] http://jsperf.com/getall-vs-sizzle/2 (301) with 2 occurrences migrated to: https://jsperf.com/getall-vs-sizzle/2 ([https](https://jsperf.com/getall-vs-sizzle/2) result ReadTimeoutException). * [ ] http://192.168.99.100:8080/blue (ConnectTimeoutException) with 14 occurrences migrated to: https://192.168.99.100:8080/blue ([https](https://192.168.99.100:8080/blue) result ConnectTimeoutException). * [ ] http://192.168.99.100:8081/artifactory/libs-release-local (ConnectTimeoutException) with 16 occurrences migrated to: https://192.168.99.100:8081/artifactory/libs-release-local ([https](https://192.168.99.100:8081/artifactory/libs-release-local) result ConnectTimeoutException). * [ ] http://wiki.ecmascript.org/doku.php?id=harmony:egal (ConnectTimeoutException) with 2 occurrences migrated to: https://wiki.ecmascript.org/doku.php?id=harmony:egal ([https](https://wiki.ecmascript.org/doku.php?id=harmony:egal) result ConnectTimeoutException). * [ ] http://www.w3.org/TR/html4/loose.dtd (ReadTimeoutException) with 2 occurrences migrated to: https://www.w3.org/TR/html4/loose.dtd ([https](https://www.w3.org/TR/html4/loose.dtd) result ReadTimeoutException). * [ ] http://foo/com/example/github/github-analytics-stub-runner-boot-classpath-stubs/0.0.1.M1/github-analytics-stub-runner-boot-classpath-stubs-0.0.1.M1.jar (UnknownHostException) with 2 occurrences migrated to: https://foo/com/example/github/github-analytics-stub-runner-boot-classpath-stubs/0.0.1.M1/github-analytics-stub-runner-boot-classpath-stubs-0.0.1.M1.jar ([https](https://foo/com/example/github/github-analytics-stub-runner-boot-classpath-stubs/0.0.1.M1/github-analytics-stub-runner-boot-classpath-stubs-0.0.1.M1.jar) result UnknownHostException). * [ ] http://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local (UnknownHostException) with 6 occurrences migrated to: https://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local ([https](https://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local) result UnknownHostException). * [ ] http://cloud.spring.io/spring-cloud/spring-cloud-pipelines.html (404) with 2 occurrences migrated to: https://cloud.spring.io/spring-cloud/spring-cloud-pipelines.html ([https](https://cloud.spring.io/spring-cloud/spring-cloud-pipelines.html) result 404). * [ ] http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ (301) with 2 occurrences migrated to: https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ ([https](https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/) result 404). * [ ] http://github.com/sprinframework (301) with 8 occurrences migrated to: https://github.com/sprinframework ([https](https://github.com/sprinframework) result 404). * [ ] http://github.com/spring_hadoop (301) with 8 occurrences migrated to: https://github.com/spring_hadoop ([https](https://github.com/spring_hadoop) result 404). * [ ] http://json.org/json2.js (404) with 2 occurrences migrated to: https://json.org/json2.js ([https](https://json.org/json2.js) result 404). * [ ] http://pivotal.github.com/jasmine (404) with 2 occurrences migrated to: https://pivotal.github.com/jasmine ([https](https://pivotal.github.com/jasmine) 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://EditorConfig.org with 1 occurrences migrated to: https://EditorConfig.org ([https](https://EditorConfig.org) result 200). * [ ] http://backbonejs.org with 2 occurrences migrated to: https://backbonejs.org ([https](https://backbonejs.org) result 200). * [ ] http://bugs.jquery.com/ticket/12282 with 2 occurrences migrated to: https://bugs.jquery.com/ticket/12282 ([https](https://bugs.jquery.com/ticket/12282) result 200). * [ ] http://bugs.jquery.com/ticket/12359 with 2 occurrences migrated to: https://bugs.jquery.com/ticket/12359 ([https](https://bugs.jquery.com/ticket/12359) result 200). * [ ] http://bugs.jquery.com/ticket/13378 with 2 occurrences migrated to: https://bugs.jquery.com/ticket/13378 ([https](https://bugs.jquery.com/ticket/13378) result 200). * [ ] http://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js with 1 occurrences migrated to: https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js ([https](https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js) result 200). * [ ] http://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html with 10 occurrences migrated to: https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html ([https](https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html) result 200). * [ ] http://cloud.spring.io/spring-cloud-pipelines/images/intro/flow.png with 2 occurrences migrated to: https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow.png ([https](https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow.png) result 200). * [ ] http://cloud.spring.io/spring-cloud-pipelines/images/intro/flow_concourse.png with 2 occurrences migrated to: https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow_concourse.png ([https](https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow_concourse.png) result 200). * [ ] http://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html with 4 occurrences migrated to: https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html ([https](https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html) result 200). * [ ] http://creativecommons.org/licenses/by/3.0/ with 4 occurrences migrated to: https://creativecommons.org/licenses/by/3.0/ ([https](https://creativecommons.org/licenses/by/3.0/) result 200). * [ ] http://diveintohtml5.info/history.html with 2 occurrences migrated to: https://diveintohtml5.info/history.html ([https](https://diveintohtml5.info/history.html) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/ with 2 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/ with 2 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/ with 2 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/ with 2 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/) result 200). * [ ] http://github.com/spring-cloud/spring-cloud-pipelines with 2 occurrences migrated to: https://github.com/spring-cloud/spring-cloud-pipelines ([https](https://github.com/spring-cloud/spring-cloud-pipelines) result 200). * [ ] http://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg with 2 occurrences migrated to: https://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg ([https](https://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg) result 200). * [ ] http://jquery.com/ with 2 occurrences migrated to: https://jquery.com/ ([https](https://jquery.com/) result 200). * [ ] http://opensource.org/licenses/mit-license.html with 4 occurrences migrated to: https://opensource.org/licenses/mit-license.html ([https](https://opensource.org/licenses/mit-license.html) result 200). * [ ] http://run.pivotal.io with 4 occurrences migrated to: https://run.pivotal.io ([https](https://run.pivotal.io) result 200). * [ ] http://silviomoreto.github.io/bootstrap-select/ with 4 occurrences migrated to: https://silviomoreto.github.io/bootstrap-select/ ([https](https://silviomoreto.github.io/bootstrap-select/) result 200). * [ ] http://sizzlejs.com/ with 4 occurrences migrated to: https://sizzlejs.com/ ([https](https://sizzlejs.com/) result 200). * [ ] http://spring.io/guides/gs/gradle/ with 2 occurrences migrated to: https://spring.io/guides/gs/gradle/ ([https](https://spring.io/guides/gs/gradle/) result 200). * [ ] http://spring.io/guides/gs/maven/ with 2 occurrences migrated to: https://spring.io/guides/gs/maven/ ([https](https://spring.io/guides/gs/maven/) result 200). * [ ] http://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei with 10 occurrences migrated to: https://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei ([https](https://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei) result 200). * [ ] http://stackoverflow.com/questions/tagged/spring-cloud with 4 occurrences migrated to: https://stackoverflow.com/questions/tagged/spring-cloud ([https](https://stackoverflow.com/questions/tagged/spring-cloud) result 200). * [ ] http://stackoverflow.com/questions/tagged/spring-data-jpa with 2 occurrences migrated to: https://stackoverflow.com/questions/tagged/spring-data-jpa ([https](https://stackoverflow.com/questions/tagged/spring-data-jpa) result 200). * [ ] http://twitter.com/byscuits with 4 occurrences migrated to: https://twitter.com/byscuits ([https](https://twitter.com/byscuits) result 200). * [ ] http://twitter.com/fontawesome with 4 occurrences migrated to: https://twitter.com/fontawesome ([https](https://twitter.com/fontawesome) result 200). * [ ] http://underscorejs.org with 2 occurrences migrated to: https://underscorejs.org ([https](https://underscorejs.org) result 200). * [ ] http://www.java.com/en/download/help/error_hotspot.xml with 2 occurrences migrated to: https://www.java.com/en/download/help/error_hotspot.xml ([https](https://www.java.com/en/download/help/error_hotspot.xml) result 200). * [ ] http://kyruus.com (301) with 4 occurrences migrated to: https://www.kyruus.com/ ([https](https://kyruus.com) result 200). * [ ] http://www.shellcheck.net/ with 5 occurrences migrated to: https://www.shellcheck.net/ ([https](https://www.shellcheck.net/) result 200). * [ ] http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html with 2 occurrences migrated to: https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html ([https](https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html) result 200). * [ ] http://www.w3.org/TR/2011/REC-css3-selectors-20110929/ with 4 occurrences migrated to: https://www.w3.org/TR/2011/REC-css3-selectors-20110929/ ([https](https://www.w3.org/TR/2011/REC-css3-selectors-20110929/) result 200). * [ ] http://www.w3.org/TR/CSS21/syndata.html with 4 occurrences migrated to: https://www.w3.org/TR/CSS21/syndata.html ([https](https://www.w3.org/TR/CSS21/syndata.html) result 200). * [ ] http://www.w3.org/TR/selectors/ with 8 occurrences migrated to: https://www.w3.org/TR/selectors/ ([https](https://www.w3.org/TR/selectors/) result 200). * [ ] http://dev.w3.org/csswg/cssom/ with 2 occurrences migrated to: https://dev.w3.org/csswg/cssom/ ([https](https://dev.w3.org/csswg/cssom/) result 301). * [ ] http://docs.python.org/library/functions.html with 2 occurrences migrated to: https://docs.python.org/library/functions.html ([https](https://docs.python.org/library/functions.html) result 301). * [ ] http://forum.spring.io/forum/spring-projects/data with 2 occurrences migrated to: https://forum.spring.io/forum/spring-projects/data ([https](https://forum.spring.io/forum/spring-projects/data) result 301). * [ ] http://github.com/SpringSource/spring-data-jpa with 2 occurrences migrated to: https://github.com/SpringSource/spring-data-jpa ([https](https://github.com/SpringSource/spring-data-jpa) result 301). * [ ] http://github.com/pivotal/jasmine-ajax with 2 occurrences migrated to: https://github.com/pivotal/jasmine-ajax ([https](https://github.com/pivotal/jasmine-ajax) result 301). * [ ] http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_ with 2 occurrences migrated to: https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_ ([https](https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_) result 301). * [ ] http://jira.springsource.org/browse/DATAJPA with 2 occurrences migrated to: https://jira.springsource.org/browse/DATAJPA ([https](https://jira.springsource.org/browse/DATAJPA) result 301). * [ ] http://jquery.org/license with 4 occurrences migrated to: https://jquery.org/license ([https](https://jquery.org/license) result 301). * [ ] http://kubernetes.io/docs/user-guide/compute-resources/ with 20 occurrences migrated to: https://kubernetes.io/docs/user-guide/compute-resources/ ([https](https://kubernetes.io/docs/user-guide/compute-resources/) result 301). * [ ] http://kubernetes.io/docs/user-guide/persistent-volumes/ with 8 occurrences migrated to: https://kubernetes.io/docs/user-guide/persistent-volumes/ ([https](https://kubernetes.io/docs/user-guide/persistent-volumes/) result 301). * [ ] http://projects.spring.io/spring-data-jpa with 2 occurrences migrated to: https://projects.spring.io/spring-data-jpa ([https](https://projects.spring.io/spring-data-jpa) result 301). * [ ] http://twitter.github.com/bootstrap/javascript.html with 26 occurrences migrated to: https://twitter.github.com/bootstrap/javascript.html ([https](https://twitter.github.com/bootstrap/javascript.html) result 301). * [ ] http://www.modernizr.com/ with 2 occurrences migrated to: https://www.modernizr.com/ ([https](https://www.modernizr.com/) result 301). * [ ] http://www.spring.io with 16 occurrences migrated to: https://www.spring.io ([https](https://www.spring.io) result 301). * [ ] http://www.w3.org/TR/css3-selectors/ with 4 occurrences migrated to: https://www.w3.org/TR/css3-selectors/ ([https](https://www.w3.org/TR/css3-selectors/) result 301). * [ ] http://www.w3.org/TR/css3-syntax/ with 2 occurrences migrated to: https://www.w3.org/TR/css3-syntax/ ([https](https://www.w3.org/TR/css3-syntax/) result 301). * [ ] http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx with 4 occurrences migrated to: https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx ([https](https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx) result 302). * [ ] http://repo.spring.io/milestone with 8 occurrences migrated to: https://repo.spring.io/milestone ([https](https://repo.spring.io/milestone) result 302). * [ ] http://scripts.sil.org/OFL with 4 occurrences migrated to: https://scripts.sil.org/OFL ([https](https://scripts.sil.org/OFL) result 302). * [ ] http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context with 2 occurrences migrated to: https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context ([https](https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context) result 302). # Ignored These URLs were intentionally ignored. * http://127.0.0.1:8080 with 20 occurrences * http://artifactory with 2 occurrences * http://artifactory:8081/artifactory/libs-release-local with 27 occurrences * http://docbook.org/ns/docbook with 1422 occurrences * http://foo with 1 occurrences * http://foo/bar with 10 occurrences * http://localhost with 4 occurrences * http://localhost:8001/ui/ with 8 occurrences * http://localhost:8080 with 3 occurrences * http://localhost:9876/ with 2 occurrences * http://www with 2 occurrences --- .editorconfig | 2 +- .gitignore | 2 +- README.adoc | 36 ++++++------ .../src/main/asciidoc/CONCOURSE.adoc | 2 +- .../docs-sources/src/main/asciidoc/INTRO.adoc | 4 +- .../src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc | 4 +- .../src/main/asciidoc/JENKINS_COMMON.adoc | 2 +- .../docs-sources/src/main/asciidoc/TECH.adoc | 2 +- common/src/test/bats/pipeline-cf.bats | 4 +- concourse/.gitignore | 2 +- concourse/README.adoc | 2 +- concourse/credentials-sample-cf.yml | 4 +- .../src/main/asciidoc/CF_CONCOURSE.adoc | 2 +- .../src/main/asciidoc/CF_MIGRATION.adoc | 2 +- docs-sources/src/main/asciidoc/INTRO.adoc | 4 +- .../src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc | 4 +- .../src/main/asciidoc/JENKINS_COMMON.adoc | 2 +- docs-sources/src/main/asciidoc/K8S_DEMO.adoc | 16 ++--- docs-sources/src/main/asciidoc/TECH.adoc | 2 +- docs-sources/src/main/jekyll/_config.yml | 4 +- .../main/jekyll/_includes/download_widget.md | 4 +- .../main/jekyll/_sample-pages/project.html | 6 +- .../jekyll/_sample-pages/project_group.html | 16 ++--- .../jekyll/bootstrap/css/bootstrap-select.css | 2 +- .../jekyll/bootstrap/js/bootstrap-select.js | 2 +- .../src/main/jekyll/bootstrap/js/bootstrap.js | 28 ++++----- docs-sources/src/main/jekyll/css/main.css.css | 2 +- .../font-awesome/css/font-awesome-ie7.css | 16 ++--- .../jekyll/font-awesome/css/font-awesome.css | 16 ++--- docs-sources/src/main/jekyll/index.html | 12 ++-- docs-sources/src/main/jekyll/js/backbone.js | 4 +- docs-sources/src/main/jekyll/js/jquery.js | 58 +++++++++---------- .../src/main/jekyll/js/test/SpecRunner.html | 2 +- .../jekyll/js/test/lib/support/mock-ajax.js | 4 +- .../js/test/spec/QuickStartWidgetSpec.js | 20 +++---- docs-sources/src/main/jekyll/js/underscore.js | 6 +- docs/_config.yml | 4 +- docs/_includes/download_widget.md | 4 +- docs/_sample-pages/project.html | 6 +- docs/_sample-pages/project_group.html | 16 ++--- docs/bootstrap/css/bootstrap-select.css | 2 +- docs/bootstrap/js/bootstrap-select.js | 2 +- docs/bootstrap/js/bootstrap.js | 28 ++++----- docs/css/main.css.css | 2 +- docs/font-awesome/css/font-awesome-ie7.css | 16 ++--- docs/font-awesome/css/font-awesome.css | 16 ++--- docs/index.html | 12 ++-- docs/js/backbone.js | 4 +- docs/js/jquery.js | 58 +++++++++---------- docs/js/test/SpecRunner.html | 2 +- docs/js/test/lib/support/mock-ajax.js | 4 +- docs/js/test/spec/QuickStartWidgetSpec.js | 20 +++---- docs/js/underscore.js | 6 +- docs/multi/multi__building_the_project.html | 2 +- docs/multi/multi__introduction.html | 2 +- .../multi/multi__jenkins_pipeline_common.html | 2 +- ..._step_by_step_cloud_foundry_migration.html | 2 +- .../multi__the_demo_setup_kubernetes.html | 16 ++--- docs/multi/multi_concourse-pipeline-cf.html | 2 +- docs/multi/multi_jenkins-pipeline-cf.html | 4 +- docs/multi/multi_jenkins-pipeline-k8s.html | 4 +- docs/single/spring-cloud-pipelines.html | 34 +++++------ docs/spring-cloud-pipelines.html | 2 +- jenkins/README.adoc | 10 ++-- 64 files changed, 291 insertions(+), 291 deletions(-) diff --git a/.editorconfig b/.editorconfig index 0679d88a..e65ee453 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,4 +1,4 @@ -# EditorConfig is awesome: http://EditorConfig.org +# EditorConfig is awesome: https://EditorConfig.org # top-most EditorConfig file root = true diff --git a/.gitignore b/.gitignore index 4532cf09..9ebebb84 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ *.war *.ear -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +# virtual machine crash logs, see https://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .gradle diff --git a/README.adoc b/README.adoc index 906c3ce3..da2b24b1 100644 --- a/README.adoc +++ b/README.adoc @@ -211,11 +211,11 @@ microservices. That way the testing setup looks like this: image::{intro-root-docs}/stubbed_dependencies.png[title="We're testing microservices in isolation"] Such an approach to testing and deployment gives the following benefits -(thanks to the usage of http://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract]): +(thanks to the usage of https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract]): - No need to deploy dependant services - The stubs used for the tests ran on a deployed microservice are the same as those used during integration tests -- Those stubs have been tested against the application that produces them (check http://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract] for more information) +- Those stubs have been tested against the application that produces them (check https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract] for more information) - We don't have many slow tests running on a deployed application - thus the pipeline gets executed much faster - We don't have to queue deployments - we're testing in isolation thus pipelines don't interfere with each other - We don't have to spawn virtual machines each time for deployment purposes @@ -803,7 +803,7 @@ Below you can see what environment variables are required by the scripts. To the |PAAS_STAGE_SPACE | Name of the space for the stage env | sc-pipelines-stage |PAAS_PROD_ORG | Name of the org for the prod env | pcfdev-org |PAAS_PROD_SPACE | Name of the space for the prod env | sc-pipelines-prod -|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | http://192.168.99.100:8081/artifactory/libs-release-local +|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | https://192.168.99.100:8081/artifactory/libs-release-local |M2_SETTINGS_REPO_ID | The id of server from Maven settings.xml | artifactory-local |PAAS_HOSTNAME_UUID | Additional suffix for the route. In a shared environment the default routes can be already taken | |JAVA_BUILDPACK_URL | The URL to the Java buildpack to be used by CF | https://github.com/cloudfoundry/java-buildpack.git#v3.8.1 | @@ -1319,7 +1319,7 @@ executing `tools/deploy-infra.sh`. Example for deploying to Artifactory at IP `1 ---- git clone https://github.com/spring-cloud/spring-cloud-pipelines cd spring-cloud-pipelines/ -ARTIFACTORY_URL="http://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh +ARTIFACTORY_URL="https://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh ---- [[setup-settings-xml]] @@ -1702,7 +1702,7 @@ You can also use the https://jenkins.io/doc/book/pipeline/syntax/[declarative pi https://jenkins.io/projects/blueocean/[Blue Ocean UI]. Here is a step by step guide to run a pipeline via this approach. -The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `http://192.168.99.100:8080/blue`. +The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `https://192.168.99.100:8080/blue`. {nbsp} {nbsp} @@ -1749,7 +1749,7 @@ check out this https://issues.jenkins-ci.org/browse/JENKINS-33846[issue] for mor WARNING: Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you'll run out of executors pretty fast. You can check out this https://issues.jenkins-ci.org/browse/JENKINS-36235[issue] for -and this http://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] +and this https://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] for more information. [[optional-steps-cf]] @@ -1992,7 +1992,7 @@ You can also use the https://jenkins.io/doc/book/pipeline/syntax/[declarative pi https://jenkins.io/projects/blueocean/[Blue Ocean UI]. Here is a step by step guide to run a pipeline via this approach. -The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `http://192.168.99.100:8080/blue`. +The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `https://192.168.99.100:8080/blue`. {nbsp} {nbsp} @@ -2039,7 +2039,7 @@ check out this https://issues.jenkins-ci.org/browse/JENKINS-33846[issue] for mor WARNING: Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you'll run out of executors pretty fast. You can check out this https://issues.jenkins-ci.org/browse/JENKINS-36235[issue] for -and this http://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] +and this https://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] for more information. [[optional-steps-k8s]] @@ -2920,7 +2920,7 @@ alertmanager: ## alertmanager data Persistent Volume access modes ## Must match those of existing PV or dynamic provisioner - ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ ## accessModes: - ReadWriteOnce @@ -2963,7 +2963,7 @@ alertmanager: replicaCount: 1 ## alertmanager resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -3005,7 +3005,7 @@ configmapReload: pullPolicy: IfNotPresent ## configmap-reload resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} @@ -3040,7 +3040,7 @@ kubeStateMetrics: replicaCount: 1 ## kube-state-metrics resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -3237,7 +3237,7 @@ server: ## Prometheus server data Persistent Volume access modes ## Must match those of existing PV or dynamic provisioner - ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ ## accessModes: - ReadWriteOnce @@ -3281,7 +3281,7 @@ server: replicaCount: 1 ## Prometheus server resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -3371,7 +3371,7 @@ pushgateway: replicaCount: 1 ## pushgateway resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -3691,7 +3691,7 @@ NOTES: ---- Perform the aforementioned steps and add the Grafana's datasource -as Prometheus with URL `http://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local` +as Prometheus with URL `https://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local` You can pick the dashboard via the Grafana ID (2471). This is the default dashboard for the Spring Cloud Pipelines demo apps. @@ -3761,7 +3761,7 @@ We will also be refactoring the application to comply with Spring Cloud Pipeline - https://github.com/ciberkleid/app-config[app-config] - https://github.com/spring-cloud-samples/cloudfoundry-stub-runner-boot[cloudfoundry-stub-runner-boot] - https://github.com/spring-cloud/spring-cloud-pipelines[spring-cloud-pipelines] -* *Pivotal Web Services* - public hosted Cloud Foundry offering http://run.pivotal.io[free trial accounts] and including MySQL, Rabbit, and Pivotal Spring Cloud Services in the Marketplace +* *Pivotal Web Services* - public hosted Cloud Foundry offering https://run.pivotal.io[free trial accounts] and including MySQL, Rabbit, and Pivotal Spring Cloud Services in the Marketplace * *Concourse* * *JFrog Bintray* - public hosted Maven repository offering free https://bintray.com/signup/oss[OSS accounts] * *Client Tools* - on your local machine, you will need an IDE as well as the mvn, git, cf, and fly (Concourse) CLIs @@ -5245,7 +5245,7 @@ Happy coding! === Prerequisites -As prerequisites you need to have http://www.shellcheck.net/[shellcheck], +As prerequisites you need to have https://www.shellcheck.net/[shellcheck], https://github.com/sstephenson/bats[bats], https://stedolan.github.io/jq/[jq] and https://rubyinstaller.org/downloads/[ruby] installed. If you're on a Linux machine then `bats` and `shellcheck` will be installed for you. diff --git a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/CONCOURSE.adoc b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/CONCOURSE.adoc index fd7c74fd..c430e46d 100644 --- a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/CONCOURSE.adoc +++ b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/CONCOURSE.adoc @@ -171,7 +171,7 @@ Below you can see what environment variables are required by the scripts. To the |PAAS_STAGE_SPACE | Name of the space for the stage env | sc-pipelines-stage |PAAS_PROD_ORG | Name of the org for the prod env | pcfdev-org |PAAS_PROD_SPACE | Name of the space for the prod env | sc-pipelines-prod -|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | http://192.168.99.100:8081/artifactory/libs-release-local +|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | https://192.168.99.100:8081/artifactory/libs-release-local |M2_SETTINGS_REPO_ID | The id of server from Maven settings.xml | artifactory-local |PAAS_HOSTNAME_UUID | Additional suffix for the route. In a shared environment the default routes can be already taken | |APP_MEMORY_LIMIT | How much memory should be used by the infra apps (Eureka, Stub Runner etc.) | 256m diff --git a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/INTRO.adoc b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/INTRO.adoc index 28bb004c..718f912e 100644 --- a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/INTRO.adoc +++ b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/INTRO.adoc @@ -160,11 +160,11 @@ microservices. That way the testing setup looks like this: image::{intro-root-docs}/stubbed_dependencies.png[title="We're testing microservices in isolation"] Such an approach to testing and deployment gives the following benefits -(thanks to the usage of http://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract]): +(thanks to the usage of https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract]): - No need to deploy dependant services - The stubs used for the tests ran on a deployed microservice are the same as those used during integration tests -- Those stubs have been tested against the application that produces them (check http://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract] for more information) +- Those stubs have been tested against the application that produces them (check https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract] for more information) - We don't have many slow tests running on a deployed application - thus the pipeline gets executed much faster - We don't have to queue deployments - we're testing in isolation thus pipelines don't interfere with each other - We don't have to spawn virtual machines each time for deployment purposes diff --git a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc index f33500be..72426533 100644 --- a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc +++ b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc @@ -2,7 +2,7 @@ You can also use the https://jenkins.io/doc/book/pipeline/syntax/[declarative pi https://jenkins.io/projects/blueocean/[Blue Ocean UI]. Here is a step by step guide to run a pipeline via this approach. -The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `http://192.168.99.100:8080/blue`. +The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `https://192.168.99.100:8080/blue`. {nbsp} {nbsp} @@ -49,5 +49,5 @@ check out this https://issues.jenkins-ci.org/browse/JENKINS-33846[issue] for mor WARNING: Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you'll run out of executors pretty fast. You can check out this https://issues.jenkins-ci.org/browse/JENKINS-36235[issue] for -and this http://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] +and this https://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] for more information. diff --git a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc index e4a680e2..894d29a4 100644 --- a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc +++ b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc @@ -60,7 +60,7 @@ executing `tools/deploy-infra.sh`. Example for deploying to Artifactory at IP `1 ---- git clone https://github.com/spring-cloud/spring-cloud-pipelines cd spring-cloud-pipelines/ -ARTIFACTORY_URL="http://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh +ARTIFACTORY_URL="https://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh ---- [[setup-settings-xml]] diff --git a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/TECH.adoc b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/TECH.adoc index 2bbabd78..abf0cce8 100644 --- a/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/TECH.adoc +++ b/buildSrc/src/test/resources/project_customizer/docs-sources/src/main/asciidoc/TECH.adoc @@ -2,7 +2,7 @@ === Prerequisites -As prerequisites you need to have http://www.shellcheck.net/[shellcheck], +As prerequisites you need to have https://www.shellcheck.net/[shellcheck], https://github.com/sstephenson/bats[bats], https://stedolan.github.io/jq/[jq] and https://rubyinstaller.org/downloads/[ruby] installed. If you're on a Linux machine then `bats` and `shellcheck` will be installed for you. diff --git a/common/src/test/bats/pipeline-cf.bats b/common/src/test/bats/pipeline-cf.bats index 167e8144..6794e659 100644 --- a/common/src/test/bats/pipeline-cf.bats +++ b/common/src/test/bats/pipeline-cf.bats @@ -263,7 +263,7 @@ export -f fakeRetrieveStubRunnerIds # Stub Runner assert_output --partial "Setting env var [APPLICATION_HOSTNAME] -> [stubrunner-test-my-project] for app [stubrunner]" assert_output --partial "Setting env var [APPLICATION_DOMAIN] -> [cfapps.io] for app [stubrunner]" - assert_output --partial "curl -u foo:bar http://foo/com/example/github/github-analytics-stub-runner-boot-classpath-stubs/0.0.1.M1/github-analytics-stub-runner-boot-classpath-stubs-0.0.1.M1.jar -o" + assert_output --partial "curl -u foo:bar https://foo/com/example/github/github-analytics-stub-runner-boot-classpath-stubs/0.0.1.M1/github-analytics-stub-runner-boot-classpath-stubs-0.0.1.M1.jar -o" assert_output --partial "cf curl /v2/apps/4215794a-eeef-4de2-9a80-c73b5d1a02be -X PUT" assert_output --partial "[8080,10000,10001,10002" assert_output --partial "cf create-route test-space-my-project cfapps.io --hostname stubrunner-test-my-project-10000" @@ -335,7 +335,7 @@ export -f fakeRetrieveStubRunnerIds # Stub Runner assert_output --partial "Setting env var [APPLICATION_HOSTNAME] -> [stubrunner-test-${projectNameUppercase}] for app [stubrunner]" assert_output --partial "Setting env var [APPLICATION_DOMAIN] -> [artifactId] for app [stubrunner]" - assert_output --partial "curl -u foo:bar http://foo/com/example/github/github-analytics-stub-runner-boot-classpath-stubs/0.0.1.M1/github-analytics-stub-runner-boot-classpath-stubs-0.0.1.M1.jar -o" + assert_output --partial "curl -u foo:bar https://foo/com/example/github/github-analytics-stub-runner-boot-classpath-stubs/0.0.1.M1/github-analytics-stub-runner-boot-classpath-stubs-0.0.1.M1.jar -o" assert_output --partial "cf curl /v2/apps/4215794a-eeef-4de2-9a80-c73b5d1a02be -X PUT" assert_output --partial "[8080,10000,10001,10002" assert_output --partial "cf create-route test-space-${projectNameUppercase} artifactId --hostname stubrunner-test-${projectNameUppercase}-10000" diff --git a/concourse/.gitignore b/concourse/.gitignore index ee6f0ebd..a60fcc83 100644 --- a/concourse/.gitignore +++ b/concourse/.gitignore @@ -8,7 +8,7 @@ *.war *.ear -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +# virtual machine crash logs, see https://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* credentials.yml diff --git a/concourse/README.adoc b/concourse/README.adoc index a8f53c8f..1b5d5503 100644 --- a/concourse/README.adoc +++ b/concourse/README.adoc @@ -182,7 +182,7 @@ Below you can see what environment variables are required by the scripts. To the |PAAS_STAGE_SPACE | Name of the space for the stage env | sc-pipelines-stage |PAAS_PROD_ORG | Name of the org for the prod env | pcfdev-org |PAAS_PROD_SPACE | Name of the space for the prod env | sc-pipelines-prod -|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | http://192.168.99.100:8081/artifactory/libs-release-local +|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | https://192.168.99.100:8081/artifactory/libs-release-local |M2_SETTINGS_REPO_ID | The id of server from Maven settings.xml | artifactory-local |PAAS_HOSTNAME_UUID | Additional suffix for the route. In a shared environment the default routes can be already taken | |JAVA_BUILDPACK_URL | The URL to the Java buildpack to be used by CF | https://github.com/cloudfoundry/java-buildpack.git#v3.8.1 | diff --git a/concourse/credentials-sample-cf.yml b/concourse/credentials-sample-cf.yml index 777de7b6..af7a0988 100644 --- a/concourse/credentials-sample-cf.yml +++ b/concourse/credentials-sample-cf.yml @@ -71,5 +71,5 @@ m2-settings-repo-password: password # if download differs from upload set `repo-with-binaries-for-upload` # example of such a case is Bintray -repo-with-binaries: http://192.168.99.100:8081/artifactory/libs-release-local -repo-with-binaries-for-upload: http://192.168.99.100:8081/artifactory/libs-release-local +repo-with-binaries: https://192.168.99.100:8081/artifactory/libs-release-local +repo-with-binaries-for-upload: https://192.168.99.100:8081/artifactory/libs-release-local diff --git a/docs-sources/src/main/asciidoc/CF_CONCOURSE.adoc b/docs-sources/src/main/asciidoc/CF_CONCOURSE.adoc index 5fea7b28..0527e7c1 100644 --- a/docs-sources/src/main/asciidoc/CF_CONCOURSE.adoc +++ b/docs-sources/src/main/asciidoc/CF_CONCOURSE.adoc @@ -176,7 +176,7 @@ Below you can see what environment variables are required by the scripts. To the |PAAS_STAGE_SPACE | Name of the space for the stage env | sc-pipelines-stage |PAAS_PROD_ORG | Name of the org for the prod env | pcfdev-org |PAAS_PROD_SPACE | Name of the space for the prod env | sc-pipelines-prod -|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | http://192.168.99.100:8081/artifactory/libs-release-local +|REPO_WITH_BINARIES_FOR_UPLOAD | URL to repo with the deployed jars | https://192.168.99.100:8081/artifactory/libs-release-local |M2_SETTINGS_REPO_ID | The id of server from Maven settings.xml | artifactory-local |PAAS_HOSTNAME_UUID | Additional suffix for the route. In a shared environment the default routes can be already taken | |JAVA_BUILDPACK_URL | The URL to the Java buildpack to be used by CF | https://github.com/cloudfoundry/java-buildpack.git#v3.8.1 | diff --git a/docs-sources/src/main/asciidoc/CF_MIGRATION.adoc b/docs-sources/src/main/asciidoc/CF_MIGRATION.adoc index cd146cd4..12a53b29 100644 --- a/docs-sources/src/main/asciidoc/CF_MIGRATION.adoc +++ b/docs-sources/src/main/asciidoc/CF_MIGRATION.adoc @@ -39,7 +39,7 @@ We will also be refactoring the application to comply with Spring Cloud Pipeline - https://github.com/ciberkleid/app-config[app-config] - https://github.com/spring-cloud-samples/cloudfoundry-stub-runner-boot[cloudfoundry-stub-runner-boot] - https://github.com/spring-cloud/spring-cloud-pipelines[spring-cloud-pipelines] -* *Pivotal Web Services* - public hosted Cloud Foundry offering http://run.pivotal.io[free trial accounts] and including MySQL, Rabbit, and Pivotal Spring Cloud Services in the Marketplace +* *Pivotal Web Services* - public hosted Cloud Foundry offering https://run.pivotal.io[free trial accounts] and including MySQL, Rabbit, and Pivotal Spring Cloud Services in the Marketplace * *Concourse* * *JFrog Bintray* - public hosted Maven repository offering free https://bintray.com/signup/oss[OSS accounts] * *Client Tools* - on your local machine, you will need an IDE as well as the mvn, git, cf, and fly (Concourse) CLIs diff --git a/docs-sources/src/main/asciidoc/INTRO.adoc b/docs-sources/src/main/asciidoc/INTRO.adoc index 22d0ca14..81e1858f 100644 --- a/docs-sources/src/main/asciidoc/INTRO.adoc +++ b/docs-sources/src/main/asciidoc/INTRO.adoc @@ -182,11 +182,11 @@ microservices. That way the testing setup looks like this: image::{intro-root-docs}/stubbed_dependencies.png[title="We're testing microservices in isolation"] Such an approach to testing and deployment gives the following benefits -(thanks to the usage of http://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract]): +(thanks to the usage of https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract]): - No need to deploy dependant services - The stubs used for the tests ran on a deployed microservice are the same as those used during integration tests -- Those stubs have been tested against the application that produces them (check http://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract] for more information) +- Those stubs have been tested against the application that produces them (check https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html[Spring Cloud Contract] for more information) - We don't have many slow tests running on a deployed application - thus the pipeline gets executed much faster - We don't have to queue deployments - we're testing in isolation thus pipelines don't interfere with each other - We don't have to spawn virtual machines each time for deployment purposes diff --git a/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc b/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc index f33500be..72426533 100644 --- a/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc +++ b/docs-sources/src/main/asciidoc/JENKINS_BLUE_OCEAN.adoc @@ -2,7 +2,7 @@ You can also use the https://jenkins.io/doc/book/pipeline/syntax/[declarative pi https://jenkins.io/projects/blueocean/[Blue Ocean UI]. Here is a step by step guide to run a pipeline via this approach. -The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `http://192.168.99.100:8080/blue`. +The Blue Ocean UI is available under the `blue/` URL. E.g. for Docker Machine based setup `https://192.168.99.100:8080/blue`. {nbsp} {nbsp} @@ -49,5 +49,5 @@ check out this https://issues.jenkins-ci.org/browse/JENKINS-33846[issue] for mor WARNING: Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you'll run out of executors pretty fast. You can check out this https://issues.jenkins-ci.org/browse/JENKINS-36235[issue] for -and this http://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] +and this https://stackoverflow.com/questions/42561241/how-to-wait-for-user-input-in-a-declarative-pipeline-without-blocking-a-heavywei[StackOverflow question] for more information. diff --git a/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc b/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc index ba408198..627d4b93 100644 --- a/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc +++ b/docs-sources/src/main/asciidoc/JENKINS_COMMON.adoc @@ -59,7 +59,7 @@ executing `tools/deploy-infra.sh`. Example for deploying to Artifactory at IP `1 ---- git clone https://github.com/spring-cloud/spring-cloud-pipelines cd spring-cloud-pipelines/ -ARTIFACTORY_URL="http://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh +ARTIFACTORY_URL="https://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh ---- [[setup-settings-xml]] diff --git a/docs-sources/src/main/asciidoc/K8S_DEMO.adoc b/docs-sources/src/main/asciidoc/K8S_DEMO.adoc index 5666c00d..f03e6f8b 100644 --- a/docs-sources/src/main/asciidoc/K8S_DEMO.adoc +++ b/docs-sources/src/main/asciidoc/K8S_DEMO.adoc @@ -113,7 +113,7 @@ alertmanager: ## alertmanager data Persistent Volume access modes ## Must match those of existing PV or dynamic provisioner - ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ ## accessModes: - ReadWriteOnce @@ -156,7 +156,7 @@ alertmanager: replicaCount: 1 ## alertmanager resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -198,7 +198,7 @@ configmapReload: pullPolicy: IfNotPresent ## configmap-reload resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} @@ -233,7 +233,7 @@ kubeStateMetrics: replicaCount: 1 ## kube-state-metrics resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -430,7 +430,7 @@ server: ## Prometheus server data Persistent Volume access modes ## Must match those of existing PV or dynamic provisioner - ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ ## accessModes: - ReadWriteOnce @@ -474,7 +474,7 @@ server: replicaCount: 1 ## Prometheus server resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -564,7 +564,7 @@ pushgateway: replicaCount: 1 ## pushgateway resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -884,7 +884,7 @@ NOTES: ---- Perform the aforementioned steps and add the Grafana's datasource -as Prometheus with URL `http://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local` +as Prometheus with URL `https://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local` You can pick the dashboard via the Grafana ID (2471). This is the default dashboard for the Spring Cloud Pipelines demo apps. diff --git a/docs-sources/src/main/asciidoc/TECH.adoc b/docs-sources/src/main/asciidoc/TECH.adoc index fbe79d54..8c245e11 100644 --- a/docs-sources/src/main/asciidoc/TECH.adoc +++ b/docs-sources/src/main/asciidoc/TECH.adoc @@ -2,7 +2,7 @@ === Prerequisites -As prerequisites you need to have http://www.shellcheck.net/[shellcheck], +As prerequisites you need to have https://www.shellcheck.net/[shellcheck], https://github.com/sstephenson/bats[bats], https://stedolan.github.io/jq/[jq] and https://rubyinstaller.org/downloads/[ruby] installed. If you're on a Linux machine then `bats` and `shellcheck` will be installed for you. diff --git a/docs-sources/src/main/jekyll/_config.yml b/docs-sources/src/main/jekyll/_config.yml index 7e9f67e6..9532dc4c 100644 --- a/docs-sources/src/main/jekyll/_config.yml +++ b/docs-sources/src/main/jekyll/_config.yml @@ -26,10 +26,10 @@ name: Spring Cloud Pipelines project: spring-cloud-pipelines # Project github URL -github_repo_url: http://github.com/spring-cloud/spring-cloud-pipelines +github_repo_url: https://github.com/spring-cloud/spring-cloud-pipelines # Project forum URL -forum: http://stackoverflow.com/questions/tagged/spring-cloud +forum: https://stackoverflow.com/questions/tagged/spring-cloud # If you want to include a custom pom.xml or gradle template set these value to true and add _include files custom_pom_template: true diff --git a/docs-sources/src/main/jekyll/_includes/download_widget.md b/docs-sources/src/main/jekyll/_includes/download_widget.md index 8bd1ec8d..03d7bbb5 100644 --- a/docs-sources/src/main/jekyll/_includes/download_widget.md +++ b/docs-sources/src/main/jekyll/_includes/download_widget.md @@ -10,8 +10,8 @@ Download

The recommended way to get started using {{ site.project }} in your project is with a dependency management system – the snippet below can be copied and pasted into your build. Need help? See our getting started guides - on building with Maven and - Gradle. + on building with Maven and + Gradle.

diff --git a/docs-sources/src/main/jekyll/_sample-pages/project.html b/docs-sources/src/main/jekyll/_sample-pages/project.html index 0fdee0b0..f02ef093 100644 --- a/docs-sources/src/main/jekyll/_sample-pages/project.html +++ b/docs-sources/src/main/jekyll/_sample-pages/project.html @@ -14,7 +14,7 @@ icon: github - name: Issues (JIRA) - url: http://jira.springsource.org/browse/DATAJPA + url: https://jira.springsource.org/browse/DATAJPA icon: tracking - name: CI (Bamboo) @@ -22,11 +22,11 @@ icon: ci - name: Forum - url: http://forum.spring.io/forum/spring-projects/data + url: https://forum.spring.io/forum/spring-projects/data icon: forum - name: StackOverflow - url: http://stackoverflow.com/questions/tagged/spring-data-jpa + url: https://stackoverflow.com/questions/tagged/spring-data-jpa icon: stackoverflow - name: Metrics (SonarQube) diff --git a/docs-sources/src/main/jekyll/_sample-pages/project_group.html b/docs-sources/src/main/jekyll/_sample-pages/project_group.html index 3b9ec538..313d22b5 100644 --- a/docs-sources/src/main/jekyll/_sample-pages/project_group.html +++ b/docs-sources/src/main/jekyll/_sample-pages/project_group.html @@ -16,42 +16,42 @@ {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% endcapture %} diff --git a/docs-sources/src/main/jekyll/bootstrap/css/bootstrap-select.css b/docs-sources/src/main/jekyll/bootstrap/css/bootstrap-select.css index 42a9ba37..ae162517 100644 --- a/docs-sources/src/main/jekyll/bootstrap/css/bootstrap-select.css +++ b/docs-sources/src/main/jekyll/bootstrap/css/bootstrap-select.css @@ -1,6 +1,6 @@ /*! * bootstrap-select v1.1.1 - * http://silviomoreto.github.io/bootstrap-select/ + * https://silviomoreto.github.io/bootstrap-select/ * * Copyright 2013 bootstrap-select * Licensed under the MIT license diff --git a/docs-sources/src/main/jekyll/bootstrap/js/bootstrap-select.js b/docs-sources/src/main/jekyll/bootstrap/js/bootstrap-select.js index f0d4be01..8361f157 100644 --- a/docs-sources/src/main/jekyll/bootstrap/js/bootstrap-select.js +++ b/docs-sources/src/main/jekyll/bootstrap/js/bootstrap-select.js @@ -1,6 +1,6 @@ /*! * bootstrap-select v1.1.1 - * http://silviomoreto.github.io/bootstrap-select/ + * https://silviomoreto.github.io/bootstrap-select/ * * Copyright 2013 bootstrap-select * Licensed under the MIT license diff --git a/docs-sources/src/main/jekyll/bootstrap/js/bootstrap.js b/docs-sources/src/main/jekyll/bootstrap/js/bootstrap.js index 3c639f57..ee5a1458 100644 --- a/docs-sources/src/main/jekyll/bootstrap/js/bootstrap.js +++ b/docs-sources/src/main/jekyll/bootstrap/js/bootstrap.js @@ -1,6 +1,6 @@ /* =================================================== * bootstrap-transition.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#transitions + * https://twitter.github.com/bootstrap/javascript.html#transitions * =================================================== * Copyright 2012 Twitter, Inc. * @@ -23,7 +23,7 @@ "use strict"; // jshint ;_; - /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + /* CSS TRANSITION SUPPORT (https://www.modernizr.com/) * ======================================================= */ $(function () { @@ -59,7 +59,7 @@ }(window.jQuery);/* ========================================================== * bootstrap-alert.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#alerts + * https://twitter.github.com/bootstrap/javascript.html#alerts * ========================================================== * Copyright 2012 Twitter, Inc. * @@ -157,7 +157,7 @@ }(window.jQuery);/* ============================================================ * bootstrap-button.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#buttons + * https://twitter.github.com/bootstrap/javascript.html#buttons * ============================================================ * Copyright 2012 Twitter, Inc. * @@ -261,7 +261,7 @@ }(window.jQuery);/* ========================================================== * bootstrap-carousel.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#carousel + * https://twitter.github.com/bootstrap/javascript.html#carousel * ========================================================== * Copyright 2012 Twitter, Inc. * @@ -467,7 +467,7 @@ }(window.jQuery);/* ============================================================= * bootstrap-collapse.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#collapse + * https://twitter.github.com/bootstrap/javascript.html#collapse * ============================================================= * Copyright 2012 Twitter, Inc. * @@ -633,7 +633,7 @@ }(window.jQuery);/* ============================================================ * bootstrap-dropdown.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * https://twitter.github.com/bootstrap/javascript.html#dropdowns * ============================================================ * Copyright 2012 Twitter, Inc. * @@ -802,7 +802,7 @@ }(window.jQuery); /* ========================================================= * bootstrap-modal.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#modals + * https://twitter.github.com/bootstrap/javascript.html#modals * ========================================================= * Copyright 2012 Twitter, Inc. * @@ -1049,7 +1049,7 @@ }(window.jQuery); /* =========================================================== * bootstrap-tooltip.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#tooltips + * https://twitter.github.com/bootstrap/javascript.html#tooltips * Inspired by the original jQuery.tipsy by Jason Frame * =========================================================== * Copyright 2012 Twitter, Inc. @@ -1410,7 +1410,7 @@ }(window.jQuery); /* =========================================================== * bootstrap-popover.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#popovers + * https://twitter.github.com/bootstrap/javascript.html#popovers * =========================================================== * Copyright 2012 Twitter, Inc. * @@ -1524,7 +1524,7 @@ }(window.jQuery); /* ============================================================= * bootstrap-scrollspy.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * https://twitter.github.com/bootstrap/javascript.html#scrollspy * ============================================================= * Copyright 2012 Twitter, Inc. * @@ -1685,7 +1685,7 @@ }(window.jQuery);/* ======================================================== * bootstrap-tab.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#tabs + * https://twitter.github.com/bootstrap/javascript.html#tabs * ======================================================== * Copyright 2012 Twitter, Inc. * @@ -1828,7 +1828,7 @@ }(window.jQuery);/* ============================================================= * bootstrap-typeahead.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#typeahead + * https://twitter.github.com/bootstrap/javascript.html#typeahead * ============================================================= * Copyright 2012 Twitter, Inc. * @@ -2163,7 +2163,7 @@ }(window.jQuery); /* ========================================================== * bootstrap-affix.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#affix + * https://twitter.github.com/bootstrap/javascript.html#affix * ========================================================== * Copyright 2012 Twitter, Inc. * diff --git a/docs-sources/src/main/jekyll/css/main.css.css b/docs-sources/src/main/jekyll/css/main.css.css index 9cc0f12d..f6ca3df1 100644 --- a/docs-sources/src/main/jekyll/css/main.css.css +++ b/docs-sources/src/main/jekyll/css/main.css.css @@ -427,7 +427,7 @@ input.floating-input:focus { .bottom-slide--container .bottom-slider--image { background-image: - url("http://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg"); + url("https://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg"); background-size: cover; height: 137px; transition: all 0.33s; diff --git a/docs-sources/src/main/jekyll/font-awesome/css/font-awesome-ie7.css b/docs-sources/src/main/jekyll/font-awesome/css/font-awesome-ie7.css index 507ebeb3..229a99e2 100644 --- a/docs-sources/src/main/jekyll/font-awesome/css/font-awesome-ie7.css +++ b/docs-sources/src/main/jekyll/font-awesome/css/font-awesome-ie7.css @@ -3,25 +3,25 @@ * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be - * found at http://fontawesome.io. Stay up to date on Twitter at - * http://twitter.com/fontawesome. + * found at https://fontawesome.com?from=io. Stay up to date on Twitter at + * https://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL + * https://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - - * http://opensource.org/licenses/mit-license.html + * https://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - - * http://creativecommons.org/licenses/by/3.0/ + * https://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fontawesome.io" + * "Font Awesome by Dave Gandy - https://fontawesome.com?from=io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io - * Twitter: http://twitter.com/byscuits - * Work: Lead Product Designer @ Kyruus - http://kyruus.com + * Twitter: https://twitter.com/byscuits + * Work: Lead Product Designer @ Kyruus - https://www.kyruus.com/ */ .icon-large { font-size: 1.3333333333333333em; diff --git a/docs-sources/src/main/jekyll/font-awesome/css/font-awesome.css b/docs-sources/src/main/jekyll/font-awesome/css/font-awesome.css index 30a96b22..70d5e6a0 100644 --- a/docs-sources/src/main/jekyll/font-awesome/css/font-awesome.css +++ b/docs-sources/src/main/jekyll/font-awesome/css/font-awesome.css @@ -3,25 +3,25 @@ * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be - * found at http://fontawesome.io. Stay up to date on Twitter at - * http://twitter.com/fontawesome. + * found at https://fontawesome.com?from=io. Stay up to date on Twitter at + * https://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL + * https://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - - * http://opensource.org/licenses/mit-license.html + * https://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - - * http://creativecommons.org/licenses/by/3.0/ + * https://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fontawesome.io" + * "Font Awesome by Dave Gandy - https://fontawesome.com?from=io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io - * Twitter: http://twitter.com/byscuits - * Work: Lead Product Designer @ Kyruus - http://kyruus.com + * Twitter: https://twitter.com/byscuits + * Work: Lead Product Designer @ Kyruus - https://www.kyruus.com/ */ /* FONT PATH * -------------------------- */ diff --git a/docs-sources/src/main/jekyll/index.html b/docs-sources/src/main/jekyll/index.html index edcca56b..1b1b2ded 100644 --- a/docs-sources/src/main/jekyll/index.html +++ b/docs-sources/src/main/jekyll/index.html @@ -14,7 +14,7 @@ icon: github - name: StackOverflow - url: http://stackoverflow.com/questions/tagged/spring-cloud + url: https://stackoverflow.com/questions/tagged/spring-cloud icon: stackoverflow --- @@ -68,11 +68,11 @@ The opinionated pipelines look like this: -![Flow in Concourse](http://cloud.spring.io/spring-cloud-pipelines/images/intro/flow_concourse.png) +![Flow in Concourse](https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow_concourse.png) *Flow in Concourse* -![Flow in Jenkins](http://cloud.spring.io/spring-cloud-pipelines/images/intro/flow.png) +![Flow in Jenkins](https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow.png) *Flow in Jenkins* @@ -97,7 +97,7 @@ - [Github Analytics Stub Runner Boot](https://github.com/spring-cloud-samples/github-analytics-stub-runner-boot) - Stub Runner Boot server to be used for tests with Github Analytics. Uses Eureka and Messaging. This is an infrastructure application. -For the detailed information please check out the [docs](http://cloud.spring.io/spring-cloud/spring-cloud-pipelines.html). +For the detailed information please check out the [docs](https://cloud.spring.io/spring-cloud/spring-cloud-pipelines.html). #### Concourse @@ -117,7 +117,7 @@ * Unpause and run the pipeline in Concourse! * Once the pipeline passes you can setup a new pipeline for `github-analytics` -For the Kubernetes step by step guide just check out the [documentation](http://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#concourse-pipeline-k8s). +For the Kubernetes step by step guide just check out the [documentation](https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#concourse-pipeline-k8s). #### Jenkins @@ -131,7 +131,7 @@ * Go to Jenkins and click the `jenkins-pipeline-seed` in order to generate the pipeline jobs * Go to the `github-webhook` pipeline view and click the `play` button to run the pipeline -For the Kubernetes step by step guide just check out the [documentation](http://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#jenkins-pipeline-k8s). +For the Kubernetes step by step guide just check out the [documentation](https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#jenkins-pipeline-k8s). ### Adjusting the pipelines to your needs diff --git a/docs-sources/src/main/jekyll/js/backbone.js b/docs-sources/src/main/jekyll/js/backbone.js index 3512d42f..7197d646 100644 --- a/docs-sources/src/main/jekyll/js/backbone.js +++ b/docs-sources/src/main/jekyll/js/backbone.js @@ -3,7 +3,7 @@ // (c) 2010-2013 Jeremy Ashkenas, DocumentCloud Inc. // Backbone may be freely distributed under the MIT license. // For all details and documentation: -// http://backbonejs.org +// https://backbonejs.org (function(){ @@ -1298,7 +1298,7 @@ // ---------------- // Handles cross-browser history management, based on either - // [pushState](http://diveintohtml5.info/history.html) and real URLs, or + // [pushState](https://diveintohtml5.info/history.html) and real URLs, or // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange) // and URL fragments. If the browser supports neither (old IE, natch), // falls back to polling. diff --git a/docs-sources/src/main/jekyll/js/jquery.js b/docs-sources/src/main/jekyll/js/jquery.js index 6f8c9675..89181508 100644 --- a/docs-sources/src/main/jekyll/js/jquery.js +++ b/docs-sources/src/main/jekyll/js/jquery.js @@ -1,13 +1,13 @@ /*! * jQuery JavaScript Library v1.10.1 - * http://jquery.com/ + * https://jquery.com/ * * Includes Sizzle.js - * http://sizzlejs.com/ + * https://sizzlejs.com/ * * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors * Released under the MIT license - * http://jquery.org/license + * https://jquery.org/license * * Date: 2013-05-30T21:49Z */ @@ -561,7 +561,7 @@ jQuery.extend({ if ( data ) { // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js + // Logic borrowed from https://json.org/json2.js if ( rvalidchars.test( data.replace( rvalidescape, "@" ) .replace( rvalidtokens, "]" ) .replace( rvalidbraces, "")) ) { @@ -602,7 +602,7 @@ jQuery.extend({ // Evaluates a script in a global context // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + // https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { if ( data && jQuery.trim( data ) ) { // We use execScript on Internet Explorer @@ -921,7 +921,7 @@ jQuery.ready.promise = function( obj ) { // Catch cases where $(document).ready() is called after the browser event has already occurred. // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + // discovered by ChrisS here: https://bugs.jquery.com/ticket/12282#comment:15 if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready setTimeout( jQuery.ready ); @@ -1001,11 +1001,11 @@ function isArraylike( obj ) { rootjQuery = jQuery(document); /*! * Sizzle CSS Selector Engine v1.9.4-pre - * http://sizzlejs.com/ + * https://sizzlejs.com/ * * Copyright 2013 jQuery Foundation, Inc. and other contributors * Released under the MIT license - * http://jquery.org/license + * https://jquery.org/license * * Date: 2013-05-27 */ @@ -1069,17 +1069,17 @@ var i, // Regular expressions - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + // Whitespace characters https://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters + // https://www.w3.org/TR/css3-syntax/#characters characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + // An unquoted value should be a CSS identifier https://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = characterEncoding.replace( "w", "w#" ), - // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + // Acceptable operators https://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", @@ -1129,7 +1129,7 @@ var i, rescape = /'|\\/g, - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + // CSS escapes https://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), funescape = function( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; @@ -1376,7 +1376,7 @@ function boolHandler( elem, name ) { /** * Fetches attributes without interpolation - * http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx + * https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx * @param {Element} elem * @param {String} name */ @@ -1653,7 +1653,7 @@ setDocument = Sizzle.setDocument = function( node ) { // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 + // See https://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( (support.qsa = isNative(doc.querySelectorAll)) ) { @@ -1664,7 +1664,7 @@ setDocument = Sizzle.setDocument = function( node ) { // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 + // https://bugs.jquery.com/ticket/12359 div.innerHTML = ""; // Support: IE8 @@ -1674,7 +1674,7 @@ setDocument = Sizzle.setDocument = function( node ) { } // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); @@ -2219,7 +2219,7 @@ Expr = Sizzle.selectors = { "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes + // https://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, @@ -2303,7 +2303,7 @@ Expr = Sizzle.selectors = { // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo + // https://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test(lang || "") ) { @@ -2350,7 +2350,7 @@ Expr = Sizzle.selectors = { "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, @@ -2367,7 +2367,7 @@ Expr = Sizzle.selectors = { // Contents "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo + // https://www.w3.org/TR/selectors/#empty-pseudo // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), // not comment, processing instructions, or others // Thanks to Diego Perini for the nodeName shortcut @@ -4024,7 +4024,7 @@ jQuery.fn.extend({ }); }, // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ + // http://blindsignals.com delay: function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || "fx"; @@ -4501,7 +4501,7 @@ jQuery.extend({ tabIndex: { get: function( elem ) { // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ // Use proper attribute retrieval(#12072) var tabindex = jQuery.find.attr( elem, "tabindex" ); @@ -4641,7 +4641,7 @@ if ( !getSetAttribute ) { // Some attributes require a special call on IE -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if ( !jQuery.support.hrefNormalized ) { // href/src property should get the full normalized URL (#10299/#12915) jQuery.each([ "href", "src" ], function( i, name ) { @@ -5413,7 +5413,7 @@ jQuery.Event = function( src, props ) { }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, @@ -6516,7 +6516,7 @@ jQuery.extend({ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); @@ -7120,7 +7120,7 @@ if ( window.getComputedStyle ) { // A tribute to the "awesome hack by Dean Edwards" // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + // this is against the CSSOM draft spec: https://dev.w3.org/csswg/cssom/#resolved-values if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { // Remember the original values @@ -8729,7 +8729,7 @@ if ( xhrSupported ) { // Firefox throws exceptions when accessing properties // of an xhr when a network error occurred - // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + // https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) try { // Was never called and is aborted or complete diff --git a/docs-sources/src/main/jekyll/js/test/SpecRunner.html b/docs-sources/src/main/jekyll/js/test/SpecRunner.html index 877cfa2b..66bdd3b6 100644 --- a/docs-sources/src/main/jekyll/js/test/SpecRunner.html +++ b/docs-sources/src/main/jekyll/js/test/SpecRunner.html @@ -4,7 +4,7 @@ --- + "https://www.w3.org/TR/html4/loose.dtd"> Jasmine Spec Runner diff --git a/docs-sources/src/main/jekyll/js/test/lib/support/mock-ajax.js b/docs-sources/src/main/jekyll/js/test/lib/support/mock-ajax.js index 5c99627a..bf17886f 100644 --- a/docs-sources/src/main/jekyll/js/test/lib/support/mock-ajax.js +++ b/docs-sources/src/main/jekyll/js/test/lib/support/mock-ajax.js @@ -4,9 +4,9 @@ Supports both Prototype.js and jQuery. - http://github.com/pivotal/jasmine-ajax + https://github.com/pivotal/jasmine-ajax - Jasmine Home page: http://pivotal.github.com/jasmine + Jasmine Home page: https://pivotal.github.com/jasmine Copyright (c) 2008-2010 Pivotal Labs diff --git a/docs-sources/src/main/jekyll/js/test/spec/QuickStartWidgetSpec.js b/docs-sources/src/main/jekyll/js/test/spec/QuickStartWidgetSpec.js index b5587776..3bafa1d0 100644 --- a/docs-sources/src/main/jekyll/js/test/spec/QuickStartWidgetSpec.js +++ b/docs-sources/src/main/jekyll/js/test/spec/QuickStartWidgetSpec.js @@ -6,18 +6,18 @@ describe("QuickStartWidget", function () { var project = new Spring.Project({ "id": "spring-data-jpa", "name": "Spring Data JPA", - "repoUrl": "http://github.com/SpringSource/spring-data-jpa", - "siteUrl": "http://projects.spring.io/spring-data-jpa", + "repoUrl": "https://github.com/SpringSource/spring-data-jpa", + "siteUrl": "https://projects.spring.io/spring-data-jpa", "projectReleases": [ { - "refDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/", - "apiDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/", + "refDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/", + "apiDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/", "groupId": "org.springframework.data", "artifactId": "spring-data-jpa", "repository": { "id": "spring-milestones", "name": "Spring Milestones", - "url": "http://repo.spring.io/milestone", + "url": "https://repo.spring.io/milestone", "snapshotsEnabled": false }, "version": "1.4.0.RC1", @@ -28,8 +28,8 @@ describe("QuickStartWidget", function () { "versionDisplayName": "1.4.0.RC1" }, { - "refDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/", - "apiDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/", + "refDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/", + "apiDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/", "groupId": "org.springframework.data", "artifactId": "spring-data-jpa", "repository": null, @@ -73,7 +73,7 @@ describe("QuickStartWidget", function () { expect($('#maven_widget')).toContainText("spring-milestones"); expect($('#maven_widget')).toContainText("Spring Milestones"); - expect($('#maven_widget')).toContainText("http://repo.spring.io/milestone"); + expect($('#maven_widget')).toContainText("https://repo.spring.io/milestone"); expect($('#maven_widget')).toContainText("false"); }); @@ -83,7 +83,7 @@ describe("QuickStartWidget", function () { expect($('#maven_widget')).not.toContainText("repository"); expect($('#maven_widget')).not.toContainText("spring-milestones"); expect($('#maven_widget')).not.toContainText("Spring Milestones"); - expect($('#maven_widget')).not.toContainText("http://repo.spring.io/milestone"); + expect($('#maven_widget')).not.toContainText("https://repo.spring.io/milestone"); expect($('#maven_widget')).not.toContainText("false"); }); }); @@ -102,7 +102,7 @@ describe("QuickStartWidget", function () { $('#jasmine_content select').val(0).change(); expect($('#maven_widget')).toContainText("repositories"); - expect($('#maven_widget')).toContainText("http://repo.spring.io/milestone"); + expect($('#maven_widget')).toContainText("https://repo.spring.io/milestone"); }); }); }); diff --git a/docs-sources/src/main/jekyll/js/underscore.js b/docs-sources/src/main/jekyll/js/underscore.js index 7d4ee27c..f5df8e03 100644 --- a/docs-sources/src/main/jekyll/js/underscore.js +++ b/docs-sources/src/main/jekyll/js/underscore.js @@ -1,5 +1,5 @@ // Underscore.js 1.5.1 -// http://underscorejs.org +// https://underscorejs.org // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. @@ -554,7 +554,7 @@ // Generate an integer Array containing an arithmetic progression. A port of // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). + // [the Python documentation](https://docs.python.org/library/functions.html#range). _.range = function(start, stop, step) { if (arguments.length <= 1) { stop = start || 0; @@ -844,7 +844,7 @@ // Internal recursive comparison function for `isEqual`. var eq = function(a, b, aStack, bStack) { // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). if (a === b) return a !== 0 || 1 / a == 1 / b; // A strict comparison is necessary because `null == undefined`. if (a == null || b == null) return a === b; diff --git a/docs/_config.yml b/docs/_config.yml index 7e9f67e6..9532dc4c 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -26,10 +26,10 @@ name: Spring Cloud Pipelines project: spring-cloud-pipelines # Project github URL -github_repo_url: http://github.com/spring-cloud/spring-cloud-pipelines +github_repo_url: https://github.com/spring-cloud/spring-cloud-pipelines # Project forum URL -forum: http://stackoverflow.com/questions/tagged/spring-cloud +forum: https://stackoverflow.com/questions/tagged/spring-cloud # If you want to include a custom pom.xml or gradle template set these value to true and add _include files custom_pom_template: true diff --git a/docs/_includes/download_widget.md b/docs/_includes/download_widget.md index 8bd1ec8d..03d7bbb5 100644 --- a/docs/_includes/download_widget.md +++ b/docs/_includes/download_widget.md @@ -10,8 +10,8 @@ Download

The recommended way to get started using {{ site.project }} in your project is with a dependency management system – the snippet below can be copied and pasted into your build. Need help? See our getting started guides - on building with Maven and - Gradle. + on building with Maven and + Gradle.

diff --git a/docs/_sample-pages/project.html b/docs/_sample-pages/project.html index 0fdee0b0..f02ef093 100644 --- a/docs/_sample-pages/project.html +++ b/docs/_sample-pages/project.html @@ -14,7 +14,7 @@ icon: github - name: Issues (JIRA) - url: http://jira.springsource.org/browse/DATAJPA + url: https://jira.springsource.org/browse/DATAJPA icon: tracking - name: CI (Bamboo) @@ -22,11 +22,11 @@ icon: ci - name: Forum - url: http://forum.spring.io/forum/spring-projects/data + url: https://forum.spring.io/forum/spring-projects/data icon: forum - name: StackOverflow - url: http://stackoverflow.com/questions/tagged/spring-data-jpa + url: https://stackoverflow.com/questions/tagged/spring-data-jpa icon: stackoverflow - name: Metrics (SonarQube) diff --git a/docs/_sample-pages/project_group.html b/docs/_sample-pages/project_group.html index 3b9ec538..313d22b5 100644 --- a/docs/_sample-pages/project_group.html +++ b/docs/_sample-pages/project_group.html @@ -16,42 +16,42 @@ {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% capture project_description %} Hearts of the stars brain is the seed of intelligence consciousness extraplanetary shores of the cosmic ocean! As a patch of light paroxysm of global death? Inconspicuous motes of rock and gas. {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/sprinframework" project_title="Spring Framework" project_description=project_description %} {% capture project_description %} This is Apache Hadoop Hadoop! {% endcapture %} -{% include project_block.md site_url="http://www.spring.io" repo_url="http://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} +{% include project_block.md site_url="https://www.spring.io" repo_url="https://github.com/spring_hadoop" project_title="Apache Hadoop" project_description=project_description %} {% endcapture %} diff --git a/docs/bootstrap/css/bootstrap-select.css b/docs/bootstrap/css/bootstrap-select.css index 42a9ba37..ae162517 100644 --- a/docs/bootstrap/css/bootstrap-select.css +++ b/docs/bootstrap/css/bootstrap-select.css @@ -1,6 +1,6 @@ /*! * bootstrap-select v1.1.1 - * http://silviomoreto.github.io/bootstrap-select/ + * https://silviomoreto.github.io/bootstrap-select/ * * Copyright 2013 bootstrap-select * Licensed under the MIT license diff --git a/docs/bootstrap/js/bootstrap-select.js b/docs/bootstrap/js/bootstrap-select.js index f0d4be01..8361f157 100644 --- a/docs/bootstrap/js/bootstrap-select.js +++ b/docs/bootstrap/js/bootstrap-select.js @@ -1,6 +1,6 @@ /*! * bootstrap-select v1.1.1 - * http://silviomoreto.github.io/bootstrap-select/ + * https://silviomoreto.github.io/bootstrap-select/ * * Copyright 2013 bootstrap-select * Licensed under the MIT license diff --git a/docs/bootstrap/js/bootstrap.js b/docs/bootstrap/js/bootstrap.js index 3c639f57..ee5a1458 100644 --- a/docs/bootstrap/js/bootstrap.js +++ b/docs/bootstrap/js/bootstrap.js @@ -1,6 +1,6 @@ /* =================================================== * bootstrap-transition.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#transitions + * https://twitter.github.com/bootstrap/javascript.html#transitions * =================================================== * Copyright 2012 Twitter, Inc. * @@ -23,7 +23,7 @@ "use strict"; // jshint ;_; - /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + /* CSS TRANSITION SUPPORT (https://www.modernizr.com/) * ======================================================= */ $(function () { @@ -59,7 +59,7 @@ }(window.jQuery);/* ========================================================== * bootstrap-alert.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#alerts + * https://twitter.github.com/bootstrap/javascript.html#alerts * ========================================================== * Copyright 2012 Twitter, Inc. * @@ -157,7 +157,7 @@ }(window.jQuery);/* ============================================================ * bootstrap-button.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#buttons + * https://twitter.github.com/bootstrap/javascript.html#buttons * ============================================================ * Copyright 2012 Twitter, Inc. * @@ -261,7 +261,7 @@ }(window.jQuery);/* ========================================================== * bootstrap-carousel.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#carousel + * https://twitter.github.com/bootstrap/javascript.html#carousel * ========================================================== * Copyright 2012 Twitter, Inc. * @@ -467,7 +467,7 @@ }(window.jQuery);/* ============================================================= * bootstrap-collapse.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#collapse + * https://twitter.github.com/bootstrap/javascript.html#collapse * ============================================================= * Copyright 2012 Twitter, Inc. * @@ -633,7 +633,7 @@ }(window.jQuery);/* ============================================================ * bootstrap-dropdown.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * https://twitter.github.com/bootstrap/javascript.html#dropdowns * ============================================================ * Copyright 2012 Twitter, Inc. * @@ -802,7 +802,7 @@ }(window.jQuery); /* ========================================================= * bootstrap-modal.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#modals + * https://twitter.github.com/bootstrap/javascript.html#modals * ========================================================= * Copyright 2012 Twitter, Inc. * @@ -1049,7 +1049,7 @@ }(window.jQuery); /* =========================================================== * bootstrap-tooltip.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#tooltips + * https://twitter.github.com/bootstrap/javascript.html#tooltips * Inspired by the original jQuery.tipsy by Jason Frame * =========================================================== * Copyright 2012 Twitter, Inc. @@ -1410,7 +1410,7 @@ }(window.jQuery); /* =========================================================== * bootstrap-popover.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#popovers + * https://twitter.github.com/bootstrap/javascript.html#popovers * =========================================================== * Copyright 2012 Twitter, Inc. * @@ -1524,7 +1524,7 @@ }(window.jQuery); /* ============================================================= * bootstrap-scrollspy.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * https://twitter.github.com/bootstrap/javascript.html#scrollspy * ============================================================= * Copyright 2012 Twitter, Inc. * @@ -1685,7 +1685,7 @@ }(window.jQuery);/* ======================================================== * bootstrap-tab.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#tabs + * https://twitter.github.com/bootstrap/javascript.html#tabs * ======================================================== * Copyright 2012 Twitter, Inc. * @@ -1828,7 +1828,7 @@ }(window.jQuery);/* ============================================================= * bootstrap-typeahead.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#typeahead + * https://twitter.github.com/bootstrap/javascript.html#typeahead * ============================================================= * Copyright 2012 Twitter, Inc. * @@ -2163,7 +2163,7 @@ }(window.jQuery); /* ========================================================== * bootstrap-affix.js v2.3.2 - * http://twitter.github.com/bootstrap/javascript.html#affix + * https://twitter.github.com/bootstrap/javascript.html#affix * ========================================================== * Copyright 2012 Twitter, Inc. * diff --git a/docs/css/main.css.css b/docs/css/main.css.css index 9cc0f12d..f6ca3df1 100644 --- a/docs/css/main.css.css +++ b/docs/css/main.css.css @@ -427,7 +427,7 @@ input.floating-input:focus { .bottom-slide--container .bottom-slider--image { background-image: - url("http://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg"); + url("https://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg"); background-size: cover; height: 137px; transition: all 0.33s; diff --git a/docs/font-awesome/css/font-awesome-ie7.css b/docs/font-awesome/css/font-awesome-ie7.css index 507ebeb3..229a99e2 100644 --- a/docs/font-awesome/css/font-awesome-ie7.css +++ b/docs/font-awesome/css/font-awesome-ie7.css @@ -3,25 +3,25 @@ * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be - * found at http://fontawesome.io. Stay up to date on Twitter at - * http://twitter.com/fontawesome. + * found at https://fontawesome.com?from=io. Stay up to date on Twitter at + * https://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL + * https://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - - * http://opensource.org/licenses/mit-license.html + * https://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - - * http://creativecommons.org/licenses/by/3.0/ + * https://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fontawesome.io" + * "Font Awesome by Dave Gandy - https://fontawesome.com?from=io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io - * Twitter: http://twitter.com/byscuits - * Work: Lead Product Designer @ Kyruus - http://kyruus.com + * Twitter: https://twitter.com/byscuits + * Work: Lead Product Designer @ Kyruus - https://www.kyruus.com/ */ .icon-large { font-size: 1.3333333333333333em; diff --git a/docs/font-awesome/css/font-awesome.css b/docs/font-awesome/css/font-awesome.css index 30a96b22..70d5e6a0 100644 --- a/docs/font-awesome/css/font-awesome.css +++ b/docs/font-awesome/css/font-awesome.css @@ -3,25 +3,25 @@ * the iconic font designed for Bootstrap * ------------------------------------------------------------------------------ * The full suite of pictographic icons, examples, and documentation can be - * found at http://fontawesome.io. Stay up to date on Twitter at - * http://twitter.com/fontawesome. + * found at https://fontawesome.com?from=io. Stay up to date on Twitter at + * https://twitter.com/fontawesome. * * License * ------------------------------------------------------------------------------ * - The Font Awesome font is licensed under SIL OFL 1.1 - - * http://scripts.sil.org/OFL + * https://scripts.sil.org/OFL * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - - * http://opensource.org/licenses/mit-license.html + * https://opensource.org/licenses/mit-license.html * - Font Awesome documentation licensed under CC BY 3.0 - - * http://creativecommons.org/licenses/by/3.0/ + * https://creativecommons.org/licenses/by/3.0/ * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: - * "Font Awesome by Dave Gandy - http://fontawesome.io" + * "Font Awesome by Dave Gandy - https://fontawesome.com?from=io" * * Author - Dave Gandy * ------------------------------------------------------------------------------ * Email: dave@fontawesome.io - * Twitter: http://twitter.com/byscuits - * Work: Lead Product Designer @ Kyruus - http://kyruus.com + * Twitter: https://twitter.com/byscuits + * Work: Lead Product Designer @ Kyruus - https://www.kyruus.com/ */ /* FONT PATH * -------------------------- */ diff --git a/docs/index.html b/docs/index.html index edcca56b..1b1b2ded 100644 --- a/docs/index.html +++ b/docs/index.html @@ -14,7 +14,7 @@ icon: github - name: StackOverflow - url: http://stackoverflow.com/questions/tagged/spring-cloud + url: https://stackoverflow.com/questions/tagged/spring-cloud icon: stackoverflow --- @@ -68,11 +68,11 @@ The opinionated pipelines look like this: -![Flow in Concourse](http://cloud.spring.io/spring-cloud-pipelines/images/intro/flow_concourse.png) +![Flow in Concourse](https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow_concourse.png) *Flow in Concourse* -![Flow in Jenkins](http://cloud.spring.io/spring-cloud-pipelines/images/intro/flow.png) +![Flow in Jenkins](https://cloud.spring.io/spring-cloud-pipelines/images/intro/flow.png) *Flow in Jenkins* @@ -97,7 +97,7 @@ - [Github Analytics Stub Runner Boot](https://github.com/spring-cloud-samples/github-analytics-stub-runner-boot) - Stub Runner Boot server to be used for tests with Github Analytics. Uses Eureka and Messaging. This is an infrastructure application. -For the detailed information please check out the [docs](http://cloud.spring.io/spring-cloud/spring-cloud-pipelines.html). +For the detailed information please check out the [docs](https://cloud.spring.io/spring-cloud/spring-cloud-pipelines.html). #### Concourse @@ -117,7 +117,7 @@ * Unpause and run the pipeline in Concourse! * Once the pipeline passes you can setup a new pipeline for `github-analytics` -For the Kubernetes step by step guide just check out the [documentation](http://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#concourse-pipeline-k8s). +For the Kubernetes step by step guide just check out the [documentation](https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#concourse-pipeline-k8s). #### Jenkins @@ -131,7 +131,7 @@ * Go to Jenkins and click the `jenkins-pipeline-seed` in order to generate the pipeline jobs * Go to the `github-webhook` pipeline view and click the `play` button to run the pipeline -For the Kubernetes step by step guide just check out the [documentation](http://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#jenkins-pipeline-k8s). +For the Kubernetes step by step guide just check out the [documentation](https://cloud.spring.io/spring-cloud-pipelines/single/spring-cloud-pipelines.html#jenkins-pipeline-k8s). ### Adjusting the pipelines to your needs diff --git a/docs/js/backbone.js b/docs/js/backbone.js index 3512d42f..7197d646 100644 --- a/docs/js/backbone.js +++ b/docs/js/backbone.js @@ -3,7 +3,7 @@ // (c) 2010-2013 Jeremy Ashkenas, DocumentCloud Inc. // Backbone may be freely distributed under the MIT license. // For all details and documentation: -// http://backbonejs.org +// https://backbonejs.org (function(){ @@ -1298,7 +1298,7 @@ // ---------------- // Handles cross-browser history management, based on either - // [pushState](http://diveintohtml5.info/history.html) and real URLs, or + // [pushState](https://diveintohtml5.info/history.html) and real URLs, or // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange) // and URL fragments. If the browser supports neither (old IE, natch), // falls back to polling. diff --git a/docs/js/jquery.js b/docs/js/jquery.js index 6f8c9675..89181508 100644 --- a/docs/js/jquery.js +++ b/docs/js/jquery.js @@ -1,13 +1,13 @@ /*! * jQuery JavaScript Library v1.10.1 - * http://jquery.com/ + * https://jquery.com/ * * Includes Sizzle.js - * http://sizzlejs.com/ + * https://sizzlejs.com/ * * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors * Released under the MIT license - * http://jquery.org/license + * https://jquery.org/license * * Date: 2013-05-30T21:49Z */ @@ -561,7 +561,7 @@ jQuery.extend({ if ( data ) { // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js + // Logic borrowed from https://json.org/json2.js if ( rvalidchars.test( data.replace( rvalidescape, "@" ) .replace( rvalidtokens, "]" ) .replace( rvalidbraces, "")) ) { @@ -602,7 +602,7 @@ jQuery.extend({ // Evaluates a script in a global context // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + // https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { if ( data && jQuery.trim( data ) ) { // We use execScript on Internet Explorer @@ -921,7 +921,7 @@ jQuery.ready.promise = function( obj ) { // Catch cases where $(document).ready() is called after the browser event has already occurred. // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + // discovered by ChrisS here: https://bugs.jquery.com/ticket/12282#comment:15 if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready setTimeout( jQuery.ready ); @@ -1001,11 +1001,11 @@ function isArraylike( obj ) { rootjQuery = jQuery(document); /*! * Sizzle CSS Selector Engine v1.9.4-pre - * http://sizzlejs.com/ + * https://sizzlejs.com/ * * Copyright 2013 jQuery Foundation, Inc. and other contributors * Released under the MIT license - * http://jquery.org/license + * https://jquery.org/license * * Date: 2013-05-27 */ @@ -1069,17 +1069,17 @@ var i, // Regular expressions - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + // Whitespace characters https://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters + // https://www.w3.org/TR/css3-syntax/#characters characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + // An unquoted value should be a CSS identifier https://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = characterEncoding.replace( "w", "w#" ), - // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + // Acceptable operators https://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", @@ -1129,7 +1129,7 @@ var i, rescape = /'|\\/g, - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + // CSS escapes https://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), funescape = function( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; @@ -1376,7 +1376,7 @@ function boolHandler( elem, name ) { /** * Fetches attributes without interpolation - * http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx + * https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx * @param {Element} elem * @param {String} name */ @@ -1653,7 +1653,7 @@ setDocument = Sizzle.setDocument = function( node ) { // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 + // See https://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( (support.qsa = isNative(doc.querySelectorAll)) ) { @@ -1664,7 +1664,7 @@ setDocument = Sizzle.setDocument = function( node ) { // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 + // https://bugs.jquery.com/ticket/12359 div.innerHTML = ""; // Support: IE8 @@ -1674,7 +1674,7 @@ setDocument = Sizzle.setDocument = function( node ) { } // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); @@ -2219,7 +2219,7 @@ Expr = Sizzle.selectors = { "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes + // https://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, @@ -2303,7 +2303,7 @@ Expr = Sizzle.selectors = { // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo + // https://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test(lang || "") ) { @@ -2350,7 +2350,7 @@ Expr = Sizzle.selectors = { "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, @@ -2367,7 +2367,7 @@ Expr = Sizzle.selectors = { // Contents "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo + // https://www.w3.org/TR/selectors/#empty-pseudo // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), // not comment, processing instructions, or others // Thanks to Diego Perini for the nodeName shortcut @@ -4024,7 +4024,7 @@ jQuery.fn.extend({ }); }, // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ + // http://blindsignals.com delay: function( time, type ) { time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; type = type || "fx"; @@ -4501,7 +4501,7 @@ jQuery.extend({ tabIndex: { get: function( elem ) { // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ // Use proper attribute retrieval(#12072) var tabindex = jQuery.find.attr( elem, "tabindex" ); @@ -4641,7 +4641,7 @@ if ( !getSetAttribute ) { // Some attributes require a special call on IE -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if ( !jQuery.support.hrefNormalized ) { // href/src property should get the full normalized URL (#10299/#12915) jQuery.each([ "href", "src" ], function( i, name ) { @@ -5413,7 +5413,7 @@ jQuery.Event = function( src, props ) { }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, @@ -6516,7 +6516,7 @@ jQuery.extend({ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); @@ -7120,7 +7120,7 @@ if ( window.getComputedStyle ) { // A tribute to the "awesome hack by Dean Edwards" // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels - // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + // this is against the CSSOM draft spec: https://dev.w3.org/csswg/cssom/#resolved-values if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { // Remember the original values @@ -8729,7 +8729,7 @@ if ( xhrSupported ) { // Firefox throws exceptions when accessing properties // of an xhr when a network error occurred - // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) + // https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) try { // Was never called and is aborted or complete diff --git a/docs/js/test/SpecRunner.html b/docs/js/test/SpecRunner.html index 877cfa2b..66bdd3b6 100644 --- a/docs/js/test/SpecRunner.html +++ b/docs/js/test/SpecRunner.html @@ -4,7 +4,7 @@ --- + "https://www.w3.org/TR/html4/loose.dtd"> Jasmine Spec Runner diff --git a/docs/js/test/lib/support/mock-ajax.js b/docs/js/test/lib/support/mock-ajax.js index 5c99627a..bf17886f 100644 --- a/docs/js/test/lib/support/mock-ajax.js +++ b/docs/js/test/lib/support/mock-ajax.js @@ -4,9 +4,9 @@ Supports both Prototype.js and jQuery. - http://github.com/pivotal/jasmine-ajax + https://github.com/pivotal/jasmine-ajax - Jasmine Home page: http://pivotal.github.com/jasmine + Jasmine Home page: https://pivotal.github.com/jasmine Copyright (c) 2008-2010 Pivotal Labs diff --git a/docs/js/test/spec/QuickStartWidgetSpec.js b/docs/js/test/spec/QuickStartWidgetSpec.js index b5587776..3bafa1d0 100644 --- a/docs/js/test/spec/QuickStartWidgetSpec.js +++ b/docs/js/test/spec/QuickStartWidgetSpec.js @@ -6,18 +6,18 @@ describe("QuickStartWidget", function () { var project = new Spring.Project({ "id": "spring-data-jpa", "name": "Spring Data JPA", - "repoUrl": "http://github.com/SpringSource/spring-data-jpa", - "siteUrl": "http://projects.spring.io/spring-data-jpa", + "repoUrl": "https://github.com/SpringSource/spring-data-jpa", + "siteUrl": "https://projects.spring.io/spring-data-jpa", "projectReleases": [ { - "refDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/", - "apiDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/", + "refDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/", + "apiDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/", "groupId": "org.springframework.data", "artifactId": "spring-data-jpa", "repository": { "id": "spring-milestones", "name": "Spring Milestones", - "url": "http://repo.spring.io/milestone", + "url": "https://repo.spring.io/milestone", "snapshotsEnabled": false }, "version": "1.4.0.RC1", @@ -28,8 +28,8 @@ describe("QuickStartWidget", function () { "versionDisplayName": "1.4.0.RC1" }, { - "refDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/", - "apiDocUrl": "http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/", + "refDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/", + "apiDocUrl": "https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/", "groupId": "org.springframework.data", "artifactId": "spring-data-jpa", "repository": null, @@ -73,7 +73,7 @@ describe("QuickStartWidget", function () { expect($('#maven_widget')).toContainText("spring-milestones"); expect($('#maven_widget')).toContainText("Spring Milestones"); - expect($('#maven_widget')).toContainText("http://repo.spring.io/milestone"); + expect($('#maven_widget')).toContainText("https://repo.spring.io/milestone"); expect($('#maven_widget')).toContainText("false"); }); @@ -83,7 +83,7 @@ describe("QuickStartWidget", function () { expect($('#maven_widget')).not.toContainText("repository"); expect($('#maven_widget')).not.toContainText("spring-milestones"); expect($('#maven_widget')).not.toContainText("Spring Milestones"); - expect($('#maven_widget')).not.toContainText("http://repo.spring.io/milestone"); + expect($('#maven_widget')).not.toContainText("https://repo.spring.io/milestone"); expect($('#maven_widget')).not.toContainText("false"); }); }); @@ -102,7 +102,7 @@ describe("QuickStartWidget", function () { $('#jasmine_content select').val(0).change(); expect($('#maven_widget')).toContainText("repositories"); - expect($('#maven_widget')).toContainText("http://repo.spring.io/milestone"); + expect($('#maven_widget')).toContainText("https://repo.spring.io/milestone"); }); }); }); diff --git a/docs/js/underscore.js b/docs/js/underscore.js index 7d4ee27c..f5df8e03 100644 --- a/docs/js/underscore.js +++ b/docs/js/underscore.js @@ -1,5 +1,5 @@ // Underscore.js 1.5.1 -// http://underscorejs.org +// https://underscorejs.org // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. @@ -554,7 +554,7 @@ // Generate an integer Array containing an arithmetic progression. A port of // the native Python `range()` function. See - // [the Python documentation](http://docs.python.org/library/functions.html#range). + // [the Python documentation](https://docs.python.org/library/functions.html#range). _.range = function(start, stop, step) { if (arguments.length <= 1) { stop = start || 0; @@ -844,7 +844,7 @@ // Internal recursive comparison function for `isEqual`. var eq = function(a, b, aStack, bStack) { // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). if (a === b) return a !== 0 || 1 / a == 1 / b; // A strict comparison is necessary because `null == undefined`. if (a == null || b == null) return a === b; diff --git a/docs/multi/multi__building_the_project.html b/docs/multi/multi__building_the_project.html index c70201a2..847a1c9a 100644 --- a/docs/multi/multi__building_the_project.html +++ b/docs/multi/multi__building_the_project.html @@ -1,6 +1,6 @@ - 15. Building the project

15. Building the project

15.1 Prerequisites

As prerequisites you need to have shellcheck, + 15. Building the project

15. Building the project

15.1 Prerequisites

As prerequisites you need to have shellcheck, bats, jq and ruby installed. If you’re on a Linux machine then bats and shellcheck will be installed for you.

To install the required software on Linux just type the following commands

$ sudo apt-get install -y ruby jq

If you’re on a Mac then just execute these commands to install the missing software

$ brew install jq
diff --git a/docs/multi/multi__introduction.html b/docs/multi/multi__introduction.html
index 6d770a35..e7cef3ec 100644
--- a/docs/multi/multi__introduction.html
+++ b/docs/multi/multi__introduction.html
@@ -76,7 +76,7 @@
 anytime before deployment to production.

One of the possibilities of tackling these problems is to…​ not do end to end tests.

Figure 1.5. Execute tests on a deployed microservice on stubbed dependencies

stubbed dependencies

If we stub out all the dependencies of our application then most of the problems presented above disappear. There is no need to start and setup infrastructure required by the dependant microservices. That way the testing setup looks like this:

Figure 1.6. We’re testing microservices in isolation

stubbed dependencies

Such an approach to testing and deployment gives the following benefits -(thanks to the usage of Spring Cloud Contract):

  • No need to deploy dependant services
  • The stubs used for the tests ran on a deployed microservice are the same as those used during integration tests
  • Those stubs have been tested against the application that produces them (check Spring Cloud Contract for more information)
  • We don’t have many slow tests running on a deployed application - thus the pipeline gets executed much faster
  • We don’t have to queue deployments - we’re testing in isolation thus pipelines don’t interfere with each other
  • We don’t have to spawn virtual machines each time for deployment purposes

It brings however the following challenges:

  • No end to end tests before production - you don’t have the full certainty that a feature is working
  • First time the applications will talk in a real way will be on production

Like every solution it has its benefits and drawbacks. The opinionated pipeline +(thanks to the usage of Spring Cloud Contract):

  • No need to deploy dependant services
  • The stubs used for the tests ran on a deployed microservice are the same as those used during integration tests
  • Those stubs have been tested against the application that produces them (check Spring Cloud Contract for more information)
  • We don’t have many slow tests running on a deployed application - thus the pipeline gets executed much faster
  • We don’t have to queue deployments - we’re testing in isolation thus pipelines don’t interfere with each other
  • We don’t have to spawn virtual machines each time for deployment purposes

It brings however the following challenges:

  • No end to end tests before production - you don’t have the full certainty that a feature is working
  • First time the applications will talk in a real way will be on production

Like every solution it has its benefits and drawbacks. The opinionated pipeline allows you to configure whether you want to follow this flow or not.

1.5.2 General view

The general view behind this deployment pipeline is to:

  • test the application in isolation
  • test the backwards compatibility of the application in order to roll it back if necessary
  • allow testing of the packaged app in a deployed environment
  • allow user acceptance tests / performance tests in a deployed environment
  • allow deployment to production

Obviously the pipeline could have been split to more steps but it seems that all of the aforementioned actions comprise nicely in our opinionated proposal.

1.6 CI Server worker prerequisites

Spring Cloud Pipelines uses Bash scripts extensively. Below you can find the list of software that needs to be installed on a CI server worker for the build to pass.

[Tip]Tip

In the demo setup all of these libraries are already installed.

 apt-get -y install \
diff --git a/docs/multi/multi__jenkins_pipeline_common.html b/docs/multi/multi__jenkins_pipeline_common.html
index 77a7c7a1..f89b3a1d 100644
--- a/docs/multi/multi__jenkins_pipeline_common.html
+++ b/docs/multi/multi__jenkins_pipeline_common.html
@@ -26,7 +26,7 @@
 when you want to do some custom changes.

7.2.1 Deploying infra jars to a different location

It’s enough to set the ARTIFACTORY_URL environmental variable before executing tools/deploy-infra.sh. Example for deploying to Artifactory at IP 192.168.99.100

git clone https://github.com/spring-cloud/spring-cloud-pipelines
 cd spring-cloud-pipelines/
-ARTIFACTORY_URL="http://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh

7.2.2 Setup settings.xml for Maven deployment

[Tip]Tip

If you want to use the default connection to the Docker version +ARTIFACTORY_URL="https://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh

7.2.2 Setup settings.xml for Maven deployment

[Tip]Tip

If you want to use the default connection to the Docker version of Artifactory you can skip this step

So that ./mvnw deploy works with Artifactory from Docker we’re already copying the missing settings.xml file for you. It looks more or less like this:

<?xml version="1.0" encoding="UTF-8"?>
 <settings>
diff --git a/docs/multi/multi__step_by_step_cloud_foundry_migration.html b/docs/multi/multi__step_by_step_cloud_foundry_migration.html
index 58358ea4..4f189371 100644
--- a/docs/multi/multi__step_by_step_cloud_foundry_migration.html
+++ b/docs/multi/multi__step_by_step_cloud_foundry_migration.html
@@ -2,7 +2,7 @@
       
    14. Step-by-step Cloud Foundry migration

14. Step-by-step Cloud Foundry migration

14.1 Preview

Click here to check out the slides by Cora Iberkleid where she -migrates a setup of applications to be compliant with Spring Cloud Pipelines.

14.2 Introduction

This tutorial covers refactoring applications to comply with, and take advantage of, Spring Cloud Pipelines.

We will use a simple 3-tier application as an example:

Figure 14.1. Use Case - Logical View

use case logical

At the end of this tutorial, it will be possible to instantly create a Concourse pipeline for each app and run successfully through a full lifecycle, from source code commit to production deployment, following the lifecycle stages for testing and deployment recommended by Spring Cloud Pipelines. The app code bases will be improved with organized test coverage, a contract-based API, and a versioned database schema, enabling Spring Cloud Pipelines to carry out stubbed testing and to ensure backward compatibility for API and database schema changes.

14.3 Sample application - initial state

The sample application is implemented using Spring Boot apps for the UI and service tiers, and MySQL for the database.

The apps are built using Maven and pushed manually to Cloud Foundry. They leverage the three Pivotal Spring Cloud Services: Config Server, Service Discovery, and Circuit Breaker Dashboard. Rabbit is used to propagate Config Server refresh triggers.

The source code for the two Spring Boot apps is stored on GitHub, as is the backing repo for Config Server.

Figure 14.2. Use Case - Implementation

use case implementation

14.4 Sample application - end state

Through this tutorial, we will be adding Concourse and JFrog Bintray to manage the application lifecycle.

We will also be refactoring the application to comply with Spring Cloud Pipelines requirements and recommendations, including adding/organizing tests and introducing database versioning using Flyway and API contracts using Spring Cloud Contract.

14.5 Tutorial - toolset

14.6 Tutorial - overview

The migration steps are broken down into three stages:

  1. Scaffolding

    • Minimal refactoring to comply with basic Spring Cloud Pipelines requirements.
    • At the end of this stage, each app will have a corresponding pipeline on Concourse. The pipelines will successfully build the apps, store the artifacts in Bintray, tag the GitHub repositories, and deploy the apps to Test, Stage, and Prod spaces in Cloud Foundry.
  2. Tests

    • Add/organize tests to comply with Spring Cloud Pipelines recommendations. Incorporate flyway for database schema versioning and initial data loading.
    • At the end of this stage, the pipelines will trigger unit and integration tests during the Build stage, smoke tests in the Test environment, and end-to-end tests in the Stage environment. The pipelines will also ensure backward compatibility for the database, such that you can safely roll back the backend service app, even after the database schema has been updated.
  3. Contracts

    • Incorporate Spring Cloud Contract to define the API between the UI and service apps and auto-generate tests and stubs.
    • At the end of this stage, the pipelines will catch breaking API changes during the Build stage and ensure backward compatibility for the API, such that you can safely roll back the backend service (producer) app, even after an API change.

14.7 Tutorial - step-by-step

14.7.1 Prep: Before you begin

If you want to simply review the migration steps explained below, you can look at the various branches in the greeting-ui and fortune-service repositories - there is a branch representing the end-state of each stage:

Figure 14.3. GitHub Branches

github branches

If you want to use this tutorial as a hands-on lab, fork each of the following repositories:

Then, create a new directory on your local machine. You may name it anything you like; we will refer to it as $SCP_HOME throughout this tutorial.

In $SCP_HOME, clone your forks of greeting-ui and fortune-service, as well as the following two repositories:

Finally, create a directory called $SCP_HOME/credentials. Leave it empty for now.

14.7.2 Stage 1: Scaffolding

In this stage, we make minimal changes to satisfy basic Spring Cloud Pipelines requirements so that the apps can run through the entire pipeline without error. We make "scaffolding" changes only - no code changes.

The steps in this stage must be completed for both greeting-ui and fortune-service.

1.1 Create GitHub branches

git branch version
+migrates a setup of applications to be compliant with Spring Cloud Pipelines.

14.2 Introduction

This tutorial covers refactoring applications to comply with, and take advantage of, Spring Cloud Pipelines.

We will use a simple 3-tier application as an example:

Figure 14.1. Use Case - Logical View

use case logical

At the end of this tutorial, it will be possible to instantly create a Concourse pipeline for each app and run successfully through a full lifecycle, from source code commit to production deployment, following the lifecycle stages for testing and deployment recommended by Spring Cloud Pipelines. The app code bases will be improved with organized test coverage, a contract-based API, and a versioned database schema, enabling Spring Cloud Pipelines to carry out stubbed testing and to ensure backward compatibility for API and database schema changes.

14.3 Sample application - initial state

The sample application is implemented using Spring Boot apps for the UI and service tiers, and MySQL for the database.

The apps are built using Maven and pushed manually to Cloud Foundry. They leverage the three Pivotal Spring Cloud Services: Config Server, Service Discovery, and Circuit Breaker Dashboard. Rabbit is used to propagate Config Server refresh triggers.

The source code for the two Spring Boot apps is stored on GitHub, as is the backing repo for Config Server.

Figure 14.2. Use Case - Implementation

use case implementation

14.4 Sample application - end state

Through this tutorial, we will be adding Concourse and JFrog Bintray to manage the application lifecycle.

We will also be refactoring the application to comply with Spring Cloud Pipelines requirements and recommendations, including adding/organizing tests and introducing database versioning using Flyway and API contracts using Spring Cloud Contract.

14.5 Tutorial - toolset

14.6 Tutorial - overview

The migration steps are broken down into three stages:

  1. Scaffolding

    • Minimal refactoring to comply with basic Spring Cloud Pipelines requirements.
    • At the end of this stage, each app will have a corresponding pipeline on Concourse. The pipelines will successfully build the apps, store the artifacts in Bintray, tag the GitHub repositories, and deploy the apps to Test, Stage, and Prod spaces in Cloud Foundry.
  2. Tests

    • Add/organize tests to comply with Spring Cloud Pipelines recommendations. Incorporate flyway for database schema versioning and initial data loading.
    • At the end of this stage, the pipelines will trigger unit and integration tests during the Build stage, smoke tests in the Test environment, and end-to-end tests in the Stage environment. The pipelines will also ensure backward compatibility for the database, such that you can safely roll back the backend service app, even after the database schema has been updated.
  3. Contracts

    • Incorporate Spring Cloud Contract to define the API between the UI and service apps and auto-generate tests and stubs.
    • At the end of this stage, the pipelines will catch breaking API changes during the Build stage and ensure backward compatibility for the API, such that you can safely roll back the backend service (producer) app, even after an API change.

14.7 Tutorial - step-by-step

14.7.1 Prep: Before you begin

If you want to simply review the migration steps explained below, you can look at the various branches in the greeting-ui and fortune-service repositories - there is a branch representing the end-state of each stage:

Figure 14.3. GitHub Branches

github branches

If you want to use this tutorial as a hands-on lab, fork each of the following repositories:

Then, create a new directory on your local machine. You may name it anything you like; we will refer to it as $SCP_HOME throughout this tutorial.

In $SCP_HOME, clone your forks of greeting-ui and fortune-service, as well as the following two repositories:

Finally, create a directory called $SCP_HOME/credentials. Leave it empty for now.

14.7.2 Stage 1: Scaffolding

In this stage, we make minimal changes to satisfy basic Spring Cloud Pipelines requirements so that the apps can run through the entire pipeline without error. We make "scaffolding" changes only - no code changes.

The steps in this stage must be completed for both greeting-ui and fortune-service.

1.1 Create GitHub branches

git branch version
 git checkout -b sc-pipelines

Branch version is required to exist, though it can be created as an empty branch. It is used by Spring Coud Pipelines to generate a version number for each new pipeline execution.

Branch sc-pipelines is optional and can be named anything you wish. The intention is for you to use it as a working branch for the changes suggested in this tutorial (hence we create it and also check it out).

1.2 Add Maven wrapper

mvn -N io.takari:maven:wrapper

This commands adds 4 files to a project:

.
 ├── mvnw
 ├── mvnw.cmd
diff --git a/docs/multi/multi__the_demo_setup_kubernetes.html b/docs/multi/multi__the_demo_setup_kubernetes.html
index 99e6a677..12dca46d 100644
--- a/docs/multi/multi__the_demo_setup_kubernetes.html
+++ b/docs/multi/multi__the_demo_setup_kubernetes.html
@@ -101,7 +101,7 @@
 
     ## alertmanager data Persistent Volume access modes
     ## Must match those of existing PV or dynamic provisioner
-    ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
+    ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
     ##
     accessModes:
       - ReadWriteOnce
@@ -144,7 +144,7 @@
   replicaCount: 1
 
   ## alertmanager resource requests and limits
-  ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/
   ##
   resources: {}
     # limits:
@@ -186,7 +186,7 @@
     pullPolicy: IfNotPresent
 
   ## configmap-reload resource requests and limits
-  ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/
   ##
   resources: {}
 
@@ -221,7 +221,7 @@
   replicaCount: 1
 
   ## kube-state-metrics resource requests and limits
-  ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/
   ##
   resources: {}
     # limits:
@@ -418,7 +418,7 @@
 
     ## Prometheus server data Persistent Volume access modes
     ## Must match those of existing PV or dynamic provisioner
-    ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
+    ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/
     ##
     accessModes:
       - ReadWriteOnce
@@ -462,7 +462,7 @@
   replicaCount: 1
 
   ## Prometheus server resource requests and limits
-  ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/
   ##
   resources: {}
     # limits:
@@ -552,7 +552,7 @@
   replicaCount: 1
 
   ## pushgateway resource requests and limits
-  ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/
+  ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/
   ##
   resources: {}
     # limits:
@@ -842,7 +842,7 @@
      kubectl --namespace default port-forward $POD_NAME 3000
 
 3. Login with the password from step 1 and the username: admin

Perform the aforementioned steps and add the Grafana’s datasource -as Prometheus with URL http://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local

You can pick the dashboard via the Grafana ID (2471). This is the +as Prometheus with URL https://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local

You can pick the dashboard via the Grafana ID (2471). This is the default dashboard for the Spring Cloud Pipelines demo apps.

If you have both apps (github-webhook and github-analytics) running on production we can now trigger the messages. Download the JSON with a sample request from the github-webhook repository. diff --git a/docs/multi/multi_concourse-pipeline-cf.html b/docs/multi/multi_concourse-pipeline-cf.html index f099049d..fe2d790b 100644 --- a/docs/multi/multi_concourse-pipeline-cf.html +++ b/docs/multi/multi_concourse-pipeline-cf.html @@ -30,7 +30,7 @@  

running concourse

   

You can click one of the icons (depending on your OS) to download fly, which is the Concourse CLI. Once you’ve downloaded that (and maybe added to your PATH) you can run:

fly --version

If fly is properly installed then it should print out the version.

4.1.5 Setup your credentials.yml

The repo comes with credentials-sample-cf.yml which is set up with sample data (most credentials) are set to be applicable for PCF Dev. Copy this file to a new file credentials.yml (the file is added to .gitignore so don’t worry that you’ll push it with your passwords) and edit it as you wish. For our demo just setup:

  • app-url - url pointing to your forked github-webhook repo
  • github-private-key - your private key to clone / tag GitHub repos
  • repo-with-binaries - the IP is set to the defaults for Docker Machine. You should update it to point to your setup

If you don’t have a Docker Machine just execute ./whats_my_ip.sh script to get an external IP that you can pass to your repo-with-binaries instead of the default -Docker Machine IP.

Below you can see what environment variables are required by the scripts. To the right hand side you can see the default values for PCF Dev that we set in the credentials-sample-cf.yml.

Property NameProperty DescriptionDefault value
 

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

PAAS_TEST_API_URL

The URL to the CF Api for TEST env

api.local.pcfdev.io

PAAS_STAGE_API_URL

The URL to the CF Api for STAGE env

api.local.pcfdev.io

PAAS_PROD_API_URL

The URL to the CF Api for PROD env

api.local.pcfdev.io

PAAS_TEST_ORG

Name of the org for the test env

pcfdev-org

PAAS_TEST_SPACE_PREFIX

Prefix of the name of the CF space for the test env to which the app name will be appended

sc-pipelines-test

PAAS_STAGE_ORG

Name of the org for the stage env

pcfdev-org

PAAS_STAGE_SPACE

Name of the space for the stage env

sc-pipelines-stage

PAAS_PROD_ORG

Name of the org for the prod env

pcfdev-org

PAAS_PROD_SPACE

Name of the space for the prod env

sc-pipelines-prod

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

http://192.168.99.100:8081/artifactory/libs-release-local

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

PAAS_HOSTNAME_UUID

Additional suffix for the route. In a shared environment the default routes can be already taken

 

JAVA_BUILDPACK_URL

The URL to the Java buildpack to be used by CF

https://github.com/cloudfoundry/java-buildpack.git#v3.8.1

4.1.6 Build the pipeline

Log in (e.g. for Concourse running at 192.168.99.100 - if you don’t provide any value then localhost is assumed). If you execute this script (it assumes that either fly is on your PATH or it’s in the same folder as the script is):

./login.sh 192.168.99.100

Next run the command to create the pipeline.

./set_pipeline.sh

Then you’ll create a github-webhook pipeline under the docker alias, using the provided credentials.yml file. +Docker Machine IP.

Below you can see what environment variables are required by the scripts. To the right hand side you can see the default values for PCF Dev that we set in the credentials-sample-cf.yml.

Property NameProperty DescriptionDefault value
 

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

PAAS_TEST_API_URL

The URL to the CF Api for TEST env

api.local.pcfdev.io

PAAS_STAGE_API_URL

The URL to the CF Api for STAGE env

api.local.pcfdev.io

PAAS_PROD_API_URL

The URL to the CF Api for PROD env

api.local.pcfdev.io

PAAS_TEST_ORG

Name of the org for the test env

pcfdev-org

PAAS_TEST_SPACE_PREFIX

Prefix of the name of the CF space for the test env to which the app name will be appended

sc-pipelines-test

PAAS_STAGE_ORG

Name of the org for the stage env

pcfdev-org

PAAS_STAGE_SPACE

Name of the space for the stage env

sc-pipelines-stage

PAAS_PROD_ORG

Name of the org for the prod env

pcfdev-org

PAAS_PROD_SPACE

Name of the space for the prod env

sc-pipelines-prod

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

https://192.168.99.100:8081/artifactory/libs-release-local

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

PAAS_HOSTNAME_UUID

Additional suffix for the route. In a shared environment the default routes can be already taken

 

JAVA_BUILDPACK_URL

The URL to the Java buildpack to be used by CF

https://github.com/cloudfoundry/java-buildpack.git#v3.8.1

4.1.6 Build the pipeline

Log in (e.g. for Concourse running at 192.168.99.100 - if you don’t provide any value then localhost is assumed). If you execute this script (it assumes that either fly is on your PATH or it’s in the same folder as the script is):

./login.sh 192.168.99.100

Next run the command to create the pipeline.

./set_pipeline.sh

Then you’ll create a github-webhook pipeline under the docker alias, using the provided credentials.yml file. You can override these values in exactly that order (e.g. ./set-pipeline.sh some-project another-target some-other-credentials.yml)

4.1.7 Run the github-webhook pipeline

   

Figure 4.1. Click Login

concourse login

   

Figure 4.2. Pick main team

concourse team main

  diff --git a/docs/multi/multi_jenkins-pipeline-cf.html b/docs/multi/multi_jenkins-pipeline-cf.html index c54a5286..2dd4299f 100644 --- a/docs/multi/multi_jenkins-pipeline-cf.html +++ b/docs/multi/multi_jenkins-pipeline-cf.html @@ -53,7 +53,7 @@  

Figure 8.8. The full pipeline should look like this

pipeline finished

   

8.2 Declarative pipeline & Blue Ocean

You can also use the declarative pipeline approach with the Blue Ocean UI. Here is a step by step guide to run a pipeline via -this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup http://192.168.99.100:8080/blue.

  +this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup https://192.168.99.100:8080/blue.

   

Figure 8.9. Open Blue Ocean UI and click on github-webhook-declarative-pipeline

blue 1

   

Figure 8.10. Your first run will look like this. Click Run button

blue 2

   

Figure 8.11. Enter parameters required for the build and click run

blue 3

  @@ -65,7 +65,7 @@ check out this issue for more information

[Warning]Warning

Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you’ll run out of executors pretty fast. You can check out this issue for -and this StackOverflow question +and this StackOverflow question for more information.

8.3 Jenkins Cloud Foundry customization

 All the steps below are not necessary to run the demo. They are needed only
 when you want to do some custom changes.

8.3.1 All env vars

The env vars that are used in all of the jobs are as follows:

Property NameProperty DescriptionDefault value
 

BINARY_EXTENSION

Extension of the binary uploaded to Artifactory / Nexus. Example: change this to war for WAR artifacts

PAAS_TEST_API_URL

The URL to the CF Api for TEST env

api.local.pcfdev.io

PAAS_STAGE_API_URL

The URL to the CF Api for STAGE env

api.local.pcfdev.io

PAAS_PROD_API_URL

The URL to the CF Api for PROD env

api.local.pcfdev.io

PAAS_TEST_ORG

Name of the org for the test env

pcfdev-org

PAAS_TEST_SPACE_PREFIX

Prefix of the name of the CF space for the test env to which the app name will be appended

sc-pipelines-test

PAAS_STAGE_ORG

Name of the org for the stage env

pcfdev-org

PAAS_STAGE_SPACE

Name of the space for the stage env

sc-pipelines-stage

PAAS_PROD_ORG

Name of the org for the prod env

pcfdev-org

PAAS_PROD_SPACE

Name of the space for the prod env

sc-pipelines-prod

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

http://artifactory:8081/artifactory/libs-release-local

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

JDK_VERSION

The name of the JDK installation

jdk8

PIPELINE_VERSION

What should be the version of the pipeline (ultimately also version of the jar)

1.0.0.M1-${GROOVY,script ="new Date().format('yyMMdd_HHmmss')"}-VERSION

GIT_EMAIL

The email used by Git to tag repo

email@example.com

GIT_NAME

The name used by Git to tag repo

Pivo Tal

PAAS_HOSTNAME_UUID

Additional suffix for the route. In a shared environment the default routes can be already taken

 

AUTO_DEPLOY_TO_STAGE

Should deployment to stage be automatic

false

AUTO_DEPLOY_TO_PROD

Should deployment to prod be automatic

false

API_COMPATIBILITY_STEP_REQUIRED

Should api compatibility step be required

true

DB_ROLLBACK_STEP_REQUIRED

Should DB rollback step be present

true

DEPLOY_TO_STAGE_STEP_REQUIRED

Should deploy to stage step be present

true

JAVA_BUILDPACK_URL

The URL to the Java buildpack to be used by CF

https://github.com/cloudfoundry/java-buildpack.git#v3.8.1

 

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

8.3.2 Jenkins Credentials

In your scripts we reference the credentials via IDs. These are the defaults for credentials

Property NameProperty DescriptionDefault value

PAAS_PROD_CREDENTIAL_ID

Credential ID for CF Prod env access

cf-prod

GIT_CREDENTIAL_ID

Credential ID used to tag a git repo

git

GIT_SSH_CREDENTIAL_ID

SSH credential ID used to tag a git repo

gitSsh

GIT_USE_SSH_KEY

if true will pick to use the SSH credential id

false

REPO_WITH_BINARIES_CREDENTIAL_ID

Credential ID used for the repo with jars

repo-with-binaries

PAAS_TEST_CREDENTIAL_ID

Credential ID for CF Test env access

cf-test

PAAS_STAGE_CREDENTIAL_ID

Credential ID for CF Stage env access

cf-stage

If you already have in your system a credential to for example tag a repo you can use it by passing the value of the property GIT_CREDENTIAL_ID

[Tip]Tip

Check out the cf-helper script for all the configuration options!

\ No newline at end of file diff --git a/docs/multi/multi_jenkins-pipeline-k8s.html b/docs/multi/multi_jenkins-pipeline-k8s.html index c15d4723..e5ad8f32 100644 --- a/docs/multi/multi_jenkins-pipeline-k8s.html +++ b/docs/multi/multi_jenkins-pipeline-k8s.html @@ -45,7 +45,7 @@  

Figure 9.8. The full pipeline should look like this

pipeline finished

   

9.2 Declarative pipeline & Blue Ocean

You can also use the declarative pipeline approach with the Blue Ocean UI. Here is a step by step guide to run a pipeline via -this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup http://192.168.99.100:8080/blue.

  +this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup https://192.168.99.100:8080/blue.

   

Figure 9.9. Open Blue Ocean UI and click on github-webhook-declarative-pipeline

blue 1

   

Figure 9.10. Your first run will look like this. Click Run button

blue 2

   

Figure 9.11. Enter parameters required for the build and click run

blue 3

  @@ -57,7 +57,7 @@ check out this issue for more information

[Warning]Warning

Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you’ll run out of executors pretty fast. You can check out this issue for -and this StackOverflow question +and this StackOverflow question for more information.

9.3 Jenkins Kubernetes customization

[Important]Important

All the steps below are not necessary to run the demo. They are needed only when you want to do some custom changes.

9.3.1 All env vars

The env vars that are used in all of the jobs are as follows:

Property NameProperty DescriptionDefault value

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

 

DOCKER_REGISTRY_ORGANIZATION

Name of the docker organization to which Docker images should be deployed

scpipelines

DOCKER_REGISTRY_CREDENTIAL_ID

Credential ID used to push Docker images

docker-registry

DOCKER_SERVER_ID

Server ID in settings.xml and Maven builds

docker-repo

DOCKER_EMAIL

Email used to connect to Docker registry` and Maven builds

change@me.com

DOCKER_REGISTRY_ORGANIZATION

URL to Kubernetes cluster for test env

scpipelines

DOCKER_REGISTRY_URL

URL to the docker registry

https://index.docker.io/v1/

PAAS_TEST_API_URL

URL of the API of the Kubernetes cluster for test environment

192.168.99.100:8443

PAAS_STAGE_API_URL

URL of the API of the Kubernetes cluster for stage environment

192.168.99.100:8443

PAAS_PROD_API_URL

URL of the API of the Kubernetes cluster for prod environment

192.168.99.100:8443

PAAS_TEST_CA_PATH

Path to the certificate authority for test environment

/usr/share/jenkins/cert/ca.crt

PAAS_STAGE_CA_PATH

Path to the certificate authority for stage environment

/usr/share/jenkins/cert/ca.crt

PAAS_PROD_CA_PATH

Path to the certificate authority for prod environment

/usr/share/jenkins/cert/ca.crt

PAAS_TEST_CLIENT_CERT_PATH

Path to the client certificate for test environment

/usr/share/jenkins/cert/apiserver.crt

PAAS_STAGE_CLIENT_CERT_PATH

Path to the client certificate for stage environment

/usr/share/jenkins/cert/apiserver.crt

PAAS_PROD_CLIENT_CERT_PATH

Path to the client certificate for prod environment

/usr/share/jenkins/cert/apiserver.crt

PAAS_TEST_CLIENT_KEY_PATH

Path to the client key for test environment

/usr/share/jenkins/cert/apiserver.key

PAAS_STAGE_CLIENT_KEY_PATH

Path to the client key for stage environment

/usr/share/jenkins/cert/apiserver.key

PAAS_PROD_CLIENT_KEY_PATH

Path to the client key for test environment

/usr/share/jenkins/cert/apiserver.key

PAAS_TEST_CLIENT_TOKEN_PATH

Path to the file containing the token for test env

 

PAAS_STAGE_CLIENT_TOKEN_PATH

Path to the file containing the token for stage env

 

PAAS_PROD_CLIENT_TOKEN_PATH

Path to the file containing the token for prod env

 

PAAS_TEST_CLIENT_TOKEN_ID

ID of the credential containing access token for test environment

 

PAAS_STAGE_CLIENT_TOKEN_ID

ID of the credential containing access token for stage environment

 

PAAS_PROD_CLIENT_TOKEN_ID

ID of the credential containing access token for prod environment

 

PAAS_TEST_CLUSTER_NAME

Name of the cluster for test environment

minikube

PAAS_STAGE_CLUSTER_NAME

Name of the cluster for stage environment

minikube

PAAS_PROD_CLUSTER_NAME

Name of the cluster for prod environment

minikube

PAAS_TEST_CLUSTER_USERNAME

Name of the user for test environment

minikube

PAAS_STAGE_CLUSTER_USERNAME

Name of the user for stage environment

minikube

PAAS_PROD_CLUSTER_USERNAME

Name of the user for prod environment

minikube

PAAS_TEST_SYSTEM_NAME

Name of the system for test environment

minikube

PAAS_STAGE_SYSTEM_NAME

Name of the system for stage environment

minikube

PAAS_PROD_SYSTEM_NAME

Name of the system for prod environment

minikube

PAAS_TEST_NAMESPACE

Namespace for test environment

sc-pipelines-test

PAAS_STAGE_NAMESPACE

Namespace for stage environment

sc-pipelines-stage

PAAS_PROD_NAMESPACE

Namespace for prod environment

sc-pipelines-prod

KUBERNETES_MINIKUBE

Will you connect to Minikube?

true

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

http://artifactory:8081/artifactory/libs-release-local

REPO_WITH_BINARIES_CREDENTIAL_ID

Credential ID used for the repo with jars

repo-with-binaries

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

JDK_VERSION

The name of the JDK installation

jdk8

PIPELINE_VERSION

What should be the version of the pipeline (ultimately also version of the jar)

1.0.0.M1-${GROOVY,script ="new Date().format('yyMMdd_HHmmss')"}-VERSION

GIT_EMAIL

The email used by Git to tag repo

email@example.com

GIT_NAME

The name used by Git to tag repo

Pivo Tal

AUTO_DEPLOY_TO_STAGE

Should deployment to stage be automatic

false

AUTO_DEPLOY_TO_PROD

Should deployment to prod be automatic

false

API_COMPATIBILITY_STEP_REQUIRED

Should api compatibility step be required

true

DB_ROLLBACK_STEP_REQUIRED

Should DB rollback step be present

true

DEPLOY_TO_STAGE_STEP_REQUIRED

Should deploy to stage step be present

true

9.4 Preparing to connect to GCE

[Important]Important

Skip this step if you’re not using GCE

In order to use GCE we need to have gcloud running. If you already have the CLI installed, skip this step. If not just execute to have the CLI diff --git a/docs/single/spring-cloud-pipelines.html b/docs/single/spring-cloud-pipelines.html index f62d8607..255f6a4e 100644 --- a/docs/single/spring-cloud-pipelines.html +++ b/docs/single/spring-cloud-pipelines.html @@ -80,7 +80,7 @@ anytime before deployment to production.

One of the possibilities of tackling these problems is to…​ not do end to end tests.

Figure 1.5. Execute tests on a deployed microservice on stubbed dependencies

stubbed dependencies

If we stub out all the dependencies of our application then most of the problems presented above disappear. There is no need to start and setup infrastructure required by the dependant microservices. That way the testing setup looks like this:

Figure 1.6. We’re testing microservices in isolation

stubbed dependencies

Such an approach to testing and deployment gives the following benefits -(thanks to the usage of Spring Cloud Contract):

It brings however the following challenges:

Like every solution it has its benefits and drawbacks. The opinionated pipeline +(thanks to the usage of Spring Cloud Contract):

It brings however the following challenges:

Like every solution it has its benefits and drawbacks. The opinionated pipeline allows you to configure whether you want to follow this flow or not.

1.5.2 General view

The general view behind this deployment pipeline is to:

  • test the application in isolation
  • test the backwards compatibility of the application in order to roll it back if necessary
  • allow testing of the packaged app in a deployed environment
  • allow user acceptance tests / performance tests in a deployed environment
  • allow deployment to production

Obviously the pipeline could have been split to more steps but it seems that all of the aforementioned actions comprise nicely in our opinionated proposal.

1.6 CI Server worker prerequisites

Spring Cloud Pipelines uses Bash scripts extensively. Below you can find the list of software that needs to be installed on a CI server worker for the build to pass.

[Tip]Tip

In the demo setup all of these libraries are already installed.

 apt-get -y install \
@@ -245,7 +245,7 @@
  

running concourse

   

You can click one of the icons (depending on your OS) to download fly, which is the Concourse CLI. Once you’ve downloaded that (and maybe added to your PATH) you can run:

fly --version

If fly is properly installed then it should print out the version.

4.1.5 Setup your credentials.yml

The repo comes with credentials-sample-cf.yml which is set up with sample data (most credentials) are set to be applicable for PCF Dev. Copy this file to a new file credentials.yml (the file is added to .gitignore so don’t worry that you’ll push it with your passwords) and edit it as you wish. For our demo just setup:

  • app-url - url pointing to your forked github-webhook repo
  • github-private-key - your private key to clone / tag GitHub repos
  • repo-with-binaries - the IP is set to the defaults for Docker Machine. You should update it to point to your setup

If you don’t have a Docker Machine just execute ./whats_my_ip.sh script to get an external IP that you can pass to your repo-with-binaries instead of the default -Docker Machine IP.

Below you can see what environment variables are required by the scripts. To the right hand side you can see the default values for PCF Dev that we set in the credentials-sample-cf.yml.

Property NameProperty DescriptionDefault value
 

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

PAAS_TEST_API_URL

The URL to the CF Api for TEST env

api.local.pcfdev.io

PAAS_STAGE_API_URL

The URL to the CF Api for STAGE env

api.local.pcfdev.io

PAAS_PROD_API_URL

The URL to the CF Api for PROD env

api.local.pcfdev.io

PAAS_TEST_ORG

Name of the org for the test env

pcfdev-org

PAAS_TEST_SPACE_PREFIX

Prefix of the name of the CF space for the test env to which the app name will be appended

sc-pipelines-test

PAAS_STAGE_ORG

Name of the org for the stage env

pcfdev-org

PAAS_STAGE_SPACE

Name of the space for the stage env

sc-pipelines-stage

PAAS_PROD_ORG

Name of the org for the prod env

pcfdev-org

PAAS_PROD_SPACE

Name of the space for the prod env

sc-pipelines-prod

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

http://192.168.99.100:8081/artifactory/libs-release-local

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

PAAS_HOSTNAME_UUID

Additional suffix for the route. In a shared environment the default routes can be already taken

 

JAVA_BUILDPACK_URL

The URL to the Java buildpack to be used by CF

https://github.com/cloudfoundry/java-buildpack.git#v3.8.1

4.1.6 Build the pipeline

Log in (e.g. for Concourse running at 192.168.99.100 - if you don’t provide any value then localhost is assumed). If you execute this script (it assumes that either fly is on your PATH or it’s in the same folder as the script is):

./login.sh 192.168.99.100

Next run the command to create the pipeline.

./set_pipeline.sh

Then you’ll create a github-webhook pipeline under the docker alias, using the provided credentials.yml file. +Docker Machine IP.

Below you can see what environment variables are required by the scripts. To the right hand side you can see the default values for PCF Dev that we set in the credentials-sample-cf.yml.

Property NameProperty DescriptionDefault value
 

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

PAAS_TEST_API_URL

The URL to the CF Api for TEST env

api.local.pcfdev.io

PAAS_STAGE_API_URL

The URL to the CF Api for STAGE env

api.local.pcfdev.io

PAAS_PROD_API_URL

The URL to the CF Api for PROD env

api.local.pcfdev.io

PAAS_TEST_ORG

Name of the org for the test env

pcfdev-org

PAAS_TEST_SPACE_PREFIX

Prefix of the name of the CF space for the test env to which the app name will be appended

sc-pipelines-test

PAAS_STAGE_ORG

Name of the org for the stage env

pcfdev-org

PAAS_STAGE_SPACE

Name of the space for the stage env

sc-pipelines-stage

PAAS_PROD_ORG

Name of the org for the prod env

pcfdev-org

PAAS_PROD_SPACE

Name of the space for the prod env

sc-pipelines-prod

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

https://192.168.99.100:8081/artifactory/libs-release-local

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

PAAS_HOSTNAME_UUID

Additional suffix for the route. In a shared environment the default routes can be already taken

 

JAVA_BUILDPACK_URL

The URL to the Java buildpack to be used by CF

https://github.com/cloudfoundry/java-buildpack.git#v3.8.1

4.1.6 Build the pipeline

Log in (e.g. for Concourse running at 192.168.99.100 - if you don’t provide any value then localhost is assumed). If you execute this script (it assumes that either fly is on your PATH or it’s in the same folder as the script is):

./login.sh 192.168.99.100

Next run the command to create the pipeline.

./set_pipeline.sh

Then you’ll create a github-webhook pipeline under the docker alias, using the provided credentials.yml file. You can override these values in exactly that order (e.g. ./set-pipeline.sh some-project another-target some-other-credentials.yml)

4.1.7 Run the github-webhook pipeline

   

Figure 4.1. Click Login

concourse login

   

Figure 4.2. Pick main team

concourse team main

  @@ -368,7 +368,7 @@ when you want to do some custom changes.

7.2.1 Deploying infra jars to a different location

It’s enough to set the ARTIFACTORY_URL environmental variable before executing tools/deploy-infra.sh. Example for deploying to Artifactory at IP 192.168.99.100

git clone https://github.com/spring-cloud/spring-cloud-pipelines
 cd spring-cloud-pipelines/
-ARTIFACTORY_URL="http://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh

7.2.2 Setup settings.xml for Maven deployment

[Tip]Tip

If you want to use the default connection to the Docker version +ARTIFACTORY_URL="https://192.168.99.100:8081/artifactory/libs-release-local" ./tools/deploy-infra.sh

7.2.2 Setup settings.xml for Maven deployment

[Tip]Tip

If you want to use the default connection to the Docker version of Artifactory you can skip this step

So that ./mvnw deploy works with Artifactory from Docker we’re already copying the missing settings.xml file for you. It looks more or less like this:

<?xml version="1.0" encoding="UTF-8"?>
 <settings>
@@ -468,7 +468,7 @@
  

Figure 8.8. The full pipeline should look like this

pipeline finished

   

8.2 Declarative pipeline & Blue Ocean

You can also use the declarative pipeline approach with the Blue Ocean UI. Here is a step by step guide to run a pipeline via -this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup http://192.168.99.100:8080/blue.

  +this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup https://192.168.99.100:8080/blue.

   

Figure 8.9. Open Blue Ocean UI and click on github-webhook-declarative-pipeline

blue 1

   

Figure 8.10. Your first run will look like this. Click Run button

blue 2

   

Figure 8.11. Enter parameters required for the build and click run

blue 3

  @@ -480,7 +480,7 @@ check out this issue for more information

[Warning]Warning

Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you’ll run out of executors pretty fast. You can check out this issue for -and this StackOverflow question +and this StackOverflow question for more information.

8.3 Jenkins Cloud Foundry customization

 All the steps below are not necessary to run the demo. They are needed only
 when you want to do some custom changes.

8.3.1 All env vars

The env vars that are used in all of the jobs are as follows:

Property NameProperty DescriptionDefault value
 

BINARY_EXTENSION

Extension of the binary uploaded to Artifactory / Nexus. Example: change this to war for WAR artifacts

PAAS_TEST_API_URL

The URL to the CF Api for TEST env

api.local.pcfdev.io

PAAS_STAGE_API_URL

The URL to the CF Api for STAGE env

api.local.pcfdev.io

PAAS_PROD_API_URL

The URL to the CF Api for PROD env

api.local.pcfdev.io

PAAS_TEST_ORG

Name of the org for the test env

pcfdev-org

PAAS_TEST_SPACE_PREFIX

Prefix of the name of the CF space for the test env to which the app name will be appended

sc-pipelines-test

PAAS_STAGE_ORG

Name of the org for the stage env

pcfdev-org

PAAS_STAGE_SPACE

Name of the space for the stage env

sc-pipelines-stage

PAAS_PROD_ORG

Name of the org for the prod env

pcfdev-org

PAAS_PROD_SPACE

Name of the space for the prod env

sc-pipelines-prod

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

http://artifactory:8081/artifactory/libs-release-local

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

JDK_VERSION

The name of the JDK installation

jdk8

PIPELINE_VERSION

What should be the version of the pipeline (ultimately also version of the jar)

1.0.0.M1-${GROOVY,script ="new Date().format('yyMMdd_HHmmss')"}-VERSION

GIT_EMAIL

The email used by Git to tag repo

email@example.com

GIT_NAME

The name used by Git to tag repo

Pivo Tal

PAAS_HOSTNAME_UUID

Additional suffix for the route. In a shared environment the default routes can be already taken

 

AUTO_DEPLOY_TO_STAGE

Should deployment to stage be automatic

false

AUTO_DEPLOY_TO_PROD

Should deployment to prod be automatic

false

API_COMPATIBILITY_STEP_REQUIRED

Should api compatibility step be required

true

DB_ROLLBACK_STEP_REQUIRED

Should DB rollback step be present

true

DEPLOY_TO_STAGE_STEP_REQUIRED

Should deploy to stage step be present

true

JAVA_BUILDPACK_URL

The URL to the Java buildpack to be used by CF

https://github.com/cloudfoundry/java-buildpack.git#v3.8.1

 

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

8.3.2 Jenkins Credentials

In your scripts we reference the credentials via IDs. These are the defaults for credentials

Property NameProperty DescriptionDefault value

PAAS_PROD_CREDENTIAL_ID

Credential ID for CF Prod env access

cf-prod

GIT_CREDENTIAL_ID

Credential ID used to tag a git repo

git

GIT_SSH_CREDENTIAL_ID

SSH credential ID used to tag a git repo

gitSsh

GIT_USE_SSH_KEY

if true will pick to use the SSH credential id

false

REPO_WITH_BINARIES_CREDENTIAL_ID

Credential ID used for the repo with jars

repo-with-binaries

PAAS_TEST_CREDENTIAL_ID

Credential ID for CF Test env access

cf-test

PAAS_STAGE_CREDENTIAL_ID

Credential ID for CF Stage env access

cf-stage

If you already have in your system a credential to for example tag a repo you can use it by passing the value of the property GIT_CREDENTIAL_ID

[Tip]Tip

Check out the cf-helper script for all the configuration options!

9. Jenkins Pipeline (Kubernetes)

[Important]Important

In this chapter we assume that you perform deployment of your application @@ -528,7 +528,7 @@  

Figure 9.8. The full pipeline should look like this

pipeline finished

   

9.2 Declarative pipeline & Blue Ocean

You can also use the declarative pipeline approach with the Blue Ocean UI. Here is a step by step guide to run a pipeline via -this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup http://192.168.99.100:8080/blue.

  +this approach.

The Blue Ocean UI is available under the blue/ URL. E.g. for Docker Machine based setup https://192.168.99.100:8080/blue.

   

Figure 9.9. Open Blue Ocean UI and click on github-webhook-declarative-pipeline

blue 1

   

Figure 9.10. Your first run will look like this. Click Run button

blue 2

   

Figure 9.11. Enter parameters required for the build and click run

blue 3

  @@ -540,7 +540,7 @@ check out this issue for more information

[Warning]Warning

Currently there is no way to introduce manual steps in a performant way. Jenkins is blocking an executor when manual step is required. That means that you’ll run out of executors pretty fast. You can check out this issue for -and this StackOverflow question +and this StackOverflow question for more information.

9.3 Jenkins Kubernetes customization

[Important]Important

All the steps below are not necessary to run the demo. They are needed only when you want to do some custom changes.

9.3.1 All env vars

The env vars that are used in all of the jobs are as follows:

Property NameProperty DescriptionDefault value

BUILD_OPTIONS

Additional options you would like to pass to the Maven / Gradle build

 

DOCKER_REGISTRY_ORGANIZATION

Name of the docker organization to which Docker images should be deployed

scpipelines

DOCKER_REGISTRY_CREDENTIAL_ID

Credential ID used to push Docker images

docker-registry

DOCKER_SERVER_ID

Server ID in settings.xml and Maven builds

docker-repo

DOCKER_EMAIL

Email used to connect to Docker registry` and Maven builds

change@me.com

DOCKER_REGISTRY_ORGANIZATION

URL to Kubernetes cluster for test env

scpipelines

DOCKER_REGISTRY_URL

URL to the docker registry

https://index.docker.io/v1/

PAAS_TEST_API_URL

URL of the API of the Kubernetes cluster for test environment

192.168.99.100:8443

PAAS_STAGE_API_URL

URL of the API of the Kubernetes cluster for stage environment

192.168.99.100:8443

PAAS_PROD_API_URL

URL of the API of the Kubernetes cluster for prod environment

192.168.99.100:8443

PAAS_TEST_CA_PATH

Path to the certificate authority for test environment

/usr/share/jenkins/cert/ca.crt

PAAS_STAGE_CA_PATH

Path to the certificate authority for stage environment

/usr/share/jenkins/cert/ca.crt

PAAS_PROD_CA_PATH

Path to the certificate authority for prod environment

/usr/share/jenkins/cert/ca.crt

PAAS_TEST_CLIENT_CERT_PATH

Path to the client certificate for test environment

/usr/share/jenkins/cert/apiserver.crt

PAAS_STAGE_CLIENT_CERT_PATH

Path to the client certificate for stage environment

/usr/share/jenkins/cert/apiserver.crt

PAAS_PROD_CLIENT_CERT_PATH

Path to the client certificate for prod environment

/usr/share/jenkins/cert/apiserver.crt

PAAS_TEST_CLIENT_KEY_PATH

Path to the client key for test environment

/usr/share/jenkins/cert/apiserver.key

PAAS_STAGE_CLIENT_KEY_PATH

Path to the client key for stage environment

/usr/share/jenkins/cert/apiserver.key

PAAS_PROD_CLIENT_KEY_PATH

Path to the client key for test environment

/usr/share/jenkins/cert/apiserver.key

PAAS_TEST_CLIENT_TOKEN_PATH

Path to the file containing the token for test env

 

PAAS_STAGE_CLIENT_TOKEN_PATH

Path to the file containing the token for stage env

 

PAAS_PROD_CLIENT_TOKEN_PATH

Path to the file containing the token for prod env

 

PAAS_TEST_CLIENT_TOKEN_ID

ID of the credential containing access token for test environment

 

PAAS_STAGE_CLIENT_TOKEN_ID

ID of the credential containing access token for stage environment

 

PAAS_PROD_CLIENT_TOKEN_ID

ID of the credential containing access token for prod environment

 

PAAS_TEST_CLUSTER_NAME

Name of the cluster for test environment

minikube

PAAS_STAGE_CLUSTER_NAME

Name of the cluster for stage environment

minikube

PAAS_PROD_CLUSTER_NAME

Name of the cluster for prod environment

minikube

PAAS_TEST_CLUSTER_USERNAME

Name of the user for test environment

minikube

PAAS_STAGE_CLUSTER_USERNAME

Name of the user for stage environment

minikube

PAAS_PROD_CLUSTER_USERNAME

Name of the user for prod environment

minikube

PAAS_TEST_SYSTEM_NAME

Name of the system for test environment

minikube

PAAS_STAGE_SYSTEM_NAME

Name of the system for stage environment

minikube

PAAS_PROD_SYSTEM_NAME

Name of the system for prod environment

minikube

PAAS_TEST_NAMESPACE

Namespace for test environment

sc-pipelines-test

PAAS_STAGE_NAMESPACE

Namespace for stage environment

sc-pipelines-stage

PAAS_PROD_NAMESPACE

Namespace for prod environment

sc-pipelines-prod

KUBERNETES_MINIKUBE

Will you connect to Minikube?

true

REPO_WITH_BINARIES_FOR_UPLOAD

URL to repo with the deployed jars

http://artifactory:8081/artifactory/libs-release-local

REPO_WITH_BINARIES_CREDENTIAL_ID

Credential ID used for the repo with jars

repo-with-binaries

M2_SETTINGS_REPO_ID

The id of server from Maven settings.xml

artifactory-local

JDK_VERSION

The name of the JDK installation

jdk8

PIPELINE_VERSION

What should be the version of the pipeline (ultimately also version of the jar)

1.0.0.M1-${GROOVY,script ="new Date().format('yyMMdd_HHmmss')"}-VERSION

GIT_EMAIL

The email used by Git to tag repo

email@example.com

GIT_NAME

The name used by Git to tag repo

Pivo Tal

AUTO_DEPLOY_TO_STAGE

Should deployment to stage be automatic

false

AUTO_DEPLOY_TO_PROD

Should deployment to prod be automatic

false

API_COMPATIBILITY_STEP_REQUIRED

Should api compatibility step be required

true

DB_ROLLBACK_STEP_REQUIRED

Should DB rollback step be present

true

DEPLOY_TO_STAGE_STEP_REQUIRED

Should deploy to stage step be present

true

9.4 Preparing to connect to GCE

[Important]Important

Skip this step if you’re not using GCE

In order to use GCE we need to have gcloud running. If you already have the CLI installed, skip this step. If not just execute to have the CLI @@ -816,7 +816,7 @@ ## alertmanager data Persistent Volume access modes ## Must match those of existing PV or dynamic provisioner - ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ ## accessModes: - ReadWriteOnce @@ -859,7 +859,7 @@ replicaCount: 1 ## alertmanager resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -901,7 +901,7 @@ pullPolicy: IfNotPresent ## configmap-reload resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} @@ -936,7 +936,7 @@ replicaCount: 1 ## kube-state-metrics resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -1133,7 +1133,7 @@ ## Prometheus server data Persistent Volume access modes ## Must match those of existing PV or dynamic provisioner - ## Ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ + ## Ref: https://kubernetes.io/docs/user-guide/persistent-volumes/ ## accessModes: - ReadWriteOnce @@ -1177,7 +1177,7 @@ replicaCount: 1 ## Prometheus server resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -1267,7 +1267,7 @@ replicaCount: 1 ## pushgateway resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ + ## Ref: https://kubernetes.io/docs/user-guide/compute-resources/ ## resources: {} # limits: @@ -1557,7 +1557,7 @@ kubectl --namespace default port-forward $POD_NAME 3000 3. Login with the password from step 1 and the username: admin

Perform the aforementioned steps and add the Grafana’s datasource -as Prometheus with URL http://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local

You can pick the dashboard via the Grafana ID (2471). This is the +as Prometheus with URL https://sc-pipelines-prometheus-prometheus-server.default.svc.cluster.local

You can pick the dashboard via the Grafana ID (2471). This is the default dashboard for the Spring Cloud Pipelines demo apps.

If you have both apps (github-webhook and github-analytics) running on production we can now trigger the messages. Download the JSON with a sample request from the github-webhook repository. @@ -1566,7 +1566,7 @@ --header "Content-Type: application/json"

Then if you check out Grafana you’ll see that you went above the threshold.

14. Step-by-step Cloud Foundry migration

14.1 Preview

Click here to check out the slides by Cora Iberkleid where she -migrates a setup of applications to be compliant with Spring Cloud Pipelines.

14.2 Introduction

This tutorial covers refactoring applications to comply with, and take advantage of, Spring Cloud Pipelines.

We will use a simple 3-tier application as an example:

Figure 14.1. Use Case - Logical View

use case logical

At the end of this tutorial, it will be possible to instantly create a Concourse pipeline for each app and run successfully through a full lifecycle, from source code commit to production deployment, following the lifecycle stages for testing and deployment recommended by Spring Cloud Pipelines. The app code bases will be improved with organized test coverage, a contract-based API, and a versioned database schema, enabling Spring Cloud Pipelines to carry out stubbed testing and to ensure backward compatibility for API and database schema changes.

14.3 Sample application - initial state

The sample application is implemented using Spring Boot apps for the UI and service tiers, and MySQL for the database.

The apps are built using Maven and pushed manually to Cloud Foundry. They leverage the three Pivotal Spring Cloud Services: Config Server, Service Discovery, and Circuit Breaker Dashboard. Rabbit is used to propagate Config Server refresh triggers.

The source code for the two Spring Boot apps is stored on GitHub, as is the backing repo for Config Server.

Figure 14.2. Use Case - Implementation

use case implementation

14.4 Sample application - end state

Through this tutorial, we will be adding Concourse and JFrog Bintray to manage the application lifecycle.

We will also be refactoring the application to comply with Spring Cloud Pipelines requirements and recommendations, including adding/organizing tests and introducing database versioning using Flyway and API contracts using Spring Cloud Contract.

14.5 Tutorial - toolset

14.6 Tutorial - overview

The migration steps are broken down into three stages:

  1. Scaffolding

    • Minimal refactoring to comply with basic Spring Cloud Pipelines requirements.
    • At the end of this stage, each app will have a corresponding pipeline on Concourse. The pipelines will successfully build the apps, store the artifacts in Bintray, tag the GitHub repositories, and deploy the apps to Test, Stage, and Prod spaces in Cloud Foundry.
  2. Tests

    • Add/organize tests to comply with Spring Cloud Pipelines recommendations. Incorporate flyway for database schema versioning and initial data loading.
    • At the end of this stage, the pipelines will trigger unit and integration tests during the Build stage, smoke tests in the Test environment, and end-to-end tests in the Stage environment. The pipelines will also ensure backward compatibility for the database, such that you can safely roll back the backend service app, even after the database schema has been updated.
  3. Contracts

    • Incorporate Spring Cloud Contract to define the API between the UI and service apps and auto-generate tests and stubs.
    • At the end of this stage, the pipelines will catch breaking API changes during the Build stage and ensure backward compatibility for the API, such that you can safely roll back the backend service (producer) app, even after an API change.

14.7 Tutorial - step-by-step

14.7.1 Prep: Before you begin

If you want to simply review the migration steps explained below, you can look at the various branches in the greeting-ui and fortune-service repositories - there is a branch representing the end-state of each stage:

Figure 14.3. GitHub Branches

github branches

If you want to use this tutorial as a hands-on lab, fork each of the following repositories:

Then, create a new directory on your local machine. You may name it anything you like; we will refer to it as $SCP_HOME throughout this tutorial.

In $SCP_HOME, clone your forks of greeting-ui and fortune-service, as well as the following two repositories:

Finally, create a directory called $SCP_HOME/credentials. Leave it empty for now.

14.7.2 Stage 1: Scaffolding

In this stage, we make minimal changes to satisfy basic Spring Cloud Pipelines requirements so that the apps can run through the entire pipeline without error. We make "scaffolding" changes only - no code changes.

The steps in this stage must be completed for both greeting-ui and fortune-service.

1.1 Create GitHub branches

git branch version
+migrates a setup of applications to be compliant with Spring Cloud Pipelines.

14.2 Introduction

This tutorial covers refactoring applications to comply with, and take advantage of, Spring Cloud Pipelines.

We will use a simple 3-tier application as an example:

Figure 14.1. Use Case - Logical View

use case logical

At the end of this tutorial, it will be possible to instantly create a Concourse pipeline for each app and run successfully through a full lifecycle, from source code commit to production deployment, following the lifecycle stages for testing and deployment recommended by Spring Cloud Pipelines. The app code bases will be improved with organized test coverage, a contract-based API, and a versioned database schema, enabling Spring Cloud Pipelines to carry out stubbed testing and to ensure backward compatibility for API and database schema changes.

14.3 Sample application - initial state

The sample application is implemented using Spring Boot apps for the UI and service tiers, and MySQL for the database.

The apps are built using Maven and pushed manually to Cloud Foundry. They leverage the three Pivotal Spring Cloud Services: Config Server, Service Discovery, and Circuit Breaker Dashboard. Rabbit is used to propagate Config Server refresh triggers.

The source code for the two Spring Boot apps is stored on GitHub, as is the backing repo for Config Server.

Figure 14.2. Use Case - Implementation

use case implementation

14.4 Sample application - end state

Through this tutorial, we will be adding Concourse and JFrog Bintray to manage the application lifecycle.

We will also be refactoring the application to comply with Spring Cloud Pipelines requirements and recommendations, including adding/organizing tests and introducing database versioning using Flyway and API contracts using Spring Cloud Contract.

14.5 Tutorial - toolset

14.6 Tutorial - overview

The migration steps are broken down into three stages:

  1. Scaffolding

    • Minimal refactoring to comply with basic Spring Cloud Pipelines requirements.
    • At the end of this stage, each app will have a corresponding pipeline on Concourse. The pipelines will successfully build the apps, store the artifacts in Bintray, tag the GitHub repositories, and deploy the apps to Test, Stage, and Prod spaces in Cloud Foundry.
  2. Tests

    • Add/organize tests to comply with Spring Cloud Pipelines recommendations. Incorporate flyway for database schema versioning and initial data loading.
    • At the end of this stage, the pipelines will trigger unit and integration tests during the Build stage, smoke tests in the Test environment, and end-to-end tests in the Stage environment. The pipelines will also ensure backward compatibility for the database, such that you can safely roll back the backend service app, even after the database schema has been updated.
  3. Contracts

    • Incorporate Spring Cloud Contract to define the API between the UI and service apps and auto-generate tests and stubs.
    • At the end of this stage, the pipelines will catch breaking API changes during the Build stage and ensure backward compatibility for the API, such that you can safely roll back the backend service (producer) app, even after an API change.

14.7 Tutorial - step-by-step

14.7.1 Prep: Before you begin

If you want to simply review the migration steps explained below, you can look at the various branches in the greeting-ui and fortune-service repositories - there is a branch representing the end-state of each stage:

Figure 14.3. GitHub Branches

github branches

If you want to use this tutorial as a hands-on lab, fork each of the following repositories:

Then, create a new directory on your local machine. You may name it anything you like; we will refer to it as $SCP_HOME throughout this tutorial.

In $SCP_HOME, clone your forks of greeting-ui and fortune-service, as well as the following two repositories:

Finally, create a directory called $SCP_HOME/credentials. Leave it empty for now.

14.7.2 Stage 1: Scaffolding

In this stage, we make minimal changes to satisfy basic Spring Cloud Pipelines requirements so that the apps can run through the entire pipeline without error. We make "scaffolding" changes only - no code changes.

The steps in this stage must be completed for both greeting-ui and fortune-service.

1.1 Create GitHub branches

git branch version
 git checkout -b sc-pipelines

Branch version is required to exist, though it can be created as an empty branch. It is used by Spring Coud Pipelines to generate a version number for each new pipeline execution.

Branch sc-pipelines is optional and can be named anything you wish. The intention is for you to use it as a working branch for the changes suggested in this tutorial (hence we create it and also check it out).

1.2 Add Maven wrapper

mvn -N io.takari:maven:wrapper

This commands adds 4 files to a project:

.
 ├── mvnw
 ├── mvnw.cmd
@@ -2268,7 +2268,7 @@
 		BDDAssertions.then(response.getBody()).doesNotContain("This fortune is no good. Try another.");
 	}
 
-}

In this case, in contrast to the integration test we created earlier for greeting-ui, we do not include @AutoConfigureStubRunner since we are using a standalone stub runner application.

3.9 Push changes to GitHub

Push contract-based changes for greeting-ui. You should be pushing the following new or modified files:

  • pom.xml
  • sc-pipelines.yml
  • sc-pipelines/manifest-stubrunner.yml
  • src/test/java/io/pivotal/fortune/FortuneServiceTests.java
  • src/test/java/smoke/SmokeTests.java

At this point, we can run through the full pipeline for greeting-ui and leverage the contract-based stub in both the build and test environments.

Stage 3 Recap

What have we accomplished?

By implementing a contract-driven approach with auto-generation of tests and stubs, we have introduced a clean, structured, and reliable way to define, communicate, document, manage and test APIs

  • Inter-team communication will be simpler

    • Consumer and producer teams can now communicate requirements through codified contracts
    • The inventory of contracts serves as a record and reference for the agreed upon APIs
  • Developer productivity will increase

    • Producers can quickly and easily generate contract-based stubs
    • Consumers no longer have to manually stub out APIs and write tests with arbitrary hard-coded responses - instead they can use the auto-generated stubs and test for contract-based responses
    • Both producers and consumers can validate they are compliant with the contract
    • Producers can verify backward compatibility of API changes
    • Troubleshooting will be easier
    • Failure and feedback will be faster

14.8 Conclusion

This concludes the tutorial on migrating apps for Spring Cloud Pipelines for Cloud Foundry.

Moving forward, the refactoring work needed here can be incorporated into your and/or your team’s standard practices. In short:

Good:

  • Use maven or gradle wrappers
  • Include a Cloud Foundry manifest file in your app repo
  • Include a pipeline descriptor (sc-manifest.yml) in your app repo
  • Create an empty version branch in your app repo
  • Include artifact repository configuration in the pom.xml file
  • Align your Cloud Foundry spaces with Spring Cloud Pipelines model (isolated test space, shared stage and prod)

Better

  • Include default, apicompatibility, smoke, and e2e profiles in the pom.xml file
  • Organize tests accordingly in your app repo

Best

  • Use a database migration tool like flyway
  • Use contract-based API programming

Implementing all the "good" practices above already positions you to instantly create pipelines for your apps usign Spring Cloud Pipelines. This is a huge win in terms of consistency and productivity, and standardization across development teams. Of course, this is an open source project, so it can be modified to meet your needs.

Implementing the "better" practices will ensure the proper tests get run at the proper time. At that point you can add as much test coverage as you need to have high confidence in your pipelines.

Implementing the "best" practices will give you additional confidence in your pipeline and encourage better programming practices for database version and API management across development teams. It will also give you higher confidence in your pipelines and enable you to avoid the cumbersome business of rolling back a database.

Happy coding!

15. Building the project

15.1 Prerequisites

As prerequisites you need to have shellcheck, +}

In this case, in contrast to the integration test we created earlier for greeting-ui, we do not include @AutoConfigureStubRunner since we are using a standalone stub runner application.

3.9 Push changes to GitHub

Push contract-based changes for greeting-ui. You should be pushing the following new or modified files:

  • pom.xml
  • sc-pipelines.yml
  • sc-pipelines/manifest-stubrunner.yml
  • src/test/java/io/pivotal/fortune/FortuneServiceTests.java
  • src/test/java/smoke/SmokeTests.java

At this point, we can run through the full pipeline for greeting-ui and leverage the contract-based stub in both the build and test environments.

Stage 3 Recap

What have we accomplished?

By implementing a contract-driven approach with auto-generation of tests and stubs, we have introduced a clean, structured, and reliable way to define, communicate, document, manage and test APIs

  • Inter-team communication will be simpler

    • Consumer and producer teams can now communicate requirements through codified contracts
    • The inventory of contracts serves as a record and reference for the agreed upon APIs
  • Developer productivity will increase

    • Producers can quickly and easily generate contract-based stubs
    • Consumers no longer have to manually stub out APIs and write tests with arbitrary hard-coded responses - instead they can use the auto-generated stubs and test for contract-based responses
    • Both producers and consumers can validate they are compliant with the contract
    • Producers can verify backward compatibility of API changes
    • Troubleshooting will be easier
    • Failure and feedback will be faster

14.8 Conclusion

This concludes the tutorial on migrating apps for Spring Cloud Pipelines for Cloud Foundry.

Moving forward, the refactoring work needed here can be incorporated into your and/or your team’s standard practices. In short:

Good:

  • Use maven or gradle wrappers
  • Include a Cloud Foundry manifest file in your app repo
  • Include a pipeline descriptor (sc-manifest.yml) in your app repo
  • Create an empty version branch in your app repo
  • Include artifact repository configuration in the pom.xml file
  • Align your Cloud Foundry spaces with Spring Cloud Pipelines model (isolated test space, shared stage and prod)

Better

  • Include default, apicompatibility, smoke, and e2e profiles in the pom.xml file
  • Organize tests accordingly in your app repo

Best

  • Use a database migration tool like flyway
  • Use contract-based API programming

Implementing all the "good" practices above already positions you to instantly create pipelines for your apps usign Spring Cloud Pipelines. This is a huge win in terms of consistency and productivity, and standardization across development teams. Of course, this is an open source project, so it can be modified to meet your needs.

Implementing the "better" practices will ensure the proper tests get run at the proper time. At that point you can add as much test coverage as you need to have high confidence in your pipelines.

Implementing the "best" practices will give you additional confidence in your pipeline and encourage better programming practices for database version and API management across development teams. It will also give you higher confidence in your pipelines and enable you to avoid the cumbersome business of rolling back a database.

Happy coding!

15. Building the project

15.1 Prerequisites

As prerequisites you need to have shellcheck, bats, jq and ruby installed. If you’re on a Linux machine then bats and shellcheck will be installed for you.

To install the required software on Linux just type the following commands

$ sudo apt-get install -y ruby jq

If you’re on a Mac then just execute these commands to install the missing software

$ brew install jq
diff --git a/docs/spring-cloud-pipelines.html b/docs/spring-cloud-pipelines.html
index 793c1961..7c525998 100644
--- a/docs/spring-cloud-pipelines.html
+++ b/docs/spring-cloud-pipelines.html
@@ -32,7 +32,7 @@
 	color: #ffffff;
 }
 
-
+