What is Continuous Integration?
As defined by Sam Guckenheimer, Product Owner, Visual Studio Team Services, "Continuous Integration (CI) is the process of automating the build and testing of code every time a team member commits changes to version control"
The main motto of continuous integration is "Fail Fast" - if something is wrong, let it fail fast and come out early - don't wait until things pile up to figure out that something went wrong. The most obvious benefit of this is that anything that breaks a stable build will be flagged immediately.
From a high level, CI is an Agile-enabler. One of the goals of Agile is to make sure that a team works closely together, and everyone knows what is going on with the project, what the status is, etc. With CI, one can see the build status, new changes in the latest builds, and even get a copy of the latest binary to check it out. This brings in more accountability and transparency to the entire development process.
Imagine an organization with two or three developers, working on just a couple of modules. Developers will commit code and a lead developer will pull all changes daily once and run a build. Say the team lead failed to run a build every time due to other commitment. By the time a daily build is run, if something breaks, they must go back to logs and figure out whose commit broke the build. This essentially wastes the lead's time as well as other developers' time, with whom the lead must coordinate to figure out the issue and fix it.
(Want to know the benefits Continuous Integration can to overall software development process, click here)
Continuous Integration Tools
Some of the most widely used CI tools in the industry are:
- VSTS and TFS
- GitLab CI
- Travis CI
Various Stages of Continuous Integration Process
Even though CI is about simply integrating everyone's contributions, it is usually used to do more than that. We build a pipeline for our CI process, which can take care of the below items as well:
- Static Code Review: This ensures that developers commit code that passes the organization's coding standards - refactored, efficient code; documented, well-indented code; no unused variables, unused methods, etc. This can be generated as a report for each build and is something developers can learn and improve upon.
- Unit Tests: Unit tests run the automated tests on the code/build after the build is generated. This makes sure there are no regression issues caused by the new changes. As software grows, this ensures stability and confidence in the product.
- UI Tests: These run the UI tests which are functional tests that, make sure the UI is functioning correctly and user stories are working as expected.
- Profiling: This stage can even run profiling by running the new build on an actual device and giving a report, maybe comparing with previous runs, regarding memory, CPU, battery, and network usage.
- Automated Reporting: If the build fails due to unsatisfactory results in any of the above stages, send a report to developer/managers. If the build succeeds, it will be sent to QA/Stakeholders, along with release notes.
Does the idea of CI thrill you? If you are interested in having CI powered development process, then V-Soft with its right cult of expertise can assist in getting effective mobile app. To learn more about our abilities set up a free consultation with one of our talented experts to discuss your needs today.
About the Author
Aswin Kumar is the Practice Head for Mobile Solutions at V-Soft Consulting. Aswin leads the design and development that collaborates with leading companies to build mobile capabilities for existing and newly innovative platforms. Aswin and his team understand the requirement for back-end integration of cloud or premise based systems with a mobile application that delivers industry leading results for the enterprise. Aswin also leads the emerging technology initiatives like AR, AI, and ML.
Connect with Aswin on LinkedIn here, email email@example.com, or learn more about how mobile enablement done right can transform your company here.