SOFTWARE AUTOMATION

Autoria: Nelson Graça
Knowledgeworks

Software builds, releases and deployments 

In order to easily keep an eye on the compilation and test status of pull requests and currently being developed features, my main choice is Jenkins, TeamCity is also a good option, but I believe that Jenkins has more plugins and integrations, but please feel free to prove me wrong. The addition of pipelines allowing to have builds per PR and branch was a huge improvement. This leaves the developer free to finish his feature without worrying if everything passes, of course he should still ensure new tests are ok, but the old ones can be run only after the feature is finished, such will be the case for regressions for example, so less time is wasted waiting for tests.

Since I mainly work with Java the release builds and deployment to a Maven repository is completely automated, all I need is a job that monitors the release branch and when there is anything new the build and deploy runs (through Maven) this makes closing the release a faster process since there is no need to wait for artifact upload. Other option is to finish the release with Jenkins but I have yet to find a way to deal with conflicts when merging to develop.

Finally deployments are done either on a job that is triggered manually or can even be automatic after the build of the release is done. Another big advantage of this automation is that there are no more instructions on how to make a deployment, it’s automated and always the same so there can be no human made errors, well there can, after all the deployment job is created by a humam, hence the need to test the automations themselves. Other option may be RunDeck but it’s still under evaluation, the feature of being able to schedule when the jobs run sounds great specially if your deployment is not redundant (yet) and needs to be done at times like 3am when there is little to no usage in order to avoid impact, and since it’s all automated nobody needs to sacrifice sleep hours, but please don’t do this without proper monitoring and alarms if something goes bad (beware Murphy’s law).

Lê o artigo completo aqui: