This is a guest post by Jamie Moore, Sr. Solution Architect at Mobile Labs.
What are the unique challenges for Jenkins users when deploying continuous delivery initiatives?
It’s truly an exciting time for enterprise mobility. With so many new devices coming into the market, mobile developers, testers and QA are under pressure to not only respond to digital demand, but to respond faster than ever before. But how can an enterprise mobility team be responsive, while at the same time remaining agile and flexible enough to keep innovation alive?
As a Jenkins user, you can leverage this tool for continuous delivery to achieve real meaningful results. Here are three common areas that might be challenging when using Jenkins for continuous delivery and what you can do to forge ahead successfully.
3 Key Components for Successful Continuous Delivery
#1: Build a Comprehensive Suite of Automated Tests
To achieve continuous delivery one of the most important components is the suite of automated tests that validate whether your application functions correctly or not. The first challenge in building this suite is selecting the appropriate test tool. There are many choices available targeting a vast array of skill sets. There are open source tools, targeted more toward programmer-type testers: tools such as Appium, Cucumber, Espresso, XCUITest, etc. There are commercial tools that are not as programmer focused, such as Ranorex, IBM Test Workbench, Silk Test, Tricentis Tosca, etc. It’s extremely important to select the tool(s) that are the best fit for your team.
Once you’ve decided on the test tools, then you must build the tests. The challenge here is that there are also a variety of different test types. There are unit tests, functional tests, performance tests, security tests, integration tests and the list goes on. All of these tests have to be built and validated before they can be leveraged in the continuous delivery pipeline. After they are built, these tests need to be easily accessible when called by Jenkins for execution.
When automated testing is done accurately and correctly, your enterprise mobility team can increase app quality while reducing app delivery time dramatically. This also holds true for regression testing to make sure that the software is still functioning. After all, it’s important to make sure that all systems are working properly to fuel your team to success.
#2: Set up a Device Cloud
Once you have a suite of automated tests, it’s important to test them on real devices. Although mobile emulators and/or simulators have their place in the mobile testing process, you can get your most accurate results by testing on a real device.
It can be cumbersome and expensive to share real devices among your team of mobile developers, testers and QA. Naturally, this situation becomes even hairier (and more expensive) when your team members are not sitting in the same office. The best way to stay agile and to continue to deliver on time is to set up a device cloud to manage device sharing.
A private mobile device cloud provides many benefits. You can rely on either an on-premise solution, where the devices on stored in-house on your network, or a hosted solution with a third-party managing dedicated devices for your team. A device cloud will allow you to offer a pool of devices that all members of the enterprise mobility team can use at any time, regardless of geographical location. By developing and testing for the same devices, team members can get continuous, faster results to make improvements.
Another good tip for utilizing a device cloud is to choose one that is tool-agnostic. With so many commercial and open source tools available, you want to be able to use Jenkins and any other tools that your team requires easily and without complications.
#3: Use Jenkins to Enable Continuous Delivery for Mobile
Jenkins is the glue that makes DevOps and continuous delivery possible. However, for mobile, it’s impossible to achieve continuous delivery if Jenkins can’t connect to real devices. That’s been the challenge for release engineers. It’s not like the web environment where you can easily spin up a virtual machine and deploy your new web application. And, as mentioned earlier, you need to do your testing on real devices.
You may already have Jenkins building your mobile applications, but what happens after it’s built? How does it get deployed? How do all of the automated tests get executed? Jenkins can perform these steps, but you need to have the proper infrastructure, specifically the two points we have already discussed: a suite of automated tests and real devices accessible in a device cloud. From there, it’s a simple matter of utilizing a Jenkins Build Step to deploy the application onto the devices. Once the application has been deployed, then Jenkins can use another Build Step to kick off the suite of automated tests on real devices. Feedback from the execution of these tests will confirm if your application is ready for production deployment.
If you would like to learn more about continuous delivery using Jenkins, then I invite you to attend my presentation on August 30th at 1:45 p.m. PT at Jenkins World 2017.
Still need to register for Jenkins World? Enter code JWHINMAN for 20% off your full conference pass!