SlideShare a Scribd company logo
https://github.com/propeoplemd/cibox
Multidimensional testing workflow before
merge to master. CIBox suite.
@podarok
Andrii Podanenko
DevOps Architect, FFWco
https://www.drupal.org/u/podarok
Oldschool development
workflow
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, mysql, apache)
● too much time to configure all services on local
dev desktop (varnish, solr)
● large gap between Dev and Ops (only one guru
able to do production release)
“Newschool”
development workflow
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)
● automated complex deployments Acquia
deployment
● visual regression testing ->
● 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!
MoldCamp  - multidimentional testing workflow. CIBox.
URLs health checks
● https://github.com/ygerasimov/website-size-scan
● scans all URLs in the file, checks sizes of images
● logs 404s, 5xx, etc.
● written on golang
Welcome CIBox
http://bit.ly/ffw-cibox
CI for project and VM with Drupal initial codebase
Project initial creation
playbook
github.yml
Continuous Integration for a
project
jenkinsbox.yml
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 CI 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 with Vagrant VM.
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
how to work with CIBox
Developer point
of view
Single task flow
Comments by CI bot
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
technical information
How CI works
Profile based flow
Reinstalls Drupal from scratch every builder time
SQL based flow
Imports SQL dump every build and prepares 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)
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
● Overall system is pretty complex
● Not so easy to start for new teams or companies
How to start using CIBox in your team
● Contribute* to CIBox and get more familiar with its subsystems.
● Install the flow for some internal project without tough deadline
● Organize codesprint with CIBox as workflow
● Start to use 1-2 parts of the system and add new parts every
following project
○ sniffers.yml
○ tests.yml
○ reinstall.yml
○ Vagrant box
○ ansible scripting(playbooks)
○ Jenkins
○ Github PR for manual code review
*CIBox is opensource, based on popular technologies...
Usefull linksDocumentation
● 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.m
d
Presentations
● http://events.drupal.org/losangeles2015/sessions/multidimensional-testing-workflow-merge-master
● http://druler.com/node/888
● 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
Questions?
http://bit.ly/ffw-cibox
Andrii Podanenko
DevOps Architect
https://www.drupal.org/u/podarok

More Related Content

PDF
DrupalCon Los Angeles - Continuous Integration Toolbox
PDF
CIbox - OpenSource solution for making your #devops better
PDF
Drupal contrib module maintaining
PDF
Drupal 8 DevOps . Profile and SQL flows.
PDF
Live deployment, ci, drupal
PDF
Docker SQL Continuous Integration Flow
PPTX
Drupal 8 configuration development flow
PPTX
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
DrupalCon Los Angeles - Continuous Integration Toolbox
CIbox - OpenSource solution for making your #devops better
Drupal contrib module maintaining
Drupal 8 DevOps . Profile and SQL flows.
Live deployment, ci, drupal
Docker SQL Continuous Integration Flow
Drupal 8 configuration development flow
Seven Habits of Highly Effective Jenkins Users (2014 edition!)

What's hot (20)

PPTX
Jenkins days workshop pipelines - Eric Long
PDF
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
PDF
Ci For The Web 2.0 Guy Or Gal
PDF
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
PPTX
Baking docker using chef
PDF
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
PDF
Modern Infrastructure from Scratch with Puppet
PPTX
Vagrant to-aws-flow
PDF
JCConf 2015 workshop 動手玩 Java 專案建置工具
PPTX
Pipeline as code - new feature in Jenkins 2
PDF
Minikube Workshop Handout
PDF
7 Habits of Highly Effective Jenkins Users
PDF
CI/CD Using Ansible and Jenkins for Infrastructure
PPTX
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
PDF
Configuration Management - Finding the tool to fit your needs
PDF
Git 101: Git and GitHub for Beginners
ODP
Jenkins 101: Continuos Integration with Jenkins
PDF
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems Integration
PDF
Red Hat Satellite 6 - Automation with Puppet
PDF
Baking Docker Using Chef
Jenkins days workshop pipelines - Eric Long
An Open-Source Chef Cookbook CI/CD Implementation Using Jenkins Pipelines
Ci For The Web 2.0 Guy Or Gal
De-centralise and Conquer: Masterless Puppet in a Dynamic Environment
Baking docker using chef
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Modern Infrastructure from Scratch with Puppet
Vagrant to-aws-flow
JCConf 2015 workshop 動手玩 Java 專案建置工具
Pipeline as code - new feature in Jenkins 2
Minikube Workshop Handout
7 Habits of Highly Effective Jenkins Users
CI/CD Using Ansible and Jenkins for Infrastructure
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Configuration Management - Finding the tool to fit your needs
Git 101: Git and GitHub for Beginners
Jenkins 101: Continuos Integration with Jenkins
Jenkins Pipeline @ Scale. Building Automation Frameworks for Systems Integration
Red Hat Satellite 6 - Automation with Puppet
Baking Docker Using Chef
Ad

