Help with Github Flow + Fabric8 + jenkins

20 views
Skip to first unread message

jer...@saasindustries.com

unread,
Nov 28, 2016, 12:04:52 PM11/28/16
to fabric8
I am trying to work out the CI/CD partof Fabric8 + jenkins

I would like to adopt the Github Flow, not to be confused with gitflow (https://guides.github.com/introduction/flow/)

In the default state of Fabric8 and the pipelines, the only things which are considered are those that are placed in master. But we need to dev off of a fork of master and have things go through a non master pipeline until we are confident the feature, or increments of that feature can ship utilizing feature flags. Merging to master should not be done until the team decides they can safely ship it.

A few observations:

- Development on the local stack is not recommended. There are too many integrations and etc which makes a smooth migration to production a steep climb. We tried this lifecycle and we experienced that steep production mountain. Also, local is far too complex for a large engineering organization to adopt, and development in the cloud is so much easier for operations as well as the developer teams. So we are opting to run development in the cloud itself, also powered by fabric8. Some experiments will still happen on the local with minikube, but for the most part, development will occur in the cloud.

- We were going to go with two fabric8 namespaces. One for development and one for the production pipeline. We call them "app" and "dev".

- Master should really only be having 1 thing going through it at a time. This way if we catch something we don't like, we can simply roll back master and redeploy that.

Some questions:

- Do you think we would be ok with a single dev instance running as a namespace, or a dev namespace per team? So, single cluster with dev running as a namespace and app running as a namespace.

- How would we accomplish configuration so we would not have to change configuration code when we want to go from a fork (dev) to master (app)? Take advantage of configMap? Or is there a way we can do this in the Jenkinsfile using multi-branch pipelines?

- Is the approach I am thinking of taking going to lead to lots of problems? ideally I would rather not do local development environments. What might be best practice using these technologies?

I am sure many of you have already had to tackle this issue, so I would be very thankful if some of you can share how you have setup the Github Flow and how that configures into the pipeline and etc so you don't have to change code when you want to do a pull request back into master. I am rather hindered by my use of Gitflow in the past, so trying to make sense of how I can develop in the cloud and ship in the cloud with CI/CD in both spots. We will have a little manual QA for edge cases which we will then add coverage for, but most everything will be entirely automated for each build.

Thank you


 
Reply all
Reply to author
Forward
0 new messages