Development teams that are created with multiple developers or varying skills and across multiple locations know that bringing together the different branches of code the team members have been working on can be problematic. Even if there aren’t any merge conflicts, there’s always a chance that some functionality may be affected causing issues with the final build.
For a continuous integration and continuous delivery of IT solutions, UCS has taken steps to use services with innovative market practices which help us deliver a higher quality product.
Jenkins server integration with our development servers helps us to check code commits from developers on the gateway before the master merge; hence facilitating unit tests, integration tests, and build failure checks. This gives each developer the opportunity to work on their part of the code and identify issues at an early stage. With Jenkins, organizations can accelerate the software development process through automation.
Jenkins, the leading open source automation server, provides an automated build procedure for the latest code commits and helps module testing with its choice of integrated automated scripts. It helps developers in building and testing software continuously. This helps in code reviews and coverages of each line of code written, which also helps to classify gated and non-gated bugs for a particular release. Testing is improved thus providing more time for the testing team to concentrate on corner cases and to mitigate risk. This helps the program managers to have a clear picture on deployment and give customers better market experiences on time with quality codes.
Jenkins tools installation with our servers means our customers will experience hassle-free deployments. There will be an acceleration in development cycle with quality code. More enhancements to the code can be done in the same timeframe as Jenkins helps in mitigating duplication of effort. With Jenkins implemented, reduction in time for regression tests will also prove beneficial for businesses in the long run. Each commit is accessed properly with help of this tool, which gives us a clear picture of dependencies and functional picture of the code, this in turn will help having selective commits according to the business requirements. Customers will get what are they focusing on, rather than having a redundant humongous codebase.
Continuous Integration (CI) is the process of automating the build and testing of code every time a team member commits the code to repository. It is a best practice approach to the needs of the developer to integrate his code to rest of the team’s code base. Waiting days or weeks to integrate code creates many merge conflicts, hard to fix bugs, diverging code strategies, and duplicated eforts.
Continuous integration can be done using multiple tools like Travis CI, Circle CI and Jenkins CI etc. We chose Jenkins CI, as it is most widely used and also free of cost (!) as it is an open source tool. Jenkins is easily configurable and comes with an extensive pool of plugins which makes Jenkins flexible and allows building, deploying and automating across various platforms.
What does the Continuous Integration(CI) server do?
- Jenkins + Fast Lane + Slack is our Continuous Integration environment for iOS. Once a developer commits the code to Git (bit bucket), the CI server monitors the repository and checks out changes when they occur.
- It builds the system and runs unit and integration tests.
- It notifies the team of the build status success or failure, in our case Slack channel.
Benefits of Continuous Integration(CI)
- Complete automation of build generation process, from building the app till .ipa generation which saves approximately 15 mins for each build and approximately 30 minutes for App Store submission, blocking the developer from carrying out any other development task using Xcode.
- Reduces integration problems, allows developer to deliver software more rapidly.
- Can run the automation test cases if provided, for every commit.
- Can upload the .ipa file to diawi or FTP server and provide us a installation link.
- Helps developers catch issues early and debug them easily.
- Prevention and reduction of production and stating errors.
- Continuous Integration tests our code against the current state of our code base and always in the same (production-like) environment, thus providing immediate feedback on system-wide impact of local changes.
Continuous Integration for SalesWorx
At UCS, we are using Jenkins, Fast Lane and Slack as our Continuous Integration environment for SalesWorx, our field sales automation solution. New features are continuously being added to SalesWorx and, therefore, continuous enhancements are being done by a team of iOS developers. Source code of SalesWorx is hosted on a git private repository to which developers create respective branches for their tasks and start working on them, once a developer completes the assigned task, he/she will commit the code to git and Jenkins immediately starts a build process and generates a build by checking out latest code. It notifies the developers on their Slack channel regarding the result of the build. Using the post build phase plugin, the generated IPA is being hosted on diawi to get an installation link that can be shared with the QA team, thus automating our complete build generation process.
For projects, if the client requests it, we can also configure a Jenkins file in their facilities that executes the whole process, which allows a quick deployment in any continuous integration environment. This approach accelerates the process and reduces the requirement for developers to manually run these processes, thus saving their time.
If you are interested in learning more about how Continuous Integration for IOS Apps or Mobile App development, or knowing more about advantages of Jenkins, Docker, CI, Unit Testing, DevOps, etc. Get in touch with us at http://ucssolutions.com.