SlideShare a Scribd company logo
DrupalCon Los Angeles - Continuous Integration Toolbox
https://github.com/propeoplemd/cibox
Multidimensional testing workflow before
merge to master
@ygerasimov @podarok
Introduction
Yuriy Gerasimov
Drupal Architect
https://www.drupal.org/u/ygerasimov
Andrii Podanenko
DevOps Architect
https://www.drupal.org/u/podarok
Development infrastructure
● single development environment
● separate company dev server (multiple vhosts
one per project)
● SaaS solutions (Acquia, Pantheon, …)
Coding process
● all commits directly to master
● master deployed to dev site (sometimes
automatically)
● code review on dev site after deployment
Configuration process
● master database, get pulled to local dev
environments (backup & migrate)
● changes to configuration happens on dev site
manually
Problems
● shared resources on dev environment, dev
conflicts (cache, solr)
● too much time to configure all services locally
(varnish, solr)
● large distance between Dev and Ops (only one
guru able to do production release)
Local development
● local virtualized environment (vagrant)
● started from puphpet.com but switched to ansible
● based on ubuntu 12.04 (upgrading to 14.04)
Database
● no configuration on demo/stage/prod sites
● code driven development
● database/profile workflow
Code process
● Github pull requests workflow
● code review before merge to master
● code style checks, test runs
● security tests
● QA on builds
Extra tools
● os monitoring to see resources consuming
operations (multinode munin)
● visual regression testing
● automated complex deployments Acquia
deployment
● urls health checks
Visual regression
● http://backtrac.io SaaS
● screenshots before / after release, diff
● automated scheduled screenshots / diffs
● authenticated user
● register and start using now!
DrupalCon Los Angeles - Continuous Integration Toolbox
URLs health checks
● https://github.com/ygerasimov/website-size-scan
● scans all URLs in the file, checks sizes of images
● logs 404s, 5xx, etc.
Welcome CIBox
http://bit.ly/ffw-cibox
CI for project and VM with Drupal initial codebase
Project initial creation playbook (
github.yml ).
- Get latest Drupal
- Install basic profile
- Inject Vagrant VM config
- Inject DevOps scripts
- reinstall.yml,
- sniffers.yml,
- tests.yml,
- security.yml
Continuous Integration for a project
( jenkinsbox.yml )
- Server preconfigured packages,
swap, needed stuff
- Jenkins, sniffers, ansible
- Jenkins preconfigured jobs
- Apache, mysql, solr etc
- Optimized configs, vhosts etc
CIBox code structure
Steps for getting started
2. Repository initialization
● Make needed changes to github.yml
● Run ansible-playbook github.yml
● push generated codebase folder to
github repo
● check Pull Request builder with newly
created change to readme.md
● profit
1. CI server
● Get virtual or real server from
hosting provider (Ubuntu LTS 64
bit only for now)
● Set root password
● Make initial config changes to
jenkinsbox.yml and inventory
● Run ansible-playbook
jenkinsbox.yml from a shell
● Make changes to jenkins UI with
credentials to github repo
How to deploy whole system
ansible playbook for installing CI server
- Jenkins powered install
- Needed Jenkins’s plugins
- LAMP stack + SSL
- PHP Code Sniffer, scss-lint
- Java JDK
- Jetty && Apache Solr
- Selenium && Behat packages
- Optimized and preconfigured configs
jenkinsbox.yml
A bunch of jobs with scripts for running playbooks
Preconfigured Jenkins
- Pull Request Builder
- Skeleton for Backup
production database
- Demo site builder
- Disk space cleaner
During run of github.yml you’ll get a codebase that has latest drupal in
drupal folder and scripts for future CI builds and tests.
Latest drupal, adminer, devops scripts, basic profile
Main project code structure
Vagrant + virtualbox (optional lxc) + ansible provisioner
We are using trick for sharing ansible roles between CI server and VM
provisioning scripts for making sure we have equal environments for
both.
Basic stuff for now (all are inside splitted ansible roles):
composer, pear, ansible, apache, memcached, mysql, php, sdebug,
shprof, selenium, behat, drush, jetty solr, phpdaemon, php
codesniffer, apache ssl, custom swap.
Just vagrant up and you are ready to go coding.
Vagrant box
Single task flow
Developer point of view
Comments by CI bot
Profile based flow
Reinstall Drupal from scratch every builder time
SQL based flow
Import SQL dump every build and prepare it to codebase
Team rules
● Never merge own Pull Request
● Never push directly to main repo master branch
● master branch is stable
● There should be two siblings for every role (optional)
● Bugs introduced from specific PR would be nice to
assign to its reviewer. (optional)
Development phases
1. Reinstall from scratch every build by reinstall.yml
playbook
2. Update path, content can be edited at stage by reinstall.
yml playbook and pp_environment: staging
3. SLA (production) update path with QA testing on stage
Responsibility
Due to the fact all DevOps scripts are in the same repo with a
project itself - any developer can change workflow at any
point.
Team does manage all the steps for DevOps scripts, no need
to involve Ops into the team.
Flow Bottlenecks
● Dependency from github(gitlab, bitbucket)
● If CI server down - team get stopped on code review step
● New developers should follow new rules. (Coder is tough)
● DevOps must be a team member(s)
● Code Review get hurt
● Builds are slow on huge projects
● Decent desktops for a team (SSD is a must)
● Minimal task >=1 hour
Usefull links
Documentation
● https://github.com/propeoplemd/cibox
● https://github.com/propeoplemd/cibox/blob/master/README.md
● https://github.com/propeoplemd/cibox/blob/master/github/files/drupal7/scripts/README.reinstall.md
Presentations
● http://www.slideshare.net/podarok/drupal-continuous-integration-workflow
● http://www.slideshare.net/podarok/start-using-vagrant-now
● http://www.slideshare.net/podarok/live-deployment-ci-drupal
● http://www.slideshare.net/ygerasimov/ci-drupal-camp-berlin-2014
● http://www.slideshare.net/ygerasimov/vagrant-stanford-drupalcamp-2014
● http://www.slideshare.net/ygerasimov/continuous-integration-stanford-2014
Blog posts
● http://wearepropeople.com/blog/how-we-use-vagrant-in-our-drupal-development-workflow
● http://wearepropeople.com/blog/building-quality-into-drupal-development-workflow
Big thanks to
Jeff Geerling
@geerlingguy
Evaluate Us Please
http://bit.ly/ffw-cibox-evaluate
WHAT DID YOU THINK?
EVAULATE THIS SESSION - LOSANGELES2015.DRUPAL.ORG/SCHEDULE
THANK YOU!
Andriy Podanenko
DevOps Architect
Yuriy Gerasimov
Drupal Architect

More Related Content

PPTX
MoldCamp - multidimentional testing workflow. CIBox.
PDF
Drupal contrib module maintaining
PDF
CIbox - OpenSource solution for making your #devops better
PDF
Live deployment, ci, drupal
PDF
Drupal 8 DevOps . Profile and SQL flows.
PDF
Lviv 2013 d7 vs d8
PDF
Docker SQL Continuous Integration Flow
PPTX
7 Habits of Highly Effective Jenkins Users
MoldCamp - multidimentional testing workflow. CIBox.
Drupal contrib module maintaining
CIbox - OpenSource solution for making your #devops better
Live deployment, ci, drupal
Drupal 8 DevOps . Profile and SQL flows.
Lviv 2013 d7 vs d8
Docker SQL Continuous Integration Flow
7 Habits of Highly Effective Jenkins Users

What's hot (20)

PDF
JCConf 2015 workshop 動手玩 Java 專案建置工具
PPTX
Jenkins days workshop pipelines - Eric Long
PDF
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
PDF
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
PDF
Ci For The Web 2.0 Guy Or Gal
PDF
Lessons Learned: Using Concourse In Production
PDF
Modern Infrastructure from Scratch with Puppet
PPTX
Jenkins, pipeline and docker
PPTX
Baking docker using chef
PPTX
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
PDF
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
PDF
Использование Docker в CI / Александр Акбашев (HERE Technologies)
PDF
How to integrate front end tool via gruntjs
PDF
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
PDF
7 Habits of Highly Effective Jenkins Users
PDF
Continuous Integration and DevOps with Open Build Service(OBS)
PPTX
Vagrant to-aws-flow
PPT
Jenkins Scriptler in 90mins
PDF
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
PDF
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
JCConf 2015 workshop 動手玩 Java 專案建置工具
Jenkins days workshop pipelines - Eric Long
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Ci For The Web 2.0 Guy Or Gal
Lessons Learned: Using Concourse In Production
Modern Infrastructure from Scratch with Puppet
Jenkins, pipeline and docker
Baking docker using chef
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
openQA hands on with openSUSE Leap 42.1 - openSUSE.Asia Summit ID 2016
Использование Docker в CI / Александр Акбашев (HERE Technologies)
How to integrate front end tool via gruntjs
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
7 Habits of Highly Effective Jenkins Users
Continuous Integration and DevOps with Open Build Service(OBS)
Vagrant to-aws-flow
Jenkins Scriptler in 90mins
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
Ad

