Introduction to jenkins

27
Introduction to Jenkins Abe Diaz @abe238

Transcript of Introduction to jenkins

Page 1: Introduction to jenkins

Introduction to JenkinsAbe Diaz@abe238

Page 2: Introduction to jenkins

Who am I?• Developer -> Evangelist -> Program/Product• Mobile Program Manager @• Jenkins Enthusiast• Contact Info:• Twitter: @abe238• [email protected]

Page 3: Introduction to jenkins

What is Jenkins?• Jenkins is an open source continuous integration

tool written in Java. The project was forked from Hudson after a dispute with Oracle.• Jenkins provides continuous integration services

for software development. It is a server-based system running in a servlet container such as Apache Tomcat.• Jenkins is an award-winning application that

monitors executions of repeated jobs, such as building a software project or jobs run by cron.

Page 4: Introduction to jenkins

And what is continuous integration?• Continuous Integration (CI) is a development

practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.

Page 5: Introduction to jenkins

And why do I need this again?

Page 6: Introduction to jenkins

The software development world is

a distributed one

Page 7: Introduction to jenkins

Developer

Works on his machine

Checks in code to repo Source Control

(Git/TFS)

Grabs latest code

Build Artifacts (exe, website,

app)

BuildsRun Tests (Nunit, MSTest, Gradle,

StyleCop, JSHint)Publish Output to

Live Server

Post Build Steps

Deploy

Report Back

How does Jenkins typically fit into my work?

Page 8: Introduction to jenkins

Before you start - Jenkins and SCM• Jenkins and configuration management tools like Chef and Puppet

go hand in hand. • The reason for it is to have consistent environments. • You should script out your Jenkins install and configuration.

• Also useful when using nodes.

Page 9: Introduction to jenkins

Installing Jenkins• Jenkins-CI.org• Chocolatey.org• Prerequisites: JAVA

Page 10: Introduction to jenkins

Demo• Install Jenkins via Chocolatey• Verify Jenkins is running

Page 11: Introduction to jenkins

Job Types• Freestyle • External• Multi-config

Page 12: Introduction to jenkins

Requisites for TFS & .NET Projects• Microsoft Team Explorer Everywhere 2013• .NET 4.5.1• Easy: choco install visualstudio2013teamexplorer

Page 13: Introduction to jenkins

Secondary Credentials

Page 14: Introduction to jenkins

TFS Project Config

Page 15: Introduction to jenkins

VisualStudio Online is a bit finicky

• When all fails, use plain commands.

Page 16: Introduction to jenkins

Hey what about GIT• There’s a plugin for that

Page 17: Introduction to jenkins

Caveat Emptor • With plugins like GIT-Plugin YMMV• There are scenarios where you will need to script

things out anyhow. • E.g. Needing specific parameters when cloning

repos• Shallow clones “--depth 1”

Page 18: Introduction to jenkins

Demo• Create first project• Show GIT Support

• Choco install git

• MSBuild Plugin• choco install microsoft-build-tools

Page 19: Introduction to jenkins

Pre build, build and post build steps• Pre build steps are great for items such as: StyleCop and JS

minimizers.• Build steps are for grabbing code, compiling and running tests. • Post build steps are for communication, archival and deployments.

Page 20: Introduction to jenkins

How are we using Jenkins• Transitioned from TFS to Git• Trigger Builds upon code checkin• Run tests• Deploy to specific AWS machines• Report via Slack• Archive and upload files to AWS (S3)

Page 21: Introduction to jenkins

Housekeeping• Backup Jenkins (if possible to the cloud)

• Recom: thinBackup

• Secure your instance• LDAP• Custom users

• Monitor critical instances • Runscope• Daily builds

• Let Jenkins manage version numbers• Always test plugins before installing in production (Same goes for Jenkins)

• Uninstall all plugins that are not being used.

Page 22: Introduction to jenkins

Job Reuse• As your number of jobs grow, consider splitting the tasks into

reusable parts• Multi-Job• Parameterized Builds

• This can be very useful when running tests

• Parameterized Triggers

Page 23: Introduction to jenkins

Using Jenkins for CD• Promoted Builds• Workflows

• Can integrate with external processes

• Auto test Pull Requests• Recom: Pull request builder plugin

Page 24: Introduction to jenkins

External Integration• Auto Update GH issues or JIRA tickets• Create Documentation on the fly

• Recom: Doxygen

• Call any external API (Custom)

Page 25: Introduction to jenkins

Using Nodes • Jenkins has a Master/Slave architecture• You can add as many nodes as needed.

• These can be generic or environment specific

• These can be used also for testing as nodes could be on a different OS

Page 26: Introduction to jenkins

Demo• Adding a node

Page 27: Introduction to jenkins

Questions?