Cooperation with
ifm electronic

Jenkins
Docker
GitLab
Bash
Python
MinIO

Baseline situation

ifm electronics used multiple distributed Jenkins instances to run various CI pipelines that built their internal Yocto toolchain and stored the resulting artifacts directly on the Jenkins server for storage.

With the increasing number of resulting artifacts, a potential bottleneck for the future was quickly identified regarding the customer's infrastructure requirements, putting the IT department in the situation of finding a sensible, quickly implementable, as well as future-proof and robust solution.

Our solution

Team Parallax designed and implemented a Jenkins orchestrator that spawns Docker Jenkins agents on dedicated build nodes. The artifacts generated in the Jenkins pipeline are stored in MinIO (bucket storage based on S3). Existing artifacts were migrated using an idempotent script solution we wrote that detects all artifacts, extracts them, uploads them to the S3 storage, and updates the information in the respective Jenkins jobs.

Old build agents were dockerized and multiple instances can now run in parallel, thereby reducing the overall hardware used to a minimum.

Situation after cooperation

The development department of ifm electronics now has a modular, reproducible, and easily exchangeable Jenkins structure that is easy to update and scale. The artifacts are now centrally located at one storage location and can be managed from there more easily (partially) automated.

The provided code, as well as the declarative infrastructure definitions (Dockerfiles, scripts, etc.) were deposited as part of the development in ifm's own Git repositories and extensively documented. The Jenkins build agents can be rebuilt at any time via the provided GitLab CI pipelines.

After the completion of the project, Team Parallax received further project inquiries from different ifm development teams.

Conclusion

The role of Team Parallax was initially to conduct an as-is-to-be analysis of the situation, conceive a new solution in the sense of the requirements, and ultimately implement it so that a migration of the existing Jenkins instances could be carried out afterwards, outside of regular operation, without incidents. Due to very good and transparent communication on both sides, supported by weekly coordination, the objectives were achieved within a few weeks.

Download our Success Story

Want to get in touch?