{"id":12929,"date":"2018-05-31T10:28:00","date_gmt":"2018-05-31T09:28:00","guid":{"rendered":"http:\/\/www.devopsonline.co.uk\/?p=12929"},"modified":"2018-05-31T10:55:30","modified_gmt":"2018-05-31T09:55:30","slug":"continuous-integration-testing-and-delivery","status":"publish","type":"post","link":"https:\/\/devopsnews.online\/continuous-integration-testing-and-delivery\/","title":{"rendered":"Continuous integration, testing and delivery"},"content":{"rendered":"
Software development is usually undertaken by one software development team or a number of software development teams. Each software development team would usually consist of developers, testers and business analysts.<\/p>\n
Historically, software development was seen to be an act of just writing code; the requirement spec would usually be divided along functionality lines and assigned to developers within a single development team, or assigned to software development teams.<\/p>\n
For an extended period of time, code would be put together and towards the end of this exercise, for the very first time, the developer starts to think about integration. Integration could mean a number of things:<\/p>\n
There are a few issues that I have observed with this approach:<\/p>\n
The issues that I have highlighted above can be mitigated using continuous integration, which is a process of continuous merging code using build tools such as CircleCI, TeamCity and Jenkins. Continuous integration is a group of practices that ensures that code is built as frequently as each code check-in, unit\/integration tests are executed, code is automatically deployed to a test environment and then executes some more end-to-end tests on the deployed system.<\/p>\n
This is a process that is designed to be repeatable and as mentioned earlier, this\u00a0process would be executed each time code is checked-in to the repository. As you must have noticed, the process that has been described above, doesn\u2019t exclude tests, so in my own opinion, continuous testing cannot be taken away from continuous integration; it is integral to the success of a continuous integration process.<\/p>\n
The goal of an agile team is to ensure that we can deliver a quality product to the customer and ultimately our users; as a result, a few years ago (2010), Dave Farley and Jez Humble wrote a continuous delivery book. In my own opinion, continuous delivery takes the concept of continuous integration a bit further and continuous delivery introduces an extended set of practices that ensure we can continually\u00a0release small increments to higher level environments and eventually into production environments.<\/p>\n
The release of software could potentially be a nerve-wracking exercise and continuous delivery when done properly tends to take the nerve out of the release process. With the release process being a regular activity, then the risks\/fears associated with releasing software is minimal. I have been fortunate to work on teams that have released software in frequencies ranging from two weeks to releasing multiple times in the same day into production.<\/p>\n
The journey from infrequent integration to continuous integration (CI), and eventually to continuous delivery (CD) takes a lot of practice and hard work. My advice is to commence this effort in small increments, automating everything and keep the process repeatable until release because of another routine process for the team.<\/p>\n
One last thing to always remember is that continuous testing is at the centre of all\u00a0this, tests must be automated and executed all the time. Every time the CI\/CD jobs recompiles or rebuild the source code, tests (unit and\/or integration test) must be run and each time a deployment is done to a new environment, tests (acceptance\/end to end tests) must be executed.<\/p>\n
Written by\u00a0Agile Software Delivery Consultant at Barclays, Samuel Adesoga<\/p>\n","protected":false},"excerpt":{"rendered":"
Agile Software Delivery Consultant at Barclays, Samuel Adesoga, highlights software development issues that can be mitigated using continuous integration<\/p>\n","protected":false},"author":2,"featured_media":12932,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"content-type":"","pmpro_default_level":"","footnotes":""},"categories":[1],"tags":[286,2728,2488,654,977,656,2829,2830],"yoast_head":"\n