Background: Our company is an IT consultancy firm specialised in the automation and optimisation of trade processes of Italian and international brands operating within various sectors. We're bridging the gap between the strategy and implementation of different sales channels through integrated, scalable and user-friendly solutions that allow the entire trade process to be maximized. That said, we faced the problem that building IOS apps using on-prem hardware was expensive and not scalable enough. We found in Azure DevOps pipelines the possibility to build using MacOS nodes-as-a-service, without the burden of maintenance. But on the first sight that would mean we had to abandon Jenkins although only for IOS related pipelines. As we already use Jenkins for other workloads, and we wanted to keep a unique place of control for all our pipelines.
Goals: To relieve developers from the process of build and deploy.
Solution & Results: We decided to use our on-prem Jenkins cluster to orchestrate and drive Azure DevOps Pipelines. We wrote a Jenkins pipeline that checks out sources from our local Gitlab repository and to push them to the remote git in Azure. The pipeline then checks if Azure DevOps is already running a new build for the same commit-id. If it's not running, the pipeline triggers a new build on Azure DevOps.
To do this we use az-cli inside a docker container. Jenkins then waits for the build to complete, fetches the compiled artifact, pushes it to our internal repository and sends a notification to the Quality Team for Acceptance testing.
Super flexibility of Jenkins made the difference.
We rely on the flexibility of Jenkins scripted pipelines and the central management of security credentials. Super flexibility of Jenkins made the difference. Here are the results thus far!