SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
Jenkins User Conference Boston #jenkinsconf
Jenkins + Gitlab +
RabbitMQ + Symfony2
+ Phing
Brandon Mueller
K12 Services, Inc
@fatmuemoo
June 18, 2014
#jenkinsconf
Jenkins User Conference Boston #jenkinsconf
About Me
• Web Developer
• Lead Engineer @ K12 Services Inc
• Total Jenkins Newbie (~6 months)
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
How I Sold CI to Executives
• We are humans, we make mistakes
• Deploying updates manually takes time and it is
error prone
• Tests and code quality assurance is
inconsistent without CI
• Automagically test and inspect before every
update
• Upfront cost can be significant, especially for a
newbie, but pays off in the long run
Jenkins User Conference Boston #jenkinsconf
Why Jenkins?
• Open Source; free as in freedom!
• Battle tested
• Huge community
• Lots of plugins
• In the Ubuntu repository
• Easy to deploy and update
• Other CI servers are either closed source or too
immature
Jenkins User Conference Boston #jenkinsconf
GitLab
https://gitlab.com/gitlab-org/gitlab-ce/blob/master/README.md
Jenkins User Conference Boston #jenkinsconf
What Is
Open source software to collaborate on code
• Manage Git repositories with fine grained access
controls that keep your code secure
• Perform code reviews and enhance collaboration with
merge requests
• Each project can also have an issue tracker and a wiki
• Used by more than 100,000 organizations, GitLab is the
most popular solution to manage Git repositories on-
premises
• Completely free and open source (MIT Expat license)
• Powered by Ruby on Rails
source: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/README.md
Jenkins User Conference Boston #jenkinsconf
Why GitLab?
• Open Source; Free as in freedom!
• Runs on the Linux + Nginx + MySql + Ruby stack
• Easy to deploy and update; Digital Ocean has a
push button install
• Predictable release schedule
• Awesome access controls
Jenkins User Conference Boston #jenkinsconf
Why GitLab? Why Not GitHub or BitBucket?
• GitLab could be called a GitHub clone; Fairly
intuitive UI and workflow
• We have control of the service; no surprises
• GitHub can get pricey when you have more
than a few repositories
• We still use a free BitBucket account for a third
tier backups
• We still use GitHub for Open Source code
https://github.com/K12Labs
Jenkins User Conference Boston #jenkinsconf
Jenkins + GitLab
GitLab Merge Request Builder Plugin
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
Jenkins + GitLab
GitLab Build Now Plugin
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
Jenkins + GitLab Workflow
• Dev creates a feature branch following a
feature/issue_desc naming schema
• ex: feature/124_my_awsome_thing
• Dev writes some awesome code, sends a
merge request when ready
• Merge Request Builder plugin builds the project
when MR is opened and when the MR is
updated
• When a MR is accepted, Jenkins triggers a build
b/c code was pushed to the develop branch
Jenkins User Conference Boston #jenkinsconf
Jenkins + GitLab Workflow
app_dev Jenkins Project
(develop & master branch)
app_test Jenkins Project
(feature branches)
MR is created or updated MR is accepted in GitLab
Jenkins User Conference Boston #jenkinsconf
What is Phing?
PHing Is Not GNU make; it's a PHP project build
system or build tool based on ​Apache Ant. You can
do anything with it that you could do with a
traditional build system like GNU make, and its use
of simple XML build files and extensible PHP "task"
classes make it an easy-to-use and highly flexible
build framework.
source: phing.info
Jenkins User Conference Boston #jenkinsconf
In other words
• PHING in a build tool for automating tasks.
• Uses a build XML file.
• Lots of pre made PHING targets.
• You can tie together pre made string targets
• You can easily execute shell commands
• You can write more complex phing targets in
PHP
• PHING is Awesome. Use PHING.
Jenkins User Conference Boston #jenkinsconf
Phing in Dev
• All the things that Jenkins does for the build, we
can do locally
• No surprises if a build fails (usually)
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
Jenkins + Phing
Phing Plugin
• It works ;)
• Jenkins executes Phing targets as part of the
build process
• Passes in environment variables
Jenkins User Conference Boston #jenkinsconf
Jenkins + Phing
•
Jenkins User Conference Boston #jenkinsconf
Code Quality
Jenkins User Conference Boston #jenkinsconf
PHP Code Sniffer
• Reports on coding standards (PSR-2)
• Outputs standard checkstyle xml formats
(among other formats)
Jenkins User Conference Boston #jenkinsconf
CSSlint & JShint
• Same thing, only for CSS and JS
Jenkins User Conference Boston #jenkinsconf
Build Summary
• Make env/build specific config files
• Composer
• Bower
• Twig.js
• Assetic
• Run Analytics/Tests
• Symfony Cache
Jenkins User Conference Boston #jenkinsconf
Jenkins User Conference Boston #jenkinsconf
What About Deployment?
• Publish Over SSH Plugin
• This gets the files where they need to go, but
I need more than that
• Deploy Plugin
• Java Specific Platforms
• Bash Script
• HUH?
Jenkins User Conference Boston #jenkinsconf
RabbitMQ
• Post build task triggers a bash script that sends
a RabbitMQ message
• Jenkins no longer cares about where the app is
being deployed
• Many consumers can receive the message -
deploy the app on as many servers as needed
Jenkins User Conference Boston #jenkinsconf
A brief explanation of how RabbitMQ works
• A producer posts messages to exchanges.
• Exchanges in RabbitMQ route the message to
where it needs to go.
• A consumer connects to a queue to consume a
message.
• There are different types of exchanges
Jenkins User Conference Boston #jenkinsconf
Types of exchanges
Direct
• Message goes directly to queue
Fanout
• Every consumer connected to
queue gets the message
Topic
• The exchange routes to different queues
(or different exchanges) based on a routing key
http://www.rabbitmq.com/getstarted.html
Jenkins User Conference Boston #jenkinsconf
Message Example
Exchange ci
Routing Key ci.k12fs2_dev.bug_216_login
Payload
{
status : "complete",
gitlabMergeRequestId : "193",
gitlabSourceBranch : "bug/216_login",
gitlabSourceName : "k12fs2/app_k12fs2",
gitlabSourceRepository : "",
gitlabTargetBranch : "develop",
APP_VERSION : "2.0.2.233",
BUILD_CAUSE : "GITLABCAUSE",
BUILD_DISPLAY_NAME : "#348",
BUILD_ID : "2014-06-06_14-15-52",
BUILD_NUMBER : "348",
BUILD_TAG : "jenkins-k12fs2_dev-348",
BUILD_URL : "http://example.com/job/k12fs2_dev/348/",
GIT_BRANCH : "origin/develop",
GIT_COMMIT : "351790406a56aad54b2afe8fdf6a60b3737441d8",
GIT_PREVIOUS_COMMIT: "351790406a56aad54b2afe8fdf6a60b3737441d8",
GIT_URL : "http://example.com/",
HUDSON_URL : "http://example.com/",
JOB_NAME : "k12fs2_dev",
JOB_URL : "http://example.com/job/k12fs2_dev/"
}
Jenkins User Conference Boston #jenkinsconf
Topic
Exchange
Develop
Branch
Queue
Feature
Branch
Branch
Queue
Dev App
Server
Prod
App
Server
Staging/QA
App Server
Master
Branch
Fanout
Exchange
Prod
App
Server
Prod
App
Server
routing key: ci.project_name.branch_name
app_dev.origin_develop
app_dev.origin_master
Jenkins User Conference Boston #jenkinsconf
Symfony2 + RabbitMQ
• High quality bundle called OldSoundRabbitMq
Bundle
• Consumer code for deploying the application
lives in our Symfony app
• Consumer code drops down to the command
line to execute PHING targets etc
Jenkins User Conference Boston #jenkinsconf
OldSouundRabbitMqBundle Configz
Jenkins User Conference Boston #jenkinsconf
Consumer Codez
Jenkins User Conference Boston #jenkinsconf
Bringing It All Together
Application Server
Vagrant
Jenkins
<Phing>
Vagrant
<Phing>
Vagrant
<Phing>
Dev machines use Phing to
deploy the application
internally and run analytics
Application server(s) consume
message from Jenkins and use
Phing to deploy the application
GitLab
GitLab notifies
Jenkins of push.
Jenkins Pull down
repository
<Phing>
Jenkins uses Phing to
build the application
I’m done
building!
Message
Consumer <Phing>
Application Server
Consumer <Phing>
Application Server
Consumer <Phing>
Jenkins User Conference Boston #jenkinsconf
All The Jenkins Things
• Environment Injector Plugin
• Checkstyle Plugin
• Gitlab Build Now Plugin
• Gitlab Merge Request Builder Plugin
• Hudson Post Build Task
Jenkins User Conference Boston #jenkinsconf
Things I Feel Are missing
• RabbitMQ Post Build Producer plugin
• Better Notifications from Jenkins to GitLab CE
(Coming Soon?!?)
• Artifact publishing inside of Jenkins
• Dynamic build plan for feature branches
or I’m too incompetent to develop myself
or the solution exists and I just couldn’t figure it out it
Jenkins User Conference Boston #jenkinsconf
All (most of) the things
• https://www.gitlab.com/gitlab-ce/
• http://www.phing.info/
• https://github.com/squizlabs/PHP_CodeSniffer
• https://github.com/CSSLint/csslint
• http://www.jshint.com/
• https://getcomposer.org/
• http://bower.io/
• http://www.rabbitmq.com/
• https://github.com/videlalvaro/rabbitmqbundle
• http://www.rabbitmq.com/getstarted.html
Jenkins User Conference Boston #jenkinsconf
Thank You To Our Sponsors
Platinum Gold
Silver

