Download - Jenkins Shared Libraries
![Page 1: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/1.jpg)
\ Jenkins Shared Libraries
Paolo D'Incau@pdincau
![Page 2: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/2.jpg)
\ DevOps
Teams are cross-functional and have end-to-end responsibility on their products.
![Page 3: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/3.jpg)
\ Not only features!
Teams are also in charge to support production, monitor applications and to create/maintain pipelines that fit their needs best.
![Page 4: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/4.jpg)
\ Jenkins pipelines
With Jenkins you can create pipelines using groovy code.
Deployment becomes developer friendly!
![Page 5: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/5.jpg)
\ Beware duplication
Some steps (e.g. deploy) are very similar across teams: you don’t want each team to reinvent the wheel.
![Page 6: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/6.jpg)
\ Separate concerns
You may want to make some things “opaque” to the teams (e.g. changes in orchestrator version, IP address, …).
![Page 7: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/7.jpg)
\ Shared libraries
You can harness Jenkins Shared Libraries and create a set of functionalities that each team can import and use in their pipelines.
![Page 8: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/8.jpg)
\ Example
Let’s see how we can write a library that each team will use to deploy a given containerised application on a generic orchestrator.
![Page 9: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/9.jpg)
\ Code organisation
![Page 10: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/10.jpg)
\ src and vars
Directory ‘src’ has a standard Java source directory structure. It is added to the classpath when executing your pipelines.
Directory ‘vars’ contains scripts that define global variables accessible from your pipelines.
![Page 11: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/11.jpg)
\ Tips I
![Page 12: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/12.jpg)
\ Serializable
Your classes should implement Serializable when they have state, this is needed in order to allow Jenkins to stop and resume your pipelines properly.
![Page 13: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/13.jpg)
\ Tips II
![Page 14: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/14.jpg)
\ Logging
You can’t log directory using ‘println’ or ‘echo’, you have to pass through ‘steps#echo’ which is available in the pipeline context.
![Page 15: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/15.jpg)
\ Configuration
![Page 16: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/16.jpg)
\ Use
![Page 17: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/17.jpg)
\ Conclusions
Jenkins shared libraries are a wonderful tool if you want to ‘DRY’ some common patterns that emerged in your pipelines.
Remember that you are inside Jenkins, so things may behave a little different from what you think.
![Page 18: Jenkins Shared Libraries](https://reader035.vdocuments.us/reader035/viewer/2022062401/5a64a1207f8b9a76568b4e0d/html5/thumbnails/18.jpg)
www.xpeppers.com
/xpepperssrl@xpeppers