Viewers also liked (20)

PDF
Start using vagrant now!
PDF
DrupalCamp Kyiv 2009 Official Report
PDF
Do + ldo for developers(full)
PDF
Drupal 8 what to wait from
PDF
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
PPTX
Who is here? DrupalCamp Kyiv 2009 opening
PDF
Drupal на 20-ти мегабайтах или издевательства над Shared Hosting
DOCX
Happy ever afters with ci workflow
PDF
Drupal code sprint для новичков
PDF
Getting started with Ansible. Be efficient.
PPT
Порівняння Drupal та Typo3
PDF
Getting Started with DrupalGap
PPT
Drupal Paranoia
PDF
Drupal and diversity of Single sign-on systems
PDF
Build your application in seconds and optimize workflow as much as you can us...
PDF
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
PPT
Многоязычие сайта на Drupal
ODP
Історія, теорія та використання CMS Drupal
PPTX
Drupal Continuous Integration Workflow
PPTX
природна і економна дорожня карта для переходу команди розробки на тест центр...
Start using vagrant now!
DrupalCamp Kyiv 2009 Official Report
Do + ldo for developers(full)
Drupal 8 what to wait from
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
Who is here? DrupalCamp Kyiv 2009 opening
Drupal на 20-ти мегабайтах или издевательства над Shared Hosting
Happy ever afters with ci workflow
Drupal code sprint для новичков
Getting started with Ansible. Be efficient.
Порівняння Drupal та Typo3
Getting Started with DrupalGap
Drupal Paranoia
Drupal and diversity of Single sign-on systems
Build your application in seconds and optimize workflow as much as you can us...
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
Многоязычие сайта на Drupal
Історія, теорія та використання CMS Drupal
Drupal Continuous Integration Workflow
природна і економна дорожня карта для переходу команди розробки на тест центр...
Ad

Similar to DrupalCon Los Angeles - Continuous Integration Toolbox (20)

ODP
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
PPTX
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
PPTX
Modern Web-site Development Pipeline
PPTX
Fluo CICD OpenStack Summit
PDF
Continuous Integration
PPTX
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
PPTX
Go Faster with Ansible (PHP meetup)
PPTX
Continuos Integration @Knetminer
PDF
Gitlab and Lingvokot
PDF
Jenkins Pipelines
PDF
Infrastructure = Code
PDF
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
ODP
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
PPTX
Road to sbt 1.0 paved with server
PPTX
Continuous testing
PDF
Scale Big With Docker — Moboom 2014
PPTX
PDF
Heroku to Kubernetes & Gihub to Gitlab success story
PDF
Introduction to Docker at the Azure Meet-up in New York
PPTX
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
Modern Web-site Development Pipeline
Fluo CICD OpenStack Summit
Continuous Integration
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
Go Faster with Ansible (PHP meetup)
Continuos Integration @Knetminer
Gitlab and Lingvokot
Jenkins Pipelines
Infrastructure = Code
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Road to sbt 1.0 paved with server
Continuous testing
Scale Big With Docker — Moboom 2014
Heroku to Kubernetes & Gihub to Gitlab success story
Introduction to Docker at the Azure Meet-up in New York
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe

More from Andrii Podanenko (19)