Viewers also liked (20)

PDF
DrupalCamp Kyiv 2009 Official Report
PDF
Drupal на 20-ти мегабайтах или издевательства над Shared Hosting
PDF
Do + ldo for developers(full)
PDF
Lviv 2013 d7 vs d8
PDF
Start using vagrant now!
PDF
Feeds drupal cafe
PDF
Drupal Optimization
PDF
Ubercart7 views catalog ru
PDF
Drupal codesprint kyiv drupal cafe 07.02.2013
PDF
Drupal 8 what to wait from
PDF
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
PDF
Drupal code sprint для новичков
DOCX
Happy ever afters with ci workflow
PPTX
Who is here? DrupalCamp Kyiv 2009 opening
PPT
Порівняння Drupal та Typo3
PDF
Getting started with Ansible. Be efficient.
PDF
Getting Started with DrupalGap
PPT
Drupal Paranoia
PDF
Drupal and diversity of Single sign-on systems
PDF
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
DrupalCamp Kyiv 2009 Official Report
Drupal на 20-ти мегабайтах или издевательства над Shared Hosting
Do + ldo for developers(full)
Lviv 2013 d7 vs d8
Start using vagrant now!
Feeds drupal cafe
Drupal Optimization
Ubercart7 views catalog ru
Drupal codesprint kyiv drupal cafe 07.02.2013
Drupal 8 what to wait from
Vlad Savitsky.Modules parade.DrupalCamp Kyiv 2011
Drupal code sprint для новичков
Happy ever afters with ci workflow
Who is here? DrupalCamp Kyiv 2009 opening
Порівняння Drupal та Typo3
Getting started with Ansible. Be efficient.
Getting Started with DrupalGap
Drupal Paranoia
Drupal and diversity of Single sign-on systems
Andriy Podanenko.Drupal database api.DrupalCamp Kyiv 2011
Ad

Similar to MoldCamp - multidimentional testing workflow. CIBox. (20)

PPTX
Fluo CICD OpenStack Summit
PDF
Continuous Integration
PPTX
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
PPTX
Modern Web-site Development Pipeline
PDF
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
PPTX
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
PDF
Jenkins Pipelines
PDF
Ci for android OS
PDF
Introduction to Docker at the Azure Meet-up in New York
PPTX
DockerCon 15 Keynote - Day 2
PPTX
Настройка окружения для кросскомпиляции проектов на основе docker'a
PDF
Scale Big With Docker — Moboom 2014
ODP
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
PPTX
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
ODP
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
PDF
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
PDF
Upgrading CentOS on the Facebook fleet
PPTX
Road to sbt 1.0 paved with server
PDF
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
PDF
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Fluo CICD OpenStack Summit
Continuous Integration
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...
Modern Web-site Development Pipeline
Vincit Teatime 2015.2 - Niko Kurtti: SaaSiin pa(i)nostusta
OpenStack Summit 2013 Hong Kong - OpenStack and Windows
Jenkins Pipelines
Ci for android OS
Introduction to Docker at the Azure Meet-up in New York
DockerCon 15 Keynote - Day 2
Настройка окружения для кросскомпиляции проектов на основе docker'a
Scale Big With Docker — Moboom 2014
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
SenchaCon 2016: Develop, Test & Deploy with Docker - Jonas Schwabe
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
Upgrading CentOS on the Facebook fleet
Road to sbt 1.0 paved with server
August Webinar - Water Cooler Talks: A Look into a Developer's Workbench
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...

