Hi Adrian Sounds like there's a need for a true workflow engine here. I suspect that for any use case beyond trivial, each user will have her own flavor of CD (TripleO is a good example for this) - some will prefer to use a canary server and test it manually before deploying to other servers, some will deploy to specific servers based on the subset of users they're serving, some will do a red/black type of deployment (Which maps well into environments below), etc. But I think that there should be an user-configurable mechanism to define and tweak these workflows. There will also be additional related workflows - e.g. rolling back a deployment, or updating the infrastructure components of a running application (e.g. database version upgrade). I might be raising a topic that's already been discussed (sorry if I am), but I was wondering how this would fit into the architecture.
Thanks! Uri On Oct 31, 2013, at 6:42 AM, Adrian Otto <adrian.o...@rackspace.com> wrote: > Robert, > > We would be interested in exploring your use case for CD, and help you judge > what would be the best fit. I know that Monty Taylor has identified some > parts of openstack-infra that we could potentially leverage in Solum to > address our CI/CD goals. The design of that feature is still pending, so we > are looking forward to sourcing its of input on that. > > I don't anticipate any fundament gaps that would prevent you from using a > future version of Solum to help narrow your scope. The whole point of our > focus is to try to make these goals easier to achieve, and try to get maximum > leverage of what the OpenStack ecosystem already offers. > > The high level concept behind the GIt Integration feature currently conceived > for Solum is to offer application developers a way to commit code to a Git > repo and upon a git push command, have a remote system trigger a modular > CI/CD pipeline that ends with that application running on an OpenStack cloud > in one or more "environments" (dev/test/stage/prod/etc.). In a simple case > that may be (in the case of a dynamic language like Python) the testing of > the code, arrangement of the commit into a deployable bundle, triggering of > the Solum API to trigger a deployment, automatic generation of a HOT > artifact, and stimulation of the Heat API and any other API calls needed. > > In a more complex scenario, you may want additional features and > capabilities, such as a system like Gerrit to trigger the commit/push, > integrate an artifact repository for storing the builds, etc. Using Zuul for > that would be appropriate for sure. > > There are also dev shops who already have a lot invested into their Jenkins > setups, and will want to bypass portions of what I described above, so there > will be a use case supported where you can just integrate with the solum API, > and pass in a pre-built bundle artifact and bypass part or all of Solum's CI > features, and just use it for deployment and re-deployment and promotion of a > deployment between various environments (dev/test/pros/etc.). You would > expect features like canary deploy in that case that might make it more > attractive than just generating your own HOT artifact in your Jenkins > workflow and passing that in directly for orchestration. > > You should expect a higher level of control for management of the deployed > system with abstracts that let you easily extend the system for monitoring > and management reasons. > > Note that not all this functionality belongs in Solum. Some of it may > actually come from Heat, and other downstream systems. The idea is that we > address the key gaps. > > Adrian > > On Oct 30, 2013, at 9:16 PM, Robert Collins <robe...@robertcollins.net> > wrote: > >> Hi Adrian, >> I'm very interested in Solum, particularly as it relates to >> TripleO : as you know the TripleO story is to treat OpenStack as just >> another application to install via Heat/Nova etc - and we've got a >> major story around pulling from git -> CI + CD pipeline -> automated >> deployment to production. >> >> So - where we can say 'hey, this should be part of Solum', we can hive >> stuff out of the TripleO program into Solum - but only if we've got >> compatible stories. >> >> Right now, our design for CD is basically Gerrit + Zuul - exactly the >> same as gating checks for OpenStack itself. When I look at >> https://wiki.openstack.org/wiki/Solum/FeatureBlueprints/GitIntegration#Flow_Boundaries >> I'm having a little trouble mapping that into your design. >> >> I'm wondering if you can expand on how that hangs together? >> >> Thanks! >> Rob >> >> On 31 October 2013 14:01, Adrian Otto <adrian.o...@rackspace.com> wrote: >>> Clayton, >>> >>> Thanks for adding the diagram illustrating the flow. I expect that "respond >>> to client" may not be a synchronous flow, rather that if creation of a repo >>> takes a while that the API may return a 202 Accepted, and the client can >>> poll a status attribute to determine completion and learn the actual >>> location of the repo created. So in that case "respond to client" also >>> might mean "update async status". This will be particularly important in >>> cases where an external SCM system is used (perhaps Github). >>> >>> I agree that this will be a helpful reference to guide our upcoming >>> interactive design sessions. I have created the first call for >>> participation, which will also be separately announced: >>> >>> https://wiki.openstack.org/wiki/Solum/BreakoutMeetings >>> >>> Adrian >>> >>> On Oct 30, 2013, at 2:45 PM, Clayton Coleman <ccole...@redhat.com> wrote: >>> >>>> In the IRC meeting yesterday [1] we discussed splitting the individual >>>> topics for the git deploy blueprint [2] into rough sub areas. To help >>>> frame the abstractions we've been discussing I roughed out a flow based on >>>> two user inputs, REST API create and a git push and then tried to draw >>>> boxes around the related bits. The abstractions roughly correspond to the >>>> potential areas that can be the focus of break out discussions (and if >>>> they don't a good discussion of why is always helpful). >>>> >>>> Squiggly boxes are potential plugin points and/or strong responsibility >>>> boundaries. Feedback desirable. >>>> >>>> [1] http://irclogs.solum.io/2013/solum.2013-10-29-16.01.txt >>>> [2] >>>> https://wiki.openstack.org/wiki/Solum/FeatureBlueprints/GitIntegration#Flow_Boundaries >>>> >>>> >>>> >>>> _______________________________________________ >>>> OpenStack-dev mailing list >>>> OpenStack-dev@lists.openstack.org >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >>> _______________________________________________ >>> OpenStack-dev mailing list >>> OpenStack-dev@lists.openstack.org >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> >> >> -- >> Robert Collins <rbtcoll...@hp.com> >> Distinguished Technologist >> HP Converged Cloud >> >> _______________________________________________ >> OpenStack-dev mailing list >> OpenStack-dev@lists.openstack.org >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > > _______________________________________________ > OpenStack-dev mailing list > OpenStack-dev@lists.openstack.org > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev