davpin / cf-SpringBootTrader

Microservice version of the Spring Trader app using Spring Boot and Spring Cloud.
Apache License 2.0
104 stars 107 forks source link

Continuous Delivery Support for Spring Trader #41

Open cpage-pivotal opened 8 years ago

cpage-pivotal commented 8 years ago

As a working demo of microservices in action, Spring Trader lends itself very well to showing continuous delivery and zero-downtime deployments. Individual services can easily be tested and updated while the application as a whole continues to operate.

Jenkins is the most popular field tool for CI/CD demos, but the project as currently organized doesn't work well with Jenkins. Jenkins can generate generic "something in this Github repo has changed" events, and trigger a build off of that. But the Github plugin for Jenkins will not work at the granularity of identifying which files have changed, in order to determine which services need to be deployed.

So for field demos, we have had to clone the project, and set up a "one-repo-per-microservice" structure in order to create a Jenkins demo that can build and deploy the correct service on code change.

Does it make sense to reorganize this project in that way, or is there a suggested alternative method for doing CI/CD demos?

davpin commented 8 years ago

are you using polling or github trigger? did you look at advanced options ("additional behaviours") of the git plugin to include or exclude paths from the trigger?

In previous versions of the git plugin, this was more standard and easily assessable, but now its under the "additional behaviours" drop down menu.

PS. its Spring Boot Trader, not Spring Trader - thats another project.

cpage-pivotal commented 8 years ago

Unfortunately, this is a known current issue on Jenkins that polling excluded paths does not work:

https://issues.jenkins-ci.org/browse/JENKINS-25048

kelapure commented 8 years ago

I recommend - setting this pipeline using partner tiles in PCF 1.6 A Concourse pipeline will be pretty cool as well.

davpin commented 8 years ago

concourse pipeline is being researched.

What be good to get views on what people would like to see/demo: Jenkins, GoCD, Concourse, Spinnaker (with integration with jenkins or concourse or other), etc.

For a good pipeline there should be some integration tests and end-2-end tests and maybe some performance tests. At the moment there are none of these but an issue (#39) is open to address this