Adopting Continuous Integeration and Continuous Delivery for Small Teams

Moutaman Kamal Aldeen Abbass, Rahama Ibrahim Elyass Osman, Abubaker Motasem Hmad Mohammed, Mohannad Waheed Ahmed Alshaikh · 2019

Continuous Integration is the practice of merging small code changes frequently rather than merging large number changes at the end of a development cycle. In addition, after each integration, the system should be re-built and re-tested to ensure that the system is still working after each change, and it's safe to build on top of it. Continuous delivery is software practice in which the software can be deployed to the market at any given time. Developing continuous integration and continuous delivery platform will solve a lot of problems in old agile methods such as increases time to find and fix bugs as testing process late, deploying software that has not been fully tested and shared testing resources which cases delivery delays, when multiple projects are ready for testing one project get tested and others are queued waiting for the testing resource to be released. Also continuous delivery guides development organization to build valuable software and to increase the number of releases. With all this benefits there are some problem obstructing companies from moving to the new platform, some of them are human factors such as human resistant to changes and other are technical such as moving to new platform require learning new tools and training. To help overcome these problems we need to develop simple platform which is more usable and easy to learn. Also some problems happen when applying CI/CD some of them related to testing and others related to integration. Testing problem are: ambiguous test result which is test results that doesn't guided the developers to finds bugs, which increases time to find and fix it; time consuming tests which require developers to waiting large amount of time for testing reports after each small changes, this waiting cause the developers to practice large commit (merging large number of changes) which slows the integration process. Slow integration mean large number of conflict lines, now instead of doing productive process developers wasting time to solve this conflicts. To overcome these problem we introduce a new way to configuring tests. As you see solving time consumes test will solve integrations problems. To reduce testing time we need to organize the test in such way that tests are more appointed and targeted to changed code only. This method enforces a concept called micro-pipeline. A micro-pipeline is group of testing blocks, each block is responsible for specific type of test for specific unit of code, connected together in such a way that passing the block tests triggers the next test block in series. When integration happen the developer specify test block which is responsible for testing made changes only. The idea behind micro-pipeline is to test affected part only.

Read the paper · More papers on PaperTik