46
Jenkins Ruby R. Tyler Croy

Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

Jenkins♥

Ruby

R. Tyler Croy

Page 2: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

arrr tyler

Page 3: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

arrr tyler● Jenkins community for almost 8

years● Ruby user for 5 years● Widely regarded as “tall”● Jenkins Community Evangelist at

CloudBees● Not a pirate

● Seit fast acht Jahren im Jenkins Open-Source-Projekt aktiv

● Seit funf Jahren Ruby-Benutzer● Viele schauen zu ihm auf

● Arbeitet bei CloudBees als Jenkins Community Evangelist

● Arrrr, Wahrscheinlich kein Pirat

Page 4: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

Jenkins

Page 5: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)
Page 6: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

Jenkins● Open source automation server● Packaged for practically every

platform: Mac OS X, Windows, Linux, FreeBSD, Docker

● System requirements: Java● Extensible: 1000+ plugins to

integrate with your development stack

● Open-Source Automatisiergungserver

● Pakete für verschiedene Betriebsysteme: Mac OS X, Windows, Linux, FreeBSD, Docker

● Systemanforderung - Java● Erweiterbar: Über 1000 Plugins

zur Integration mit praktisch allen Entwicklungswerkzeugen

Page 7: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

why(i hope)

you care

Page 8: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

benefits of CI/CD● running tests, linting, style

checks, etc after every single commit (if possible)

● consistent feedback mechanism to developers and others via email, IRC, HipChat

● deployment hub for publishing code to Rubygems, Heroku, etc

● Nach jedem Commit wird die Software automatisch gestestet und analysiert (wenn möglich)

● Entwickler erhalten ständig Feedback via Email, IRC, HipChat, usw.

● Zentral gesteuertes Deployment zu Rubygems, Heroku, usw.

Page 9: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

words Jenkins uses

Page 10: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

Jenkins’ Dictionary● Job: entity representing a series of actions.

Generally a Job will map to at least one

source repository

● Build: a single execution of all the actions

defined in a Job

● Build Trigger: criteria defined to start a

new build (e.g. a new commit in a

repository)

● Build Step: unit of work defined in a Job (e.

g. running a shell script)

● Post-build Action: action used to process

results once the Build Steps have finished

execution (e.g. send a failure email)

● Job: repräsentiert eine Sequenz von

Schritten. Üblicherweise nutzt ein Job

mindestens ein Quellcode-Repository.

● Build: aller im Job definierter Schritte

● Build-Auslöser: definieren Kriterien, nach

denen ein Build gestartet wird (wie z.B. ein

neuer Commit im SCM)

● Build-Schritt: In einem Job definierte

Arbeitseinheit (z.B. Ausführung eines Shell-

Scripts)

● Post-Build-Aktion: Wird verwendet, um

Buildergebnisse nach Fertigstellung aller

Build-Schritte zu verarbeiten (z.B.

Fehlerbenachrichtigung via Email senden)

Page 11: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

let’s make a job

Page 12: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

first we need a Jenkins

Page 13: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

POW!ZING!

Page 14: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

java -jar jenkins.war

Page 15: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

then we need plugins

Page 16: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

CLICK!

Page 17: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

DING!

Page 18: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

QUERY!

MASH!POP!

Page 19: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

okay good, where were we

Page 20: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

oh right

Page 21: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

let’s make a job

Page 22: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

BAM!

Page 23: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

BOINK!

Page 24: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

SYSTEM OVERLOAD!

Page 25: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

easy mode

Page 26: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

KNOCK!

Page 27: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

UAH!

PRESTO!

Page 28: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

WUT!

pew pew!

Page 29: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

SHAZAM!

Page 30: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

‘kay

Page 31: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

advanced mode

Page 32: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

Brakeman plugin

Page 33: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

More Brakeman

Page 34: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

JUnit plugin + ci_reporter

Page 35: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

Warnings plugin + Rubocop

Page 36: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

RubyMetrics plugin + flog

Page 37: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

HTMLPublisher plugin + Simplecov

Page 38: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

protip

Page 39: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

for f in scripts/ci/*.sh; do bash $f;done

Page 40: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

rescue nil● @agentdero

● rtyler on Freenode, GitHub, keybase.io

[email protected]

● this presentation: https://goo.gl/pTDdMS

● https://jenkins-ci.org/s/ruby

● Plugins to check out:○ Pipeline

○ JUnit○ Brakeman○ Cucumber Test Result○ Docker○ HTMLPublisher○ Email-ext○ RubyMetrics

Page 41: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

bonus round

Page 42: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

Jenkins 2.0

Page 43: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

/* Jenkinsfile */node(‘docker-capable’) { docker.image(‘rvm-image’).inside { checkout scm sh ‘bundle exec rake’ }}

Page 44: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)
Page 45: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)
Page 46: Ruby Jenkins · Ruby user for 5 years ... Docker Systemanforderung - Java Erweiterbar: Über 1000 Plugins zur Integration mit praktisch allen Entwicklungswerkzeugen. why (i hope)

rescue nil● @agentdero

● rtyler on Freenode, GitHub, keybase.io

[email protected]

● this presentation: https://goo.gl/pTDdMS

● https://jenkins-ci.org/s/ruby

● Plugins to check out:○ Pipeline

○ JUnit○ Brakeman○ Cucumber Test Result○ Docker○ HTMLPublisher○ Email-ext○ RubyMetrics