SlideShare uma empresa Scribd logo
1 de 102
Baixar para ler offline
One Click Deployment with Jenkins


Thorsten Rinne I 12th October 201 Mainz, Germany
                                 1,




                                                   © 201 Mayflower GmbH
                                                        1
Team Lead / Scrum Master
Head of Open Source Labs

@ThorstenRinne             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 2
Who are you?




       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 3
Developers?




       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 4
Administrators?




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 5
DevOps?




     Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 6
Continuous Integration?




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 7
How much time do you
 need for a release?


           Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 8
More than a year?




          Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 9
6 - 12 months?




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 10
1 - 6 months?




        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 11
2 - 4 weeks?




        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 12
1 - 14 days?




        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 13
1 - 24 hours?




        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 14
Less than 15 minutes?




            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 15
15 Minutes!




       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 16
Why One Click
Deployment?


        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 17
Everything is getting faster.




                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 18
Faster feedback from
your customer / user




            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 19
Faster ROI
(return on invest)



           Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 20
Faster response
if the market changes
                 Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 21
Developers are lazy.
            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 22
Basic requirements




           Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 23
Agile software
 development


         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 24
Scrum or Kanban




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 25
Test Driven Development




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 26
Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 27
Continuous Integration




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 28
Continuous Inspection




            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 29
Refactoring




       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 30
Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 31
Scrum
Kanban




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 31
Scrum   Continuous
Kanban   Integration




                 Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 31
Scrum   Continuous Continuous
Kanban   Integration Inspection




                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 31
Scrum   Continuous Continuous
Kanban   Integration Inspection




Continuous Deployment
                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 31
Things you don‘t want.




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 32
Having your SVN repo in
your webserver‘s docroot.


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 33
Using SSH and vi and your
 root account on the live
      server. Never.

              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 34
Who‘s still doing this? :-)




                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 35
Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 36
What do we need?




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 37
First: a central build server




                 Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 38
Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 39
Continous Testing with
      PHPUnit


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 40
Advantages




      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 41
Test results at one central
           page


               Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 42
Software metrics at one
     central page


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 43
Errors can be identified
  fast and then fixed
             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 44
Awareness




      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 45
Awareness!
      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 46
Continuous Integration in
      PHP projects


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 47
PHPUnit
DocBlox


     Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 48
Continuous Inspection in
      PHP projects


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 49
PHPCS
PHP Depend
  PHPMD
  phpcpd
   jslint
      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 50
jslint?
 yes!


      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 51
Infrastructure




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 52
http://www.flickr.com/photos/nirak/644337888/




Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 53
                                                           1th         1
One Ubuntu package to
    rule them all.
            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 54
Development VMs
Jenkins CI Server
 Selenium Server
Monitoring Server
  Testing Server
          Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 55
http://www.flickr.com/photos/nirak/644337888/




   Only on production:
  Frontend Nodes 11.04
Backend Nodes 10.04 LTS

             Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 56
                                                                        1th         1
http://www.flickr.com/photos/nirak/644337888/




Mayflower DMZ



                                                             amazon AWS




Eucalyptus Cloud




                   Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 57
                                                                              1th         1
http://www.flickr.com/photos/nirak/644337888/




 Mayflower DMZ


 Developer Laptopamazon AWS
  with Ubuntu VM
(Git repo + complete
 Eucalyptus Cloud
   software stack)
                Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 58
                                                                           1th         1
http://www.flickr.com/photos/nirak/644337888/




Mayflower DMZ




            Gitorious Server                             amazon AWS


           Jenkins CI Server
             Puppet Master
Eucalyptus Cloud

            Selenium Server
               Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 59
                                                                          1th         1
http://www.flickr.com/photos/nirak/644337888/




           2 Frontnodes
         3 Backendnodes
Mayflower DMZ
    Development Monitor
         Staging Monitor
                    amazon AWS




Eucalyptus Cloud




                   Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 60
                                                                              1th         1
http://www.flickr.com/photos/nirak/644337888/




       Mayflower DMZ




  2 Frontnodes                                                  amazon AWS


