Tuesday 8 April 2014

Continous Integration and Continous Delivery - Pitfall pattern when building and deploying software for the enterprise

Part 7: My current approach

Right now we are in a transition phase, with a new setup, which we will probably change until the day our company ceases to exists, but there are major groundbreaking changes here which have and will change our daily work immensely.
  • Source control
    • Git (on GitHub), every other SCC I've tried (SVN/VSS/Mercurial) are nothing i mean nothing compared to Git.
  • Build domain
    • AppVeyor (have a look at TravisCI if you're not on Microsoft) (I will never go back to TeamCity, ever). AppVeyor is the ONLY product I could find offering platform independency via clear text configuration in your own repo. Seriously, ANY developer at my work can configure a complete build setup (build, test and package) within minutes. Disregarding PaaS services like AppHarbor/Heroku/Azure/other, NO ONE else can do that. PaaS is different story since everything is hosted in the cloud and that is not always an option for an enterprise setup.
  • Deployment domain
    • Octopus Deploy
    • Unfortunately there are not many tools like this for the Microsoft platform. Octopus is new and lacking basics things like WebHooks and platform independency. But its the best i have been able to find so far.
    • AppVeyor is also offering a deployment option, I just hope its a completely separate product so they do not mix up the domains like all the others. This option is still to new and lacks some of the great concepts which are available in Octopus Deploy.
  • Provisioning (only a work in progress at our company)
    • Puppet/Chef/Vagrant/DesiredStateConfiguration
    • Puppet/Chef both lack a lot of support for Microsoft. But that is due to the nature of Microsoft. Microsoft tends to be complicated and well, not very well thought off. But Microsoft themselves is starting to open the doors with DSC among things such as support for Chef/Puppet on Azure.
    • DesiredStateConfiguration is so new and given Microsoft very bad reputation for making life easy for us, it will probably be a while until its mature enough for serious use.
    • The thing about provisioning on MS is that its a bit grey where the provisioning domain starts and where the application domain starts. But thats a story for another time.
  • Workflow integration
    • AgileZen (is missing web hooks)
    • Custom plugins for AgileZen and GitHub
    • Custom webhooks for triggering Octopus deployments
    • Slack (has integrations for just about everything)
  • Server setup
    • Manly private cloud, working towards moving the majority of the apps into the cloud. Some apps allready on Heroku and some on AppHarbor.
Next: Part 8: A conclusion

No comments:

Post a Comment