Más contenido relacionado

La actualidad más candente

Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Noa Harel
 
Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence
Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence
Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence Parag Gajbhiye
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincitOy
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull requestBryan Liu
 
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Indonesia
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialHeather McNamee
 
Continuous integration ( jen kins travis ci)
Continuous integration ( jen kins  travis ci)Continuous integration ( jen kins  travis ci)
Continuous integration ( jen kins travis ci)Sadani Rodrigo
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsKnoldus Inc.
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab IntroductionKrunal Doshi
 
Travis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHPTravis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHPFederico Damián Lozada Mosto
 
Teaching a Designer to Use GitHub
Teaching a Designer to Use GitHubTeaching a Designer to Use GitHub
Teaching a Designer to Use GitHubLiam Dempsey
 
Introduction to Git for developers
Introduction to Git for developersIntroduction to Git for developers
Introduction to Git for developersDmitry Guyvoronsky
 
Git,Github,How to host using Github
Git,Github,How to host using GithubGit,Github,How to host using Github
Git,Github,How to host using GithubSujata Regoti
 
Docker for tooling
Docker for toolingDocker for tooling
Docker for toolingRafael Gomes
 
Docker from a team perspective
Docker from a team perspectiveDocker from a team perspective
Docker from a team perspectiveEdwin Vlieg
 