More from Andrii Podanenko (16)

PDF
Глобальні навчальні дні друпал
PPTX
природна і економна дорожня карта для переходу команди розробки на тест центр...
PDF
Головні Принципи Автоматизації
PPTX
Drupal Continuous Integration Workflow
PDF
Сейчас самое время...ЖИТЬ!
PDF
Диалоговый интенсив 2012 карпаты
PDF
психолог в социальных медиа
PDF
Ubercart7 Dynamic properties ru
ODP
Ubercart 7 ru
PDF
Drupal 7 database api
PDF
Yaremchuk - Drupal CodeLobster
PDF
Yaremchuk - Корпоративные сайты
PDF
управление проектами отношение к клиенту
PDF
Друпал - стандартні модулі
PDF
Друпал Drush
PPT
Drupal Migrate
Глобальні навчальні дні друпал
природна і економна дорожня карта для переходу команди розробки на тест центр...
Головні Принципи Автоматизації
Drupal Continuous Integration Workflow
Сейчас самое время...ЖИТЬ!
Диалоговый интенсив 2012 карпаты
психолог в социальных медиа
Ubercart7 Dynamic properties ru
Ubercart 7 ru
Drupal 7 database api
Yaremchuk - Drupal CodeLobster
Yaremchuk - Корпоративные сайты
управление проектами отношение к клиенту
Друпал - стандартні модулі
Друпал Drush
Drupal Migrate

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Approach and Philosophy of On baking technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
cuic standard and advanced reporting.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Cloud computing and distributed systems.
PDF
Encapsulation theory and applications.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Big Data Technologies - Introduction.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Approach and Philosophy of On baking technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Encapsulation_ Review paper, used for researhc scholars
Advanced methodologies resolving dimensionality complications for autism neur...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
cuic standard and advanced reporting.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Unlocking AI with Model Context Protocol (MCP)
Cloud computing and distributed systems.
Encapsulation theory and applications.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
The AUB Centre for AI in Media Proposal.docx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows

MoldCamp - multidimentional testing workflow. CIBox.

  • 1. https://github.com/propeoplemd/cibox Multidimensional testing workflow before merge to master. CIBox suite. @podarok Andrii Podanenko DevOps Architect, FFWco https://www.drupal.org/u/podarok
  • 3. Development infrastructure ● single development environment ● separate company dev server (multiple vhosts one per project) ● SaaS solutions (Acquia, Pantheon, …)
  • 4. Coding process ● all commits directly to master ● master deployed to dev site (sometimes automatically) ● code review on dev site after deployment
  • 5. Configuration process ● master database, get pulled to local dev environments (backup & migrate) ● changes to configuration happens on dev site manually
  • 6. Problems ● shared resources on dev environment -> dev conflicts (cache, solr, mysql, apache) ● too much time to configure all services on local dev desktop (varnish, solr) ● large gap 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) ● automated complex deployments Acquia deployment ● visual regression testing -> ● 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. ● written on golang
  • 16. CI for project and VM with Drupal initial codebase Project initial creation playbook github.yml Continuous Integration for a project jenkinsbox.yml 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 CI 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 with Vagrant VM. 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. how to work with CIBox Developer point of view
  • 25. 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
  • 27. Profile based flow Reinstalls Drupal from scratch every builder time
  • 28. SQL based flow Imports SQL dump every build and prepares it to codebase
  • 29. 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)
  • 30. 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.
  • 31. 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 ● Overall system is pretty complex ● Not so easy to start for new teams or companies
  • 32. How to start using CIBox in your team ● Contribute* to CIBox and get more familiar with its subsystems. ● Install the flow for some internal project without tough deadline ● Organize codesprint with CIBox as workflow ● Start to use 1-2 parts of the system and add new parts every following project ○ sniffers.yml ○ tests.yml ○ reinstall.yml ○ Vagrant box ○ ansible scripting(playbooks) ○ Jenkins ○ Github PR for manual code review *CIBox is opensource, based on popular technologies...
  • 33. Usefull linksDocumentation ● 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.m d Presentations ● http://events.drupal.org/losangeles2015/sessions/multidimensional-testing-workflow-merge-master ● http://druler.com/node/888 ● 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