Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues
-
Upload
ixsystems -
Category
Technology
-
view
2.646 -
download
3
description
Transcript of Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues
![Page 2: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/2.jpg)
Presentation Overview
● Introduction to Jenkins and Continuous Integration (CI)● Describe how Jenkins was set up in FreeBSD cluster
![Page 3: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/3.jpg)
Jenkins
![Page 4: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/4.jpg)
What is Jenkins?
● Continuous Integration tool implemented in Java● written by Kohsuke Kawaguchi at Sun
![Page 5: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/5.jpg)
What is Jenkins?
● Now an Open Source project: http://jenkins-ci.org● Hundreds of plugins available● Hundreds of users● Active developer community
![Page 6: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/6.jpg)
Jenkins User Conference 2013
![Page 7: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/7.jpg)
Continuous Integration
![Page 8: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/8.jpg)
What is Continuous Integration?● Developer commits code changes● System verifies that code builds● System verifies that code passes tests● Code is deployed
![Page 9: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/9.jpg)
Example Production CI Workflow
![Page 10: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/10.jpg)
Jenkins in theFreeBSD cluster
![Page 11: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/11.jpg)
Motivation
● Use more modern development tools in FreeBSD● Help improve quality of FreeBSD● Take advantage of large Jenkins ecosystem
![Page 12: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/12.jpg)
Setting up Jenkins in theFreeBSD cluster
![Page 13: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/13.jpg)
Task #1: Set up machine
● [email protected] provided:● vmhost.freebsd.org:● 16G RAM, 1.8TB disks● Intel E5620, 16 CPU cores● FreeBSD 11
![Page 14: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/14.jpg)
Task #2: Set up VM's
● Two 200GB disk images created● Image 1: jenkins-9.freebsd.org (FBSD 9)● Image 2: jenkins-10.freebsd.org (FBSD 10)● Run VM's under BSD Hypervisor (BHyve)
![Page 15: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/15.jpg)
Task #3: Create rc.d scripts
● rc.d scripts start VM's on boot of vmhost● VM's send console output to /dev/nmdm● Example to connect to VM console: cu -l /dev/nmdm0B
![Page 16: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/16.jpg)
Task #4: Install Jenkins in VM's
● pkg install devel/jenkins● OpenJDK pulled in as dependency ● configure some settings in /etc/rc.conf● service jenkins start
![Page 17: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/17.jpg)
d
Task #5: Set up nginx
● DNS CNAME: jenkins → jenkins-9● Nginx reverse proxy set up: https://jenkins.freebsd.org → http://jenkins-9.freebsd.org:8180/jenkins● nginx https configured with SSL certificate
![Page 18: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/18.jpg)
VM Host
vmhost.freebsd.org (FreeBSD 11)
jenkins-9.freebsd.org(Bhyve VM)
jenkins-10.freebsd.org(Bhyve VM)
![Page 19: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/19.jpg)
jenkins-9.freebsd.org VM
jenkins-9.freebsd.org (FreeBSD 9)
Nginx proxy Jenkins Java VMWeb request
![Page 20: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/20.jpg)
d
Task #6: Set up authentication
● Jenkins authentication via LDAP used● Configured via Jenkins web UI● FreeBSD LDAP servers at Yahoo used
![Page 21: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/21.jpg)
LDAP authentication
jenkins-9.freebsd.org (FreeBSD 9)
Nginx proxy Jenkins Java VMWeb request
Authenticate (ldaps://)
![Page 22: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/22.jpg)
d
Task #7: Set up builds
● Set up “free-form builds” via Jenkins web UI● On Unix, “free-form” builds executed via “/bin/sh -xe”, if first line lacks “#!” (shebang)
![Page 23: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/23.jpg)
![Page 24: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/24.jpg)
What do we have so far?
![Page 25: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/25.jpg)
Developercommits
BuildTest
(TBD)SCM
(svn.freebsd.org)Deploy(TBD)
Implementation status of CI
● Latest project status: http://wiki.freebsd.org/Jenkins
![Page 26: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/26.jpg)
What's next?
![Page 27: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/27.jpg)
d
Next steps
● Integrate with Julio Merino's Kyua framework at BSDCan● Set up more builds● Boot results of builds in VM's● Coverity integration
![Page 28: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/28.jpg)
Where do I find out more?
![Page 29: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/29.jpg)
Further information
● Project page: http://wiki.freebsd.org/Jenkins ● Contact us:[email protected]
● Join in, and help out!
![Page 30: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/30.jpg)
Special Thanks
● [email protected]:● Craig Rodrigues, rodrigc@ (project lead)● Li-Wen Hsu, lwhsu@, (port maintainer)● Steve Kreuzer, skreuzer@ (devops ninja)● Steve Wills, swills@, (port maintainer)● R. Tyler Croy, tyler@, (Jenkins guru)
![Page 31: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues](https://reader034.fdocuments.us/reader034/viewer/2022052618/554f42efb4c90572088b541d/html5/thumbnails/31.jpg)
Special Thanks
● [email protected]:● Sean Bruno, [email protected]● Peter Wemm, [email protected]● Glen Barber, [email protected]