PDF
Глобальні навчальні дні друпал
PDF
Головні Принципи Автоматизації
PPTX
Drupal 8 configuration development flow
PDF
Сейчас самое время...ЖИТЬ!
PDF
Drupal codesprint kyiv drupal cafe 07.02.2013
PDF
Диалоговый интенсив 2012 карпаты
PDF
психолог в социальных медиа
PDF
Ubercart7 views catalog ru
PDF
Ubercart7 Dynamic properties ru
ODP
Ubercart 7 ru
PDF
Feeds drupal cafe
PDF
Drupal 7 database api
PDF
Yaremchuk - Drupal CodeLobster
PDF
Yaremchuk - Корпоративные сайты
PDF
управление проектами отношение к клиенту
PDF
Drupal Optimization
PDF
Друпал - стандартні модулі
PDF
Друпал Drush
PPT
Drupal Migrate
Глобальні навчальні дні друпал
Головні Принципи Автоматизації
Drupal 8 configuration development flow
Сейчас самое время...ЖИТЬ!
Drupal codesprint kyiv drupal cafe 07.02.2013
Диалоговый интенсив 2012 карпаты
психолог в социальных медиа
Ubercart7 views catalog ru
Ubercart7 Dynamic properties ru
Ubercart 7 ru
Feeds drupal cafe
Drupal 7 database api
Yaremchuk - Drupal CodeLobster
Yaremchuk - Корпоративные сайты
управление проектами отношение к клиенту
Drupal Optimization
Друпал - стандартні модулі
Друпал Drush
Drupal Migrate

Recently uploaded (20)

PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
medical staffing services at VALiNTRY
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
System and Network Administraation Chapter 3
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
history of c programming in notes for students .pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Transform Your Business with a Software ERP System
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Design an Analysis of Algorithms II-SECS-1021-03
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
medical staffing services at VALiNTRY
Navsoft: AI-Powered Business Solutions & Custom Software Development
System and Network Administraation Chapter 3
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
How Creative Agencies Leverage Project Management Software.pdf
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PTS Company Brochure 2025 (1).pdf.......
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Upgrade and Innovation Strategies for SAP ERP Customers
CHAPTER 2 - PM Management and IT Context
history of c programming in notes for students .pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Transform Your Business with a Software ERP System
L1 - Introduction to python Backend.pptx
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf

DrupalCon Los Angeles - Continuous Integration Toolbox

  • 3. Introduction Yuriy Gerasimov Drupal Architect https://www.drupal.org/u/ygerasimov Andrii Podanenko DevOps Architect https://www.drupal.org/u/podarok
  • 4. Development infrastructure ● single development environment ● separate company dev server (multiple vhosts one per project) ● SaaS solutions (Acquia, Pantheon, …)
  • 5. Coding process ● all commits directly to master ● master deployed to dev site (sometimes automatically) ● code review on dev site after deployment
  • 6. Configuration process ● master database, get pulled to local dev environments (backup & migrate) ● changes to configuration happens on dev site manually
  • 7. Problems ● shared resources on dev environment, dev conflicts (cache, solr) ● too much time to configure all services locally (varnish, solr) ● large distance between Dev and Ops (only one guru able to do production release)
  • 8. Local development ● local virtualized environment (vagrant) ● started from puphpet.com but switched to ansible ● based on ubuntu 12.04 (upgrading to 14.04)
  • 9. Database ● no configuration on demo/stage/prod sites ● code driven development ● database/profile workflow
  • 10. Code process ● Github pull requests workflow ● code review before merge to master ● code style checks, test runs ● security tests ● QA on builds
  • 11. Extra tools ● os monitoring to see resources consuming operations (multinode munin) ● visual regression testing ● automated complex deployments Acquia deployment ● urls health checks
  • 12. Visual regression ● http://backtrac.io SaaS ● screenshots before / after release, diff ● automated scheduled screenshots / diffs ● authenticated user ● register and start using now!
  • 14. URLs health checks ● https://github.com/ygerasimov/website-size-scan ● scans all URLs in the file, checks sizes of images ● logs 404s, 5xx, etc.
  • 16. CI for project and VM with Drupal initial codebase Project initial creation playbook ( github.yml ). - Get latest Drupal - Install basic profile - Inject Vagrant VM config - Inject DevOps scripts - reinstall.yml, - sniffers.yml, - tests.yml, - security.yml Continuous Integration for a project ( jenkinsbox.yml ) - Server preconfigured packages, swap, needed stuff - Jenkins, sniffers, ansible - Jenkins preconfigured jobs - Apache, mysql, solr etc - Optimized configs, vhosts etc CIBox code structure
  • 17. Steps for getting started 2. Repository initialization ● Make needed changes to github.yml ● Run ansible-playbook github.yml ● push generated codebase folder to github repo ● check Pull Request builder with newly created change to readme.md ● profit 1. CI server ● Get virtual or real server from hosting provider (Ubuntu LTS 64 bit only for now) ● Set root password ● Make initial config changes to jenkinsbox.yml and inventory ● Run ansible-playbook jenkinsbox.yml from a shell ● Make changes to jenkins UI with credentials to github repo How to deploy whole system
  • 18. ansible playbook for installing CI server - Jenkins powered install - Needed Jenkins’s plugins - LAMP stack + SSL - PHP Code Sniffer, scss-lint - Java JDK - Jetty && Apache Solr - Selenium && Behat packages - Optimized and preconfigured configs jenkinsbox.yml
  • 19. A bunch of jobs with scripts for running playbooks Preconfigured Jenkins - Pull Request Builder - Skeleton for Backup production database - Demo site builder - Disk space cleaner
  • 20. During run of github.yml you’ll get a codebase that has latest drupal in drupal folder and scripts for future CI builds and tests. Latest drupal, adminer, devops scripts, basic profile Main project code structure
  • 21. Vagrant + virtualbox (optional lxc) + ansible provisioner We are using trick for sharing ansible roles between CI server and VM provisioning scripts for making sure we have equal environments for both. Basic stuff for now (all are inside splitted ansible roles): composer, pear, ansible, apache, memcached, mysql, php, sdebug, shprof, selenium, behat, drush, jetty solr, phpdaemon, php codesniffer, apache ssl, custom swap. Just vagrant up and you are ready to go coding. Vagrant box
  • 22. Single task flow Developer point of view
  • 24. Profile based flow Reinstall Drupal from scratch every builder time
  • 25. SQL based flow Import SQL dump every build and prepare it to codebase
  • 26. Team rules ● Never merge own Pull Request ● Never push directly to main repo master branch ● master branch is stable ● There should be two siblings for every role (optional) ● Bugs introduced from specific PR would be nice to assign to its reviewer. (optional)
  • 27. Development phases 1. Reinstall from scratch every build by reinstall.yml playbook 2. Update path, content can be edited at stage by reinstall. yml playbook and pp_environment: staging 3. SLA (production) update path with QA testing on stage
  • 28. Responsibility Due to the fact all DevOps scripts are in the same repo with a project itself - any developer can change workflow at any point. Team does manage all the steps for DevOps scripts, no need to involve Ops into the team.
  • 29. Flow Bottlenecks ● Dependency from github(gitlab, bitbucket) ● If CI server down - team get stopped on code review step ● New developers should follow new rules. (Coder is tough) ● DevOps must be a team member(s) ● Code Review get hurt ● Builds are slow on huge projects ● Decent desktops for a team (SSD is a must) ● Minimal task >=1 hour
  • 30. Usefull links Documentation ● https://github.com/propeoplemd/cibox ● https://github.com/propeoplemd/cibox/blob/master/README.md ● https://github.com/propeoplemd/cibox/blob/master/github/files/drupal7/scripts/README.reinstall.md Presentations ● http://www.slideshare.net/podarok/drupal-continuous-integration-workflow ● http://www.slideshare.net/podarok/start-using-vagrant-now ● http://www.slideshare.net/podarok/live-deployment-ci-drupal ● http://www.slideshare.net/ygerasimov/ci-drupal-camp-berlin-2014 ● http://www.slideshare.net/ygerasimov/vagrant-stanford-drupalcamp-2014 ● http://www.slideshare.net/ygerasimov/continuous-integration-stanford-2014 Blog posts ● http://wearepropeople.com/blog/how-we-use-vagrant-in-our-drupal-development-workflow ● http://wearepropeople.com/blog/building-quality-into-drupal-development-workflow
  • 31. Big thanks to Jeff Geerling @geerlingguy
  • 33. WHAT DID YOU THINK? EVAULATE THIS SESSION - LOSANGELES2015.DRUPAL.ORG/SCHEDULE THANK YOU! Andriy Podanenko DevOps Architect Yuriy Gerasimov Drupal Architect