La actualidad más candente (20)

Travis CI
Travis CITravis CI
Travis CI
 
Introducing GitLab (June 2018)
Introducing GitLab (June 2018)Introducing GitLab (June 2018)
Introducing GitLab (June 2018)
 
Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence
Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence
Introduction to Git(BitBucket) , Continuous Integration (Bamboo) & Confluence
 
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostustaVincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
 
Travis CI
Travis CITravis CI
Travis CI
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull request
 
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...
 
Up GitLab Presentation 2015
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015
 
GitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorialGitLab 8.5 Highlights and Step-by-step tutorial
GitLab 8.5 Highlights and Step-by-step tutorial
 
Continuous integration ( jen kins travis ci)
Continuous integration ( jen kins  travis ci)Continuous integration ( jen kins  travis ci)
Continuous integration ( jen kins travis ci)
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
Travis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHPTravis-CI - Continuos integration in the cloud for PHP
Travis-CI - Continuos integration in the cloud for PHP
 
Git best practices 2016
Git best practices 2016Git best practices 2016
Git best practices 2016
 
Teaching a Designer to Use GitHub
Teaching a Designer to Use GitHubTeaching a Designer to Use GitHub
Teaching a Designer to Use GitHub
 
Introduction to Git for developers
Introduction to Git for developersIntroduction to Git for developers
Introduction to Git for developers
 
Git,Github,How to host using Github
Git,Github,How to host using GithubGit,Github,How to host using Github
Git,Github,How to host using Github
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
Docker for tooling
Docker for toolingDocker for tooling
Docker for tooling
 
Docker from a team perspective
Docker from a team perspectiveDocker from a team perspective
Docker from a team perspective
 

Destacado

Introduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHPIntroduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHPEric Hogue
 
Theres a rabbit on my symfony
Theres a rabbit on my symfonyTheres a rabbit on my symfony
Theres a rabbit on my symfonyAlvaro Videla
 
Telephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDBTelephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDBMark Atwood
 
Building and Deploying PHP Apps Using phing
Building and Deploying PHP Apps Using phingBuilding and Deploying PHP Apps Using phing
Building and Deploying PHP Apps Using phingMihail Irintchev
 
Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)Anton Babenko
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 Tikal Knowledge
 
Asynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleAsynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleKirill Chebunin
 
Scaling applications with RabbitMQ at SunshinePHP
Scaling applications with RabbitMQ   at SunshinePHPScaling applications with RabbitMQ   at SunshinePHP
Scaling applications with RabbitMQ at SunshinePHPAlvaro Videla
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Max Romanovsky
 
Deploying PHP applications with Phing
Deploying PHP applications with PhingDeploying PHP applications with Phing
Deploying PHP applications with PhingMichiel Rook
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupScaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupKacper Gunia
 
Interoperability With RabbitMq
Interoperability With RabbitMqInteroperability With RabbitMq
Interoperability With RabbitMqAlvaro Videla
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with PhingMichiel Rook
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisRicard Clau
 

Destacado (15)

Introduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHPIntroduction à l'intégration continue en PHP
Introduction à l'intégration continue en PHP
 
Theres a rabbit on my symfony
Theres a rabbit on my symfonyTheres a rabbit on my symfony
Theres a rabbit on my symfony
 
Telephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDBTelephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDB
 
Building and Deploying PHP Apps Using phing
Building and Deploying PHP Apps Using phingBuilding and Deploying PHP Apps Using phing
Building and Deploying PHP Apps Using phing
 
Working with Asynchronous Events
Working with Asynchronous EventsWorking with Asynchronous Events
Working with Asynchronous Events
 
Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)Build & deploy PHP application (intro level)
Build & deploy PHP application (intro level)
 
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013 .Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013
 
Asynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleAsynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simple
 
Scaling applications with RabbitMQ at SunshinePHP
Scaling applications with RabbitMQ   at SunshinePHPScaling applications with RabbitMQ   at SunshinePHP
Scaling applications with RabbitMQ at SunshinePHP
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Deploying PHP applications with Phing
Deploying PHP applications with PhingDeploying PHP applications with Phing
Deploying PHP applications with Phing
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupScaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
 
Interoperability With RabbitMq
Interoperability With RabbitMqInteroperability With RabbitMq
Interoperability With RabbitMq
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with Phing
 
Speed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with RedisSpeed up your Symfony2 application and build awesome features with Redis
Speed up your Symfony2 application and build awesome features with Redis
 

Similar a Juc boston2014.pptx

The Job DSL Plugin: Introduction & What’s New
The Job DSL Plugin: Introduction & What’s NewThe Job DSL Plugin: Introduction & What’s New
The Job DSL Plugin: Introduction & What’s NewDaniel Spilker
 
Continuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonContinuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonInexture Solutions
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Andrew Bayer
 
Configuration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginConfiguration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginDaniel Spilker
 
Version your build process as you version your code
Version your build process as you version your codeVersion your build process as you version your code
Version your build process as you version your codeVincent Latombe
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...CloudBees
 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryAlvin Huang
 
Magento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRMagento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRDenis Ristic
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?CloudBees
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developerAbe Diaz
 
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL PluginJUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL PluginCloudBees
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptxVgPolampalli
 
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)Aysylu Greenberg
 
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsLouisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsJames Strong
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsAbe Diaz
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projectsAppsDojo
 

Similar a Juc boston2014.pptx (20)