2 Backendnodes
     Drupal Cloud
       Eucalyptus

  Live Monitor
                      Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 61
                                                                                 1th         1
http://www.flickr.com/photos/nirak/644337888/




   Configuration
Management done with



           Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 62
                                                                      1th         1
http://www.flickr.com/photos/nirak/644337888/




Configuration changes are
on every VM in 5 Minutes.
         #WIN

              Building a Cloud-based social network I   Mayflower GmbH I 1 October 201 I 63
                                                                         1th         1
Frontnode 1         Frontnode 2
            Varnish             Varnish
             nginx               nginx
            PHP 5.3             PHP 5.3



Backendnode 1      Backendnode 2
                                                          Backendnode 3
MySQL Master        MySQL Slave
                                                            RabbitMQ
  MogileFS           MogileFS
                                                           Apache Solr
 Memcached          Memcached
                                                             PHP 5.3
   PHP 5.3            PHP 5.3


                             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 64
Development workflow




           Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 65
1. git workflow
$ git   add Foo.php
$ git   commit -m ″Bar″
$ ant   jslint
$ ant   phpunit
  ...
$ git   push

               Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 66
2. Post commit hook


Build triggered on Jenkins



                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 67
Jenkins build checks



            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 68
1. PHPUnit Build:
         Unittests
Controller Tests (Zend_Test)


                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 69
2. Debian Package Build



             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 70
3. Deploy to staging
4. Deploy staging to live


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 71
At midnight:
      DocBlox
Static code analysis

            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 72
What is a build process?



              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 73
ant sync
  ant clean
ant db-update
  parallelTasks:
 ant phpunit
  ant phpcb
   ant deb
         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 74
ant phpunit
<target
  name="phpunit"
  depends="db-test"
  description="Run all tests">
  <exec executable="phpunit"
        failonerror="true">
    <arg line="--configuration $
{basedir}/tests/phpunit-verbose.xml $
{basedir}/tests/AllTests.php" />
  </exec>
</target>


                        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 75
parallelTasks:
php_depend
   phpmd
  phpunit
   phpcpd
   phpcs
   jslint
         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 76
Build Debian Package
ant autoloader
  ant phpunit
    ant clean
 ant compilejs
ant compilecss
            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 77
ant deb (I)
<target
   name="deb"
   depends="autoloader,phpunit-
coverage,clean,autoloader,compilejs,compi
lecss"
   description="Generate Debian package">
   <exec executable="gpg">
     <arg value="--armor" />
     <arg value="--import" />
     <arg value="scripts/build/deb/
mapolis.mayflower.de.pgp" />
   </exec>
   <buildnumber />

                        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 78
ant deb (II)
<exec executable="git"
      outputproperty="githash">
  <arg value="describe" />
  <arg value="--always" />
  <arg value="--match" />
  <arg value="" />
</exec>
<touch file="debian/changelog" />
<move file="debian/changelog"
      tofile="debian/changelog.old" />




                     Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 79
ant deb (III)
   <exec executable="git"
         output="debian/changelog.new">
     <arg value="log" />
     <arg value="-n" />
     <arg value="1" />
     <arg value='--format=format:mapolis-
web (${build.number}-${githash})
unstable; urgency=low%n%n * %s%n%n --
%an &lt;%ae&gt; %aD%n%n' />
   </exec>




                        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 80
ant deb (IV)
<concat destfile="debian/changelog">
  <fileset
   file="debian/changelog.new" />
  <fileset
   file="debian/changelog.old" />
</concat>
<delete file="debian/changelog.new" />
<delete file="debian/changelog.old" />




                     Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 81
ant deb (V)
   <exec executable="dpkg-buildpackage">
     <arg value="-b" />
     <arg value="-v${build.number}-$
{githash}" />
     <arg value="-Zlzma" />
     <arg value="-z9" />
     <arg value="-k78532445" />
     <arg value="-pgpg" />
     <arg value="-sgpg" />
     <arg value="-mMayflower Mapolis Team
&lt;mapolis@mayflower.de&gt;" />
   </exec>


                        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 82
ant deb (VI)
  <move todir="build/deb/">
   <fileset dir="${basedir}/../">
     <include name="mapolis*.deb" />
     <include name="mapolis*.changes" />
   </fileset>
  </move>
  <exec executable="dpkg-buildpackage">
     <arg value="-Tclean" />
  </exec>
</target>




                       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 83
Deploy Staging
     ant clean
   ant deb-sign
ant db-staging-up
scp to all hosts


          Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 84
Deploy Staging to live
scp to all hosts




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 85
Disadvantages and
    problems


          Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 86
Build time
15 min on harddisk
  massive disk i/o
4 min on ramdisk :-)

            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 87
Complexity beginning such
    a infrastructure


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 88
Jenkins:
Single point of failure!


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 89
Cool stuff
which is now possible


            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 90
Deploy by customer. :-)
              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 91
Jenkins Chuck Norris Plugin



                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 92
git bisect start
   $BAD $GOOD


         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 93
Minimum time from
bugreport to deploy:
    30 minutes


            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 94
$ git branch hotfix-2011-08-22
$ git checkout hotfix-2011-08-22
$ git reset --hard "last stable sha-1"
$ git cherry-pick "hotfix sha-1"
$ echo build.number=23 > build.number
$ ant deb
$ scp build/deb/*.deb xyz.amazonaws.com:/
opt/repository/
$ git checkout master
$ git push origin hotfix-2011-08-10




                         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 95
Live
Demo
Questions?




       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 97
Thank you very much for your attention!




Please rate me @ http://joind.in/talk/view/3904

Contact   Thorsten Rinne
          thorsten.rinne@mayflower.de
          +49 89 242054-31

          Mayflower GmbH
          Mannhardtstr. 6
          80538 München
          Germany



                                                  © 201 Mayflower GmbH
                                                       1

Mais conteúdo relacionado

Mais procurados

Tycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenTycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenPascal Rapicault
 
A Git MVP Workflow
A Git MVP WorkflowA Git MVP Workflow
A Git MVP WorkflowBurt Lum
 
Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...
Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...
Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...Turing Fest
 
PHP on Google App Engine
PHP on Google App EnginePHP on Google App Engine
PHP on Google App Enginetim4h0blyn
 
Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013jsievers
 
GOTO Amsterdam 2016 - The DevOps Disaster
GOTO Amsterdam 2016 - The DevOps DisasterGOTO Amsterdam 2016 - The DevOps Disaster
GOTO Amsterdam 2016 - The DevOps DisasterBert Jan Schrijver
 
Html5 Video Vs Flash Video presentation
Html5 Video Vs Flash Video presentationHtml5 Video Vs Flash Video presentation
Html5 Video Vs Flash Video presentationMatthew Fabb
 

Mais procurados (8)

Tycho - Building plug-ins with Maven
Tycho - Building plug-ins with MavenTycho - Building plug-ins with Maven
Tycho - Building plug-ins with Maven
 
HTML5: o que vem aí...
HTML5: o que vem aí...HTML5: o que vem aí...
HTML5: o que vem aí...
 
A Git MVP Workflow
A Git MVP WorkflowA Git MVP Workflow
A Git MVP Workflow
 
Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...
Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...
Paul Campbell — A Modern Approach to Third-Party Embedded Widgets (Turing Fes...
 
PHP on Google App Engine
PHP on Google App EnginePHP on Google App Engine
PHP on Google App Engine
 
Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013Tycho Tutorial EclipseCon 2013
Tycho Tutorial EclipseCon 2013
 
GOTO Amsterdam 2016 - The DevOps Disaster
GOTO Amsterdam 2016 - The DevOps DisasterGOTO Amsterdam 2016 - The DevOps Disaster
GOTO Amsterdam 2016 - The DevOps Disaster
 
Html5 Video Vs Flash Video presentation
Html5 Video Vs Flash Video presentationHtml5 Video Vs Flash Video presentation
Html5 Video Vs Flash Video presentation
 

Semelhante a One Click Deployment with Jenkins

One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichMayflower GmbH
 
One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011Mayflower GmbH
 
HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11Mayflower GmbH
 
Continuous Improvement in PHP projects
Continuous Improvement in PHP projectsContinuous Improvement in PHP projects
Continuous Improvement in PHP projectsMayflower GmbH
 
Flink Forward San Francisco 2018: Andrew Gao & Jeff Sharpe - "Finding Bad Ac...
Flink Forward San Francisco 2018: Andrew Gao &  Jeff Sharpe - "Finding Bad Ac...Flink Forward San Francisco 2018: Andrew Gao &  Jeff Sharpe - "Finding Bad Ac...
Flink Forward San Francisco 2018: Andrew Gao & Jeff Sharpe - "Finding Bad Ac...Flink Forward
 
Run Fast, Try Not to Break S**t
Run Fast, Try Not to Break S**tRun Fast, Try Not to Break S**t
Run Fast, Try Not to Break S**tMichael Schmidt
 
Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Mayflower GmbH
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCMayflower GmbH
 
Improving your workflows and awareness in the team with tools
Improving your workflows and awareness in the team with toolsImproving your workflows and awareness in the team with tools
Improving your workflows and awareness in the team with toolsMayflower GmbH
 
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesGetting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesAmazon Web Services
 
State-of-the-art real-time web applications
State-of-the-art real-time web applicationsState-of-the-art real-time web applications
State-of-the-art real-time web applicationsPaul Seiffert
 
Symfony framework-An overview and usability for web development
Symfony framework-An overview and usability for web developmentSymfony framework-An overview and usability for web development
Symfony framework-An overview and usability for web developmentifour_bhavesh
 
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
Webinar: Capabilities, Confidence and Community – What Flux GA Means for YouWebinar: Capabilities, Confidence and Community – What Flux GA Means for You
Webinar: Capabilities, Confidence and Community – What Flux GA Means for YouWeaveworks
 
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketEnterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketNikita Sharma
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCMayflower GmbH
 
5 Secrets to Successfully Publishing in Appcelerator's Marketplace
5 Secrets to Successfully Publishing in Appcelerator's Marketplace5 Secrets to Successfully Publishing in Appcelerator's Marketplace
5 Secrets to Successfully Publishing in Appcelerator's MarketplaceAxway Appcelerator
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsAmazon Web Services
 
Mastering DevOps-Driven Data Integration with FME
Mastering DevOps-Driven Data Integration with FMEMastering DevOps-Driven Data Integration with FME
Mastering DevOps-Driven Data Integration with FMESafe Software
 

Semelhante a One Click Deployment with Jenkins (20)

One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP Munich
 
One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011
 
HTML5 Workshop
HTML5 WorkshopHTML5 Workshop
HTML5 Workshop
 
HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11
 
Continuous Improvement in PHP projects
Continuous Improvement in PHP projectsContinuous Improvement in PHP projects
Continuous Improvement in PHP projects
 
Flink Forward San Francisco 2018: Andrew Gao & Jeff Sharpe - "Finding Bad Ac...
Flink Forward San Francisco 2018: Andrew Gao &  Jeff Sharpe - "Finding Bad Ac...Flink Forward San Francisco 2018: Andrew Gao &  Jeff Sharpe - "Finding Bad Ac...
Flink Forward San Francisco 2018: Andrew Gao & Jeff Sharpe - "Finding Bad Ac...
 
Run Fast, Try Not to Break S**t
Run Fast, Try Not to Break S**tRun Fast, Try Not to Break S**t
Run Fast, Try Not to Break S**t
 
Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
 
Improving your workflows and awareness in the team with tools
Improving your workflows and awareness in the team with toolsImproving your workflows and awareness in the team with tools
Improving your workflows and awareness in the team with tools
 
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesGetting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
 
State-of-the-art real-time web applications
State-of-the-art real-time web applicationsState-of-the-art real-time web applications
State-of-the-art real-time web applications
 
Symfony framework-An overview and usability for web development
Symfony framework-An overview and usability for web developmentSymfony framework-An overview and usability for web development
Symfony framework-An overview and usability for web development
 
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
Webinar: Capabilities, Confidence and Community – What Flux GA Means for YouWebinar: Capabilities, Confidence and Community – What Flux GA Means for You
Webinar: Capabilities, Confidence and Community – What Flux GA Means for You
 
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to MarketEnterprise E-Commerce Webinar #3: Bringing Your API to Market
Enterprise E-Commerce Webinar #3: Bringing Your API to Market
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
 
5 Secrets to Successfully Publishing in Appcelerator's Marketplace
5 Secrets to Successfully Publishing in Appcelerator's Marketplace5 Secrets to Successfully Publishing in Appcelerator's Marketplace
5 Secrets to Successfully Publishing in Appcelerator's Marketplace
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Mastering DevOps-Driven Data Integration with FME
Mastering DevOps-Driven Data Integration with FMEMastering DevOps-Driven Data Integration with FME
Mastering DevOps-Driven Data Integration with FME
 
Top 5 advanced php framework in 2018
Top 5 advanced php framework in 2018Top 5 advanced php framework in 2018
Top 5 advanced php framework in 2018
 

Mais de Mayflower GmbH

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mayflower GmbH
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: SecurityMayflower GmbH
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftMayflower GmbH
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientMayflower GmbH
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingMayflower GmbH
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...Mayflower GmbH
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyMayflower GmbH
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming MythbustersMayflower GmbH
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im GlückMayflower GmbH
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefernMayflower GmbH
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsMayflower GmbH
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalierenMayflower GmbH
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastMayflower GmbH
 

Mais de Mayflower GmbH (20)

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
 
Why and what is go
Why and what is goWhy and what is go
Why and what is go
 
Agile Anti-Patterns
Agile Anti-PatternsAgile Anti-Patterns
Agile Anti-Patterns
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Produktive teams
Produktive teamsProduktive teams
Produktive teams
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debugging
 
Usability im web
Usability im webUsability im web
Usability im web
 
Rewrites überleben
Rewrites überlebenRewrites überleben
Rewrites überleben
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming Mythbusters
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im Glück
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefern
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 Sprints
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalieren
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce Breakfast
 

Último

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Último (20)

Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

One Click Deployment with Jenkins

  • 1. One Click Deployment with Jenkins Thorsten Rinne I 12th October 201 Mainz, Germany 1, © 201 Mayflower GmbH 1
  • 2. Team Lead / Scrum Master Head of Open Source Labs @ThorstenRinne Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 2
  • 3. Who are you? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 3
  • 4. Developers? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 4
  • 5. Administrators? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 5
  • 6. DevOps? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 6
  • 7. Continuous Integration? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 7
  • 8. How much time do you need for a release? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 8
  • 9. More than a year? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 9
  • 10. 6 - 12 months? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 10
  • 11. 1 - 6 months? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 11
  • 12. 2 - 4 weeks? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 12
  • 13. 1 - 14 days? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 13
  • 14. 1 - 24 hours? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 14
  • 15. Less than 15 minutes? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 15
  • 16. 15 Minutes! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 16
  • 17. Why One Click Deployment? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 17
  • 18. Everything is getting faster. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 18
  • 19. Faster feedback from your customer / user Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 19
  • 20. Faster ROI (return on invest) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 20
  • 21. Faster response if the market changes Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 21
  • 22. Developers are lazy. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 22
  • 23. Basic requirements Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 23
  • 24. Agile software development Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 24
  • 25. Scrum or Kanban Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 25
  • 26. Test Driven Development Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 26
  • 27. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 27
  • 28. Continuous Integration Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 28
  • 29. Continuous Inspection Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
  • 30. Refactoring Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 30
  • 31. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 31
  • 32. Scrum Kanban Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 31
  • 33. Scrum Continuous Kanban Integration Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 31
  • 34. Scrum Continuous Continuous Kanban Integration Inspection Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 31
  • 35. Scrum Continuous Continuous Kanban Integration Inspection Continuous Deployment Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 31
  • 36. Things you don‘t want. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 32
  • 37. Having your SVN repo in your webserver‘s docroot. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 33
  • 38. Using SSH and vi and your root account on the live server. Never. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 34
  • 39. Who‘s still doing this? :-) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 35
  • 40. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 36
  • 41. What do we need? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 37
  • 42. First: a central build server Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 38
  • 43. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 39
  • 44. Continous Testing with PHPUnit Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 40
  • 45. Advantages Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 41
  • 46. Test results at one central page Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 42
  • 47. Software metrics at one central page Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 43
  • 48. Errors can be identified fast and then fixed Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 44
  • 49. Awareness Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 45
  • 50. Awareness! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 46
  • 51. Continuous Integration in PHP projects Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 47
  • 52. PHPUnit DocBlox Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 48
  • 53. Continuous Inspection in PHP projects Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 49
  • 54. PHPCS PHP Depend PHPMD phpcpd jslint Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 50
  • 55. jslint? yes! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 51
  • 56. Infrastructure Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 52
  • 57. http://www.flickr.com/photos/nirak/644337888/ Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 53 1th 1
  • 58. One Ubuntu package to rule them all. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 54
  • 59. Development VMs Jenkins CI Server Selenium Server Monitoring Server Testing Server Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 55
  • 60. http://www.flickr.com/photos/nirak/644337888/ Only on production: Frontend Nodes 11.04 Backend Nodes 10.04 LTS Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 56 1th 1
  • 61. http://www.flickr.com/photos/nirak/644337888/ Mayflower DMZ amazon AWS Eucalyptus Cloud Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 57 1th 1
  • 62. http://www.flickr.com/photos/nirak/644337888/ Mayflower DMZ Developer Laptopamazon AWS with Ubuntu VM (Git repo + complete Eucalyptus Cloud software stack) Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 58 1th 1
  • 63. http://www.flickr.com/photos/nirak/644337888/ Mayflower DMZ Gitorious Server amazon AWS Jenkins CI Server Puppet Master Eucalyptus Cloud Selenium Server Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 59 1th 1
  • 64. http://www.flickr.com/photos/nirak/644337888/ 2 Frontnodes 3 Backendnodes Mayflower DMZ Development Monitor Staging Monitor amazon AWS Eucalyptus Cloud Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 60 1th 1
  • 65. http://www.flickr.com/photos/nirak/644337888/ Mayflower DMZ 2 Frontnodes amazon AWS 2 Backendnodes Drupal Cloud Eucalyptus Live Monitor Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 61 1th 1
  • 66. http://www.flickr.com/photos/nirak/644337888/ Configuration Management done with Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 62 1th 1
  • 67. http://www.flickr.com/photos/nirak/644337888/ Configuration changes are on every VM in 5 Minutes. #WIN Building a Cloud-based social network I Mayflower GmbH I 1 October 201 I 63 1th 1
  • 68. Frontnode 1 Frontnode 2 Varnish Varnish nginx nginx PHP 5.3 PHP 5.3 Backendnode 1 Backendnode 2 Backendnode 3 MySQL Master MySQL Slave RabbitMQ MogileFS MogileFS Apache Solr Memcached Memcached PHP 5.3 PHP 5.3 PHP 5.3 Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 64
  • 69. Development workflow Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 65
  • 70. 1. git workflow $ git add Foo.php $ git commit -m ″Bar″ $ ant jslint $ ant phpunit ... $ git push Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 66
  • 71. 2. Post commit hook Build triggered on Jenkins Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 67
  • 72. Jenkins build checks Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 68
  • 73. 1. PHPUnit Build: Unittests Controller Tests (Zend_Test) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 69
  • 74. 2. Debian Package Build Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 70
  • 75. 3. Deploy to staging 4. Deploy staging to live Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 71
  • 76. At midnight: DocBlox Static code analysis Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 72
  • 77. What is a build process? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 73
  • 78. ant sync ant clean ant db-update parallelTasks: ant phpunit ant phpcb ant deb Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 74
  • 79. ant phpunit <target name="phpunit" depends="db-test" description="Run all tests"> <exec executable="phpunit" failonerror="true"> <arg line="--configuration $ {basedir}/tests/phpunit-verbose.xml $ {basedir}/tests/AllTests.php" /> </exec> </target> Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 75
  • 80. parallelTasks: php_depend phpmd phpunit phpcpd phpcs jslint Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 76
  • 81. Build Debian Package ant autoloader ant phpunit ant clean ant compilejs ant compilecss Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 77
  • 82. ant deb (I) <target name="deb" depends="autoloader,phpunit- coverage,clean,autoloader,compilejs,compi lecss" description="Generate Debian package"> <exec executable="gpg"> <arg value="--armor" /> <arg value="--import" /> <arg value="scripts/build/deb/ mapolis.mayflower.de.pgp" /> </exec> <buildnumber /> Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 78
  • 83. ant deb (II) <exec executable="git" outputproperty="githash"> <arg value="describe" /> <arg value="--always" /> <arg value="--match" /> <arg value="" /> </exec> <touch file="debian/changelog" /> <move file="debian/changelog" tofile="debian/changelog.old" /> Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 79
  • 84. ant deb (III) <exec executable="git" output="debian/changelog.new"> <arg value="log" /> <arg value="-n" /> <arg value="1" /> <arg value='--format=format:mapolis- web (${build.number}-${githash}) unstable; urgency=low%n%n * %s%n%n -- %an &lt;%ae&gt; %aD%n%n' /> </exec> Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 80
  • 85. ant deb (IV) <concat destfile="debian/changelog"> <fileset file="debian/changelog.new" /> <fileset file="debian/changelog.old" /> </concat> <delete file="debian/changelog.new" /> <delete file="debian/changelog.old" /> Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 81
  • 86. ant deb (V) <exec executable="dpkg-buildpackage"> <arg value="-b" /> <arg value="-v${build.number}-$ {githash}" /> <arg value="-Zlzma" /> <arg value="-z9" /> <arg value="-k78532445" /> <arg value="-pgpg" /> <arg value="-sgpg" /> <arg value="-mMayflower Mapolis Team &lt;mapolis@mayflower.de&gt;" /> </exec> Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 82
  • 87. ant deb (VI) <move todir="build/deb/"> <fileset dir="${basedir}/../"> <include name="mapolis*.deb" /> <include name="mapolis*.changes" /> </fileset> </move> <exec executable="dpkg-buildpackage"> <arg value="-Tclean" /> </exec> </target> Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 83
  • 88. Deploy Staging ant clean ant deb-sign ant db-staging-up scp to all hosts Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 84
  • 89. Deploy Staging to live scp to all hosts Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 85
  • 90. Disadvantages and problems Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 86
  • 91. Build time 15 min on harddisk massive disk i/o 4 min on ramdisk :-) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 87
  • 92. Complexity beginning such a infrastructure Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 88
  • 93. Jenkins: Single point of failure! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 89
  • 94. Cool stuff which is now possible Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 90
  • 95. Deploy by customer. :-) Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 91
  • 96. Jenkins Chuck Norris Plugin Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 92
  • 97. git bisect start $BAD $GOOD Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 93
  • 98. Minimum time from bugreport to deploy: 30 minutes Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 94
  • 99. $ git branch hotfix-2011-08-22 $ git checkout hotfix-2011-08-22 $ git reset --hard "last stable sha-1" $ git cherry-pick "hotfix sha-1" $ echo build.number=23 > build.number $ ant deb $ scp build/deb/*.deb xyz.amazonaws.com:/ opt/repository/ $ git checkout master $ git push origin hotfix-2011-08-10 Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 95
  • 101. Questions? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 97
  • 102. Thank you very much for your attention! Please rate me @ http://joind.in/talk/view/3904 Contact Thorsten Rinne thorsten.rinne@mayflower.de +49 89 242054-31 Mayflower GmbH Mannhardtstr. 6 80538 München Germany © 201 Mayflower GmbH 1