jenkins and bhyve: continuous integration for …rodrigc/jenkins_bhyve.pdfjenkins and bhyve:...

31
Jenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues [email protected]

Upload: lamtram

Post on 11-Mar-2018

225 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Jenkins and Bhyve: Continuous Integration for FreeBSD

Craig [email protected]

Page 2: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Jenkins

Page 4: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

What is Jenkins?

● Continuous Integration tool implemented in Java● written by Kohsuke Kawaguchi at Sun

Page 5: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Jenkins User Conference 2013

Page 7: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Continuous Integration

Page 8: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Example Production CI Workflow

Page 10: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Jenkins in theFreeBSD cluster

Page 11: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Setting up Jenkins in theFreeBSD cluster

Page 13: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

LDAP authentication

jenkins-9.freebsd.org (FreeBSD 9)

Nginx proxy Jenkins Java VMWeb request

Authenticate (ldaps://)

Page 22: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org
Page 24: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

What do we have so far?

Page 25: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

What's next?

Page 27: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Where do I find out more?

Page 29: Jenkins and Bhyve: Continuous Integration for …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

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 …rodrigc/jenkins_bhyve.pdfJenkins and Bhyve: Continuous Integration for FreeBSD Craig Rodrigues rodrigc@FreeBSD.org

Special Thanks

[email protected]:● Sean Bruno, [email protected]● Peter Wemm, [email protected]● Glen Barber, [email protected]