The Job DSL Plugin: Introduction & What’s New
The Job DSL Plugin: Introduction & What’s NewThe Job DSL Plugin: Introduction & What’s New
The Job DSL Plugin: Introduction & What’s New
 
Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
 
Continuous Integration using Jenkins with Python
Continuous Integration using Jenkins with PythonContinuous Integration using Jenkins with Python
Continuous Integration using Jenkins with Python
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
 
Configuration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL PluginConfiguration As Code: The Job DSL Plugin
Configuration As Code: The Job DSL Plugin
 
Version your build process as you version your code
Version your build process as you version your codeVersion your build process as you version your code
Version your build process as you version your code
 
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
JUC Europe 2015: From Virtual Machines to Containers: Achieving Continuous In...
 
From Virtual Machines to Containers
From Virtual Machines to ContainersFrom Virtual Machines to Containers
From Virtual Machines to Containers
 
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared LibraryCodifying the Build and Release Process with a Jenkins Pipeline Shared Library
Codifying the Build and Release Process with a Jenkins Pipeline Shared Library
 
Magento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRMagento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HR
 
Build Time Hacking
Build Time HackingBuild Time Hacking
Build Time Hacking
 
JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?JUC Europe 2015: Hey! What Did We Just Release?
JUC Europe 2015: Hey! What Did We Just Release?
 
Introduction to jenkins for the net developer
Introduction to jenkins for the net developerIntroduction to jenkins for the net developer
Introduction to jenkins for the net developer
 
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL PluginJUC Europe 2015: Configuration as Code: The Job DSL Plugin
JUC Europe 2015: Configuration as Code: The Job DSL Plugin
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptx
 
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)Building A Distributed Build System at Google Scale (StrangeLoop 2016)
Building A Distributed Build System at Google Scale (StrangeLoop 2016)
 
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using JenkinsLouisville Software Engineering Meet Up: Continuous Integration Using Jenkins
Louisville Software Engineering Meet Up: Continuous Integration Using Jenkins
 
Jenkins pipeline as code
Jenkins pipeline as codeJenkins pipeline as code
Jenkins pipeline as code
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
 

Último

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 

