Node.js meets jenkins

51
My name is Evgeny @jenkinsconf

description

A presentation for my "Node.js Meets Jenkins, Gradle and Chef!" at Jenkins User Conference 2013 in Israel: https://www.youtube.com/watch?v=jPA1iwZ0zk8

Transcript of Node.js meets jenkins

Page 1: Node.js meets jenkins

My  name  is  Evgeny

@jenkinsconf

Page 2: Node.js meets jenkins

Polyglot  Programming

@jenkinsconf

Page 3: Node.js meets jenkins

Polyglot  Tooling

@jenkinsconf

Page 4: Node.js meets jenkins

 Node.js  meetsJenkins,  Gradle,  Chef

Evgeny  Goldin,  Trademob  GmbH

June  06,  2013

and Artifactory!

@jenkinsconf

Page 5: Node.js meets jenkins

What’s  in  it  for  you?

@jenkinsconf

Page 6: Node.js meets jenkins

Automation

@jenkinsconf

Page 7: Node.js meets jenkins

@jenkinsconf

$ npm install$ node date.js$ forever start date.js$ forever stop date.js

Page 8: Node.js meets jenkins

Easy?

@jenkinsconf

Page 9: Node.js meets jenkins

@jenkinsconf

Page 10: Node.js meets jenkins

Boostrap  and  versioning

@jenkinsconf

Page 11: Node.js meets jenkins

npm  install

@jenkinsconf

Page 12: Node.js meets jenkins

@jenkinsconf

Page 13: Node.js meets jenkins

@jenkinsconf

Page 14: Node.js meets jenkins
Page 15: Node.js meets jenkins

Before  and  after  listeners

Mongo,  Redis,  Cake,  Grunt

@jenkinsconf

Page 16: Node.js meets jenkins

Verified  start  and  stop

@jenkinsconf

Page 17: Node.js meets jenkins

Startup  scripts

@jenkinsconf

Page 18: Node.js meets jenkins

..  and  then  some  more

@jenkinsconf

Page 19: Node.js meets jenkins

@jenkinsconfhttp://www.shimweasel.com/hs_gbu/

Page 21: Node.js meets jenkins

Recipes  controlled  by  Ops

@jenkinsconf

Page 22: Node.js meets jenkins

Not  Devs!

@jenkinsconf

Page 23: Node.js meets jenkins

Stored  in  a  separate  repo

@jenkinsconf

Page 24: Node.js meets jenkins

Uploaded  to  Chef  Server

@jenkinsconf

Page 25: Node.js meets jenkins

..  and  getting  messy  

@jenkinsconf

Page 26: Node.js meets jenkins

Provisioning  !=  Build

@jenkinsconf

Page 27: Node.js meets jenkins

@jenkinsconfhttp://www.shimweasel.com/hs_gbu/

Page 28: Node.js meets jenkins

Wouldn’t  it  be  cool  if  ..

@jenkinsconf

Page 29: Node.js meets jenkins

Node.js

Gradle

Jenkins

Chef

http://www.shimweasel.com/hs_gbu/

Page 30: Node.js meets jenkins

./gradlew  -­‐i  setup

./gradlew  -­‐i  test

./gradlew  -­‐i  start

./gradlew  -­‐i  stop

@jenkinsconf

Page 31: Node.js meets jenkins

./build/setup.sh

./build/test.sh

./build/start.sh

./build/stop.sh

@jenkinsconf

Page 32: Node.js meets jenkins

npm  install  ?

@jenkinsconf

Page 33: Node.js meets jenkins

@jenkinsconf

package.json

Page 34: Node.js meets jenkins

@jenkinsconf

checksum+

tar.gz+

PUT  /  GET

Page 35: Node.js meets jenkins
Page 37: Node.js meets jenkins

Coming  next:

*.deb

upstart

@jenkinsconf

Page 38: Node.js meets jenkins

Monitoring

@jenkinsconf

Page 39: Node.js meets jenkins

http(s)://host:port

@jenkinsconf

Page 40: Node.js meets jenkins

10  boxes,  5  ports  each

50  combinations!

..  plus  https

@jenkinsconf

Page 41: Node.js meets jenkins

Wouldn’t  it  be  cool  if  ..

@jenkinsconf

Page 42: Node.js meets jenkins
Page 43: Node.js meets jenkins

http(s)://<host:port>

http(s)://<host>|<status  code>

http(s)://<host>|<status  code>|<matcher(s)>

http(s)://<host>|<status  code>|<matchers>|<time  limit  (ms)>

http(s)://<host>|<status  code>|<matchers>|<time  limit>|<user>|<pass>

E.g.  https://github.com/evgeny-­‐goldin/chef-­‐repo|404|-­‐/\d+\+?\s+commits/

@jenkinsconf

Page 44: Node.js meets jenkins

                 Positive  matcher                              :  matcher

                 Negative  matcher                          :  -­‐matcher

                 Contains  matcher                            :  text

                 Regex  matcher                                    :  /regex/

                 JSON  matcher                                        :  {  json  }  or  [  json  ]

               Multiple  matchers                            :  m1  *  m2  *  m3

@jenkinsconf

Page 46: Node.js meets jenkins

Coming  next:

PagerDuty

@jenkinsconf

Page 47: Node.js meets jenkins

What’s  in  it  for  you?

@jenkinsconf

Page 48: Node.js meets jenkins

                                                                             Go  get  it!      buildscript  {        repositories          {  maven  {  url  'http://jcenter.bintray.com'  }}        dependencies  {  classpath          'com.github.goldin.plugins.gradle:node:0.3',                                                                                                                    'com.github.goldin.plugins.gradle:monitor:0.3'  }}

@jenkinsconf

evgeny-­‐goldin.org/jenkinsbitbucket.org/evgenyg/uptime-­‐ec2bitbucket.org/evgenyg/monitorevgeny-­‐goldin.com/wiki/Gradle-­‐node-­‐pluginevgeny-­‐goldin.com/wiki/Gradle-­‐monitor-­‐plugin

Page 49: Node.js meets jenkins

Warm  regards,Evgeny  Goldin

[email protected]@evgeny_goldin

@jenkinsconf

Page 50: Node.js meets jenkins

Many  thanks  to  our  sponsors!

@jenkinsconf

Page 51: Node.js meets jenkins

Lunch  time!

@jenkinsconf