The purpose of drafting this post, is to share my learning. I believe this is the beauty of this forum that people share learning and resolved their queries. This is just a small attempt from side to share my experience with Jenkins.
Why CI?
Already many of you know the answer, any automation suite does not add its real value unless its successfully attached to continuous build systems. And we already know Jenkins is great tools to make this possible.
Integration with Jenkins Approaches:
Approach 1: Run automation with Android/IOS development builds (the node could be Jenkins slave or master).
In this approach, Jenkins automation job triggers on same machine to which it triggers Android/IOS development build.
Here, automation suites use the same Xcode and Android configuration which already used by development builds.
Approach 2: Run automation on Jenkins slave, separate from Android/IOS development builds
This approach is more structured, and keep automation job on separate node. but this is more difficult approach as compare to previous one. Below are the challenges you may face.
-
Setting up slave node to Jenkins (Below are some useful links), ensure that you already exchange public key with master node.
https://wiki.jenkins-ci.org/display/JENKINS/Step+by+step+guide+to+set+up+master+and+slave+machines
http://www.parsed.io/setup-a-mac-slave-for-jenkins/ -
Setting up Android SDK and Xcode, ensure that all installation carried out at global location (/Applications or /opt or /etc)
-
Installed Provisioning profile and developer certificate should be same as Jenkins master node
-
In order to run automation on slave, the required artifacts needs to be copied from Android/IOS development builds. Jenkins already have plug in: https://wiki.jenkinsci.org/display/JENKINS/Copy+Artifact+Plugin
Hope this helps, who is trying to integrate automation with Jenkins.
Please let me know if anyone has suggestions or doubts.
Thanks,
Priyank Shah