Último (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 

Juc boston2014.pptx

  • 1. Jenkins User Conference Boston #jenkinsconf Jenkins + Gitlab + RabbitMQ + Symfony2 + Phing Brandon Mueller K12 Services, Inc @fatmuemoo June 18, 2014 #jenkinsconf
  • 2. Jenkins User Conference Boston #jenkinsconf About Me • Web Developer • Lead Engineer @ K12 Services Inc • Total Jenkins Newbie (~6 months)
  • 3. Jenkins User Conference Boston #jenkinsconf
  • 4. Jenkins User Conference Boston #jenkinsconf
  • 5. Jenkins User Conference Boston #jenkinsconf How I Sold CI to Executives • We are humans, we make mistakes • Deploying updates manually takes time and it is error prone • Tests and code quality assurance is inconsistent without CI • Automagically test and inspect before every update • Upfront cost can be significant, especially for a newbie, but pays off in the long run
  • 6. Jenkins User Conference Boston #jenkinsconf Why Jenkins? • Open Source; free as in freedom! • Battle tested • Huge community • Lots of plugins • In the Ubuntu repository • Easy to deploy and update • Other CI servers are either closed source or too immature
  • 7. Jenkins User Conference Boston #jenkinsconf GitLab https://gitlab.com/gitlab-org/gitlab-ce/blob/master/README.md
  • 8. Jenkins User Conference Boston #jenkinsconf What Is Open source software to collaborate on code • Manage Git repositories with fine grained access controls that keep your code secure • Perform code reviews and enhance collaboration with merge requests • Each project can also have an issue tracker and a wiki • Used by more than 100,000 organizations, GitLab is the most popular solution to manage Git repositories on- premises • Completely free and open source (MIT Expat license) • Powered by Ruby on Rails source: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/README.md
  • 9. Jenkins User Conference Boston #jenkinsconf Why GitLab? • Open Source; Free as in freedom! • Runs on the Linux + Nginx + MySql + Ruby stack • Easy to deploy and update; Digital Ocean has a push button install • Predictable release schedule • Awesome access controls
  • 10. Jenkins User Conference Boston #jenkinsconf Why GitLab? Why Not GitHub or BitBucket? • GitLab could be called a GitHub clone; Fairly intuitive UI and workflow • We have control of the service; no surprises • GitHub can get pricey when you have more than a few repositories • We still use a free BitBucket account for a third tier backups • We still use GitHub for Open Source code https://github.com/K12Labs
  • 11. Jenkins User Conference Boston #jenkinsconf Jenkins + GitLab GitLab Merge Request Builder Plugin
  • 12. Jenkins User Conference Boston #jenkinsconf
  • 13. Jenkins User Conference Boston #jenkinsconf
  • 14. Jenkins User Conference Boston #jenkinsconf Jenkins + GitLab GitLab Build Now Plugin
  • 15. Jenkins User Conference Boston #jenkinsconf
  • 16. Jenkins User Conference Boston #jenkinsconf Jenkins + GitLab Workflow • Dev creates a feature branch following a feature/issue_desc naming schema • ex: feature/124_my_awsome_thing • Dev writes some awesome code, sends a merge request when ready • Merge Request Builder plugin builds the project when MR is opened and when the MR is updated • When a MR is accepted, Jenkins triggers a build b/c code was pushed to the develop branch
  • 17. Jenkins User Conference Boston #jenkinsconf Jenkins + GitLab Workflow app_dev Jenkins Project (develop & master branch) app_test Jenkins Project (feature branches) MR is created or updated MR is accepted in GitLab
  • 18. Jenkins User Conference Boston #jenkinsconf What is Phing? PHing Is Not GNU make; it's a PHP project build system or build tool based on ​Apache Ant. You can do anything with it that you could do with a traditional build system like GNU make, and its use of simple XML build files and extensible PHP "task" classes make it an easy-to-use and highly flexible build framework. source: phing.info
  • 19. Jenkins User Conference Boston #jenkinsconf In other words • PHING in a build tool for automating tasks. • Uses a build XML file. • Lots of pre made PHING targets. • You can tie together pre made string targets • You can easily execute shell commands • You can write more complex phing targets in PHP • PHING is Awesome. Use PHING.
  • 20. Jenkins User Conference Boston #jenkinsconf Phing in Dev • All the things that Jenkins does for the build, we can do locally • No surprises if a build fails (usually)
  • 21. Jenkins User Conference Boston #jenkinsconf
  • 22. Jenkins User Conference Boston #jenkinsconf
  • 23. Jenkins User Conference Boston #jenkinsconf Jenkins + Phing Phing Plugin • It works ;) • Jenkins executes Phing targets as part of the build process • Passes in environment variables
  • 24. Jenkins User Conference Boston #jenkinsconf Jenkins + Phing •
  • 25. Jenkins User Conference Boston #jenkinsconf Code Quality
  • 26. Jenkins User Conference Boston #jenkinsconf PHP Code Sniffer • Reports on coding standards (PSR-2) • Outputs standard checkstyle xml formats (among other formats)
  • 27. Jenkins User Conference Boston #jenkinsconf CSSlint & JShint • Same thing, only for CSS and JS
  • 28. Jenkins User Conference Boston #jenkinsconf Build Summary • Make env/build specific config files • Composer • Bower • Twig.js • Assetic • Run Analytics/Tests • Symfony Cache
  • 29. Jenkins User Conference Boston #jenkinsconf
  • 30. Jenkins User Conference Boston #jenkinsconf What About Deployment? • Publish Over SSH Plugin • This gets the files where they need to go, but I need more than that • Deploy Plugin • Java Specific Platforms • Bash Script • HUH?
  • 31. Jenkins User Conference Boston #jenkinsconf RabbitMQ • Post build task triggers a bash script that sends a RabbitMQ message • Jenkins no longer cares about where the app is being deployed • Many consumers can receive the message - deploy the app on as many servers as needed
  • 32. Jenkins User Conference Boston #jenkinsconf A brief explanation of how RabbitMQ works • A producer posts messages to exchanges. • Exchanges in RabbitMQ route the message to where it needs to go. • A consumer connects to a queue to consume a message. • There are different types of exchanges
  • 33. Jenkins User Conference Boston #jenkinsconf Types of exchanges Direct • Message goes directly to queue Fanout • Every consumer connected to queue gets the message Topic • The exchange routes to different queues (or different exchanges) based on a routing key http://www.rabbitmq.com/getstarted.html
  • 34. Jenkins User Conference Boston #jenkinsconf Message Example Exchange ci Routing Key ci.k12fs2_dev.bug_216_login Payload { status : "complete", gitlabMergeRequestId : "193", gitlabSourceBranch : "bug/216_login", gitlabSourceName : "k12fs2/app_k12fs2", gitlabSourceRepository : "", gitlabTargetBranch : "develop", APP_VERSION : "2.0.2.233", BUILD_CAUSE : "GITLABCAUSE", BUILD_DISPLAY_NAME : "#348", BUILD_ID : "2014-06-06_14-15-52", BUILD_NUMBER : "348", BUILD_TAG : "jenkins-k12fs2_dev-348", BUILD_URL : "http://example.com/job/k12fs2_dev/348/", GIT_BRANCH : "origin/develop", GIT_COMMIT : "351790406a56aad54b2afe8fdf6a60b3737441d8", GIT_PREVIOUS_COMMIT: "351790406a56aad54b2afe8fdf6a60b3737441d8", GIT_URL : "http://example.com/", HUDSON_URL : "http://example.com/", JOB_NAME : "k12fs2_dev", JOB_URL : "http://example.com/job/k12fs2_dev/" }
  • 35. Jenkins User Conference Boston #jenkinsconf Topic Exchange Develop Branch Queue Feature Branch Branch Queue Dev App Server Prod App Server Staging/QA App Server Master Branch Fanout Exchange Prod App Server Prod App Server routing key: ci.project_name.branch_name app_dev.origin_develop app_dev.origin_master
  • 36. Jenkins User Conference Boston #jenkinsconf Symfony2 + RabbitMQ • High quality bundle called OldSoundRabbitMq Bundle • Consumer code for deploying the application lives in our Symfony app • Consumer code drops down to the command line to execute PHING targets etc
  • 37. Jenkins User Conference Boston #jenkinsconf OldSouundRabbitMqBundle Configz
  • 38. Jenkins User Conference Boston #jenkinsconf Consumer Codez
  • 39. Jenkins User Conference Boston #jenkinsconf Bringing It All Together Application Server Vagrant Jenkins <Phing> Vagrant <Phing> Vagrant <Phing> Dev machines use Phing to deploy the application internally and run analytics Application server(s) consume message from Jenkins and use Phing to deploy the application GitLab GitLab notifies Jenkins of push. Jenkins Pull down repository <Phing> Jenkins uses Phing to build the application I’m done building! Message Consumer <Phing> Application Server Consumer <Phing> Application Server Consumer <Phing>
  • 40. Jenkins User Conference Boston #jenkinsconf All The Jenkins Things • Environment Injector Plugin • Checkstyle Plugin • Gitlab Build Now Plugin • Gitlab Merge Request Builder Plugin • Hudson Post Build Task
  • 41. Jenkins User Conference Boston #jenkinsconf Things I Feel Are missing • RabbitMQ Post Build Producer plugin • Better Notifications from Jenkins to GitLab CE (Coming Soon?!?) • Artifact publishing inside of Jenkins • Dynamic build plan for feature branches or I’m too incompetent to develop myself or the solution exists and I just couldn’t figure it out it
  • 42. Jenkins User Conference Boston #jenkinsconf All (most of) the things • https://www.gitlab.com/gitlab-ce/ • http://www.phing.info/ • https://github.com/squizlabs/PHP_CodeSniffer • https://github.com/CSSLint/csslint • http://www.jshint.com/ • https://getcomposer.org/ • http://bower.io/ • http://www.rabbitmq.com/ • https://github.com/videlalvaro/rabbitmqbundle • http://www.rabbitmq.com/getstarted.html
  • 43. Jenkins User Conference Boston #jenkinsconf Thank You To Our Sponsors Platinum Gold Silver