Marcin Zajączkowski
From Codearte
Experienced architect aiming for high quality solutions. Very engaged in evangelising Software Craftsmanship, Clean Code and Test-Driven Development as a conference speaker and trainer. An expert in deployment automation with Continuous Delivery and Continuous Inspection of Code Quality. An enthusiast of Reactive Systems and broadly defined concurrency. Besides, open source author and contributor, a proud Linux user.
Jenkins as a Code
Jobs in Jenkins (or any other CI/CD tool) can be created and updated manually using GUI. It is ok if you have a few/several of them. However, most of the companies grow and you can quickly wake up with dozens or hundreds of jobs to maintain.
A new email address/alias to get notification about failed builds? Global migration to the better™ SCM? No way to do it manually with GUI in a convenient way. It just doesn’t scale. Manual scripts using Jenkins API? Better, but hard to test and maintain. The same applies to plugin installation, credentials managements etc. Luckily, there is a better way.
During the talk we will present how Jenkins Job DSL together with Ansible can be used to automatically provision Jenkins instance and maintain any number of jobs. We will show how to define jobs and views in Groovy based DSL and test automatically that the generated structures are exactly the same as expected in Jenkins. Expect live demo - we will setup fully functional Jenkins instance with just one click!
P.S. Jenkins 2.0 brought a breath of fresh air to the ecosystem. Find out how it impacted Jenkins management.
Interesting nooks and crannies of Spock you (may) have never seen before
Spock becomes more and more widespread among Java developers. Thanks to its flat learning curve, a sensible Java programmer (without prior Groovy experience) can start writing Spock specifications within several minutes. However, when you combine Groovy & Spock magic, a new fascinating meta-world is created. The exploration of its every nook and cranny can take much longer (and it's definitely much more efficient with a guide ;-) ).
There will be no basics during my presentation, just a set of more advanced (and/or less known) techniques and mechanisms, the use of which can even more simplify and facilitate the testing of our code. You have to be forewarned that we will also visit those dark areas where it is better not to enter, things that do not work at all or work in a way nobody expects.