jenkins and bhyve: continuous integration for freebsd by craig rodrigues

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

Upload: ixsystems

Post on 10-May-2015

2.648 views

Category:

Technology


3 download

DESCRIPTION

A team of FreeBSD developers led by Craig Rodrigues ([email protected]) has formed the jenkins-admin team ([email protected]). They have set up the Jenkins Continuous Integration (http://www.jenkins-ci.org) system inside the FreeBSD cluster, and are building several branches of FreeBSD. The web server which lists the builds is visible at: https://jenkins.freebsd.org The jenkins-admin team has plans to expand the use of Jenkins to build and test FreeBSD. The project status and future plans are listed at: http://wiki.freebsd.org/Jenkins The presentation discusses the progress of the effort to date, the use of BHyve VM's in the effort, and future plans. The team is also looking for FreeBSD developers who can help along with this effort to improve testing of FreeBSD. A video of the full talk can be found here: http://www.ixsystems.com/whats-new/jenkins-and-bhyve-continuous-integration-for-freebsd-by-craig-rodrigues/

TRANSCRIPT

Page 1: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

Jenkins and Bhyve: Continuous Integration for FreeBSD

Craig [email protected]

Page 2: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

Jenkins

Page 4: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

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

Jenkins User Conference 2013

Page 7: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

Continuous Integration

Page 8: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

Example Production CI Workflow

Page 10: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

Jenkins in theFreeBSD cluster

Page 11: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

Setting up Jenkins in theFreeBSD cluster

Page 13: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

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

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

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

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

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

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

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

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

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
Page 24: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

What do we have so far?

Page 25: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

What's next?

Page 27: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

Where do I find out more?

Page 29: Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues

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

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

Special Thanks

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