SlideShare a Scribd company logo
Git-Drush-Aegir
Automatic Drupal builds with Fabric
It’ll be about half an hour
✅ Motivation for using Aegir / Drush Provision; 

dev-staging-live platform triangle:  5-7 mins
✅ Front end workflow choices; 

Their effect on Aegir Platform builds; Motivation for extending Aegir; demo the
fun bit 😳; setup gotchas : 10-15 mins
✅ Extending Aegir with Fabric tasks: 5 mins
✅ Automating the Fabric tasks with Jenkins:  2 mins
✅ Hooking Git into the automation: 2 mins
✅ Seeing the results in Aegir: 2mins
✅ Wrap up; GitHub and tutorial pointers: 2 mins
It’s better in the future
"We're descending toward Hill Valley, California, at
4:29 pm, on Wednesday, October 21st, 2015."
Doc Brown and Marty McFly: 

Back to the Future
Why Aegir?
• “Aegir creates the web server's site configuration files,
the site's database, runs the Drupal installation
process and reloads the relevant services, all
automatically.”

http://aegir.readthedocs.org/en/3.x/
• Useful for managing even a few Drupal sites
• Imposes a discipline for managing

development→staging→live sites
Typical Aegir Site
Operations to manage Site
Operations queued
Typical Aegir Site
Per site:. Of note:
aliases; platform; packages; tasks / operations
Drupal platforms
The Development Triangle
live staging
dev
Aegir
Server
Dev
m/c
git push dev
Case: update contrib
Iterate dev; Distribute dev
live staging
dev
Development complete
Pushing tag on develop branch:
Creates a new platform and migrates staging site to it.
live staging
dev
git tag <tag>
“ready to stage” ✔
git push —-tags
Aegir migrate
Staging platform replaces live platform

drush @live_site provision-migrate @new_platform
live staging
dev
tests ✔
Front-end workflow
Front-end workflow
• sass; compass (Stylus; postcss; etc.)
• coffeescript
• browserSync
Theming can be more fun and more productive💥
Introduces extra build steps to be automated 😱
Let’s see a demo
The workflow experience has to be worth the pain of setting it all up!
Post demo
A few details of note in workflow setup
Full details at:
https://github.com/iainhouston/aegir-deploys
https://iainhouston.com/blog/automated-drupal-builds-with-fabric-git-and-aegir.html
browserSync gotchas (D7)
• Don’t use Drupal browsersync contrib

Do use browserSync.init({proxy: <test_site_name>})
• Do use Drupal link_css contrib

Overrides @import during development

linked css for browserSync to inject new css
Workflow Consequences
• Aegir builds new platforms with drush make
• We keep source under version control (sass, coffee)
• We don’t version compiled artefacts (css, js)
• So …

We need to add compile steps after drush make
Workflow Consequences
• We use Fabric to extend Aegir
• Write task to run compilations
• Write tasks to emulate Aegir front-end steps

with drush provision
• You can fork fabfile.py

https://github.com/iainhouston/aegir-deploys
Extending Aegir with Fabric tasks
Snippet 1 - config
This file in your “build” repo
npm gotchas
• Enforce build-local versions of sass and coffee compilers 

npm run sass 

npm run coffee
• node_modules/**/*.info files can be included in drupal
cache rebuild → WSOD

(addressed in drupal core now / soon)
gulp gotchas
Compilation errors
• Should fail automated build
• Shouldn’t interrupt devel workflow
Extending Aegir with Fabric tasks
Snippet 2 - compile css; js
This fabfile.py file in
https://github.com/<your_fork>/aegir-deploys
Extending Aegir with Fabric tasks
Snippet 3 - emulates Aegir migrate
This fabfile.py file in
https://github.com/<your_fork>/aegir-deploys
Hooking Git into the
automation
Writing the Git post-receive hook
git@<git_server>:<my_build_repo>.git/post-receive
Triggering the build
Seeing the results in Aegir
drush provision tasks shown in Aegir UI
Use UI to migrate live site to new platform
OR push new tag on master branch
Seeing the results in Aegir
drush provision tasks shown in Aegir UI
Use UI to migrate live site to new platform
OR push new tag on master branch
Wrap up.
GitHub and tutorial pointers
https://github.com/iainhouston/aegir-deploys
https://iainhouston.com
https://iainhouston.com/blog/automated-drupal-builds-with-fabric-git-and-aegir.html
fin

More Related Content

What's hot

Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoin
William Chong
 
CI CD with Docker and Kubernetes
CI CD with Docker and Kubernetes CI CD with Docker and Kubernetes
CI CD with Docker and Kubernetes
Nilesh Gule
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
viniciusban
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
Knoldus Inc.
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
Stefan Stölzle
 
DevOps with GitHub Actions
DevOps with GitHub ActionsDevOps with GitHub Actions
DevOps with GitHub Actions
Nilesh Gule
 
Concourse webhook
Concourse webhookConcourse webhook
Concourse webhook
Gwenn Etourneau
 
Зоопарк React-у
Зоопарк React-уЗоопарк React-у
Зоопарк React-у
Stfalcon Meetups
 
GitHub Actions - Melbourne UG
GitHub Actions - Melbourne UGGitHub Actions - Melbourne UG
GitHub Actions - Melbourne UG
Natraj Yegnaraman
 
Concourse updates
Concourse updatesConcourse updates
Concourse updates
Gwenn Etourneau
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
Oleksii Holub
 
Concourse and Database
Concourse and DatabaseConcourse and Database
Concourse and Database
Gwenn Etourneau
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub Actions
Casey Lee
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins X
Faithlin Paul
 
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Ted Won
 
ConcourseCI love Minio
ConcourseCI love MinioConcourseCI love Minio
ConcourseCI love Minio
Gwenn Etourneau
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLab
Pivorak MeetUp
 
Gab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelierGab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelier
Vincent Thavonekham-Pro
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
ColCh
 
Serving Pull Requests with Jenkins
Serving Pull Requests with JenkinsServing Pull Requests with Jenkins
Serving Pull Requests with Jenkins
Seth Goings
 

What's hot (20)

Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoin
 
CI CD with Docker and Kubernetes
CI CD with Docker and Kubernetes CI CD with Docker and Kubernetes
CI CD with Docker and Kubernetes
 
Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 
GitHub Actions with Node.js
GitHub Actions with Node.jsGitHub Actions with Node.js
GitHub Actions with Node.js
 
DevOps with GitHub Actions
DevOps with GitHub ActionsDevOps with GitHub Actions
DevOps with GitHub Actions
 
Concourse webhook
Concourse webhookConcourse webhook
Concourse webhook
 
Зоопарк React-у
Зоопарк React-уЗоопарк React-у
Зоопарк React-у
 
GitHub Actions - Melbourne UG
GitHub Actions - Melbourne UGGitHub Actions - Melbourne UG
GitHub Actions - Melbourne UG
 
Concourse updates
Concourse updatesConcourse updates
Concourse updates
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
 
Concourse and Database
Concourse and DatabaseConcourse and Database
Concourse and Database
 
Container based CI/CD on GitHub Actions
Container based CI/CD on GitHub ActionsContainer based CI/CD on GitHub Actions
Container based CI/CD on GitHub Actions
 
Introduction to Jenkins X
Introduction to Jenkins XIntroduction to Jenkins X
Introduction to Jenkins X
 
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
Jenkins X Hands-on - automated CI/CD solution for cloud native applications o...
 
ConcourseCI love Minio
ConcourseCI love MinioConcourseCI love Minio
ConcourseCI love Minio
 
Why you can't ignore GitLab
Why you can't ignore GitLabWhy you can't ignore GitLab
Why you can't ignore GitLab
 
Gab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelierGab2015 sam p_danielt_emilienp_legacycodeatelier
Gab2015 sam p_danielt_emilienp_legacycodeatelier
 
Using GitLab CI
Using GitLab CIUsing GitLab CI
Using GitLab CI
 
Serving Pull Requests with Jenkins
Serving Pull Requests with JenkinsServing Pull Requests with Jenkins
Serving Pull Requests with Jenkins
 

Similar to Automating Aegir Platform builds with Git; Fabric; and Drush

[English][Test Girls] Zero to Hero: Start Test automation with Cypress
[English][Test Girls] Zero to Hero: Start Test automation with Cypress[English][Test Girls] Zero to Hero: Start Test automation with Cypress
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
Test Girls
 
The Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session IThe Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session I
Oded Sagir
 
Unlocking the Cloud operating model with GitHub Actions
Unlocking the Cloud operating model with GitHub ActionsUnlocking the Cloud operating model with GitHub Actions
Unlocking the Cloud operating model with GitHub Actions
Mitchell Pronschinske
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
Mandi Walls
 
Gradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build timesGradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build times
Rene Gröschke
 
DevOps Practices @Pipedrive
DevOps Practices @PipedriveDevOps Practices @Pipedrive
DevOps Practices @Pipedrive
Renno Reinurm
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Michael Lihs
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
sparkfabrik
 
Grunt Continuous Development of the Front End Tier
Grunt Continuous Development of the Front End TierGrunt Continuous Development of the Front End Tier
Grunt Continuous Development of the Front End Tier
Erick Brito
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
David Amend
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
Juraj Hantak
 
Gretty: Managing Web Containers with Gradle
Gretty: Managing Web Containers with GradleGretty: Managing Web Containers with Gradle
Gretty: Managing Web Containers with Gradle
Andrey Hihlovsky
 
Set up a Development Environment in 5 Minutes
Set up a Development Environment in 5 MinutesSet up a Development Environment in 5 Minutes
Set up a Development Environment in 5 Minutes
Akamai Developers & Admins
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
Cloud Native NoVA
 
Coding GRIN GLOBAL Wizards
Coding GRIN GLOBAL WizardsCoding GRIN GLOBAL Wizards
Coding GRIN GLOBAL Wizards
Edwin Rojas
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
Back to the 90s' - Revenge of the static website
Back to the 90s' - Revenge of the static websiteBack to the 90s' - Revenge of the static website
Back to the 90s' - Revenge of the static website
Yves Goeleven
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and Github
Wycliff1
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
Giacomo Vacca
 
Ci/CD - Stop wasting time, Automate your deployments
Ci/CD  - Stop wasting time, Automate your deploymentsCi/CD  - Stop wasting time, Automate your deployments
Ci/CD - Stop wasting time, Automate your deployments
Jerry Jalava
 

Similar to Automating Aegir Platform builds with Git; Fabric; and Drush (20)

[English][Test Girls] Zero to Hero: Start Test automation with Cypress
[English][Test Girls] Zero to Hero: Start Test automation with Cypress[English][Test Girls] Zero to Hero: Start Test automation with Cypress
[English][Test Girls] Zero to Hero: Start Test automation with Cypress
 
The Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session IThe Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session I
 
Unlocking the Cloud operating model with GitHub Actions
Unlocking the Cloud operating model with GitHub ActionsUnlocking the Cloud operating model with GitHub Actions
Unlocking the Cloud operating model with GitHub Actions
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
 
Gradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build timesGradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build times
 
DevOps Practices @Pipedrive
DevOps Practices @PipedriveDevOps Practices @Pipedrive
DevOps Practices @Pipedrive
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
 
Grunt Continuous Development of the Front End Tier
Grunt Continuous Development of the Front End TierGrunt Continuous Development of the Front End Tier
Grunt Continuous Development of the Front End Tier
 
Grunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous IntegrationGrunt.js and Yeoman, Continous Integration
Grunt.js and Yeoman, Continous Integration
 
Gitlab ci, cncf.sk
Gitlab ci, cncf.skGitlab ci, cncf.sk
Gitlab ci, cncf.sk
 
Gretty: Managing Web Containers with Gradle
Gretty: Managing Web Containers with GradleGretty: Managing Web Containers with Gradle
Gretty: Managing Web Containers with Gradle
 
Set up a Development Environment in 5 Minutes
Set up a Development Environment in 5 MinutesSet up a Development Environment in 5 Minutes
Set up a Development Environment in 5 Minutes
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
Coding GRIN GLOBAL Wizards
Coding GRIN GLOBAL WizardsCoding GRIN GLOBAL Wizards
Coding GRIN GLOBAL Wizards
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Back to the 90s' - Revenge of the static website
Back to the 90s' - Revenge of the static websiteBack to the 90s' - Revenge of the static website
Back to the 90s' - Revenge of the static website
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and Github
 
Docker and Puppet for Continuous Integration
Docker and Puppet for Continuous IntegrationDocker and Puppet for Continuous Integration
Docker and Puppet for Continuous Integration
 
Ci/CD - Stop wasting time, Automate your deployments
Ci/CD  - Stop wasting time, Automate your deploymentsCi/CD  - Stop wasting time, Automate your deployments
Ci/CD - Stop wasting time, Automate your deployments
 

Recently uploaded

E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
devvsandy
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
Ayan Halder
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
XfilesPro
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 

Recently uploaded (20)

E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
 
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
Everything You Need to Know About X-Sign: The eSign Functionality of XfilesPr...
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 

Automating Aegir Platform builds with Git; Fabric; and Drush

  • 2. It’ll be about half an hour ✅ Motivation for using Aegir / Drush Provision; 
 dev-staging-live platform triangle:  5-7 mins ✅ Front end workflow choices; 
 Their effect on Aegir Platform builds; Motivation for extending Aegir; demo the fun bit 😳; setup gotchas : 10-15 mins ✅ Extending Aegir with Fabric tasks: 5 mins ✅ Automating the Fabric tasks with Jenkins:  2 mins ✅ Hooking Git into the automation: 2 mins ✅ Seeing the results in Aegir: 2mins ✅ Wrap up; GitHub and tutorial pointers: 2 mins
  • 3. It’s better in the future "We're descending toward Hill Valley, California, at 4:29 pm, on Wednesday, October 21st, 2015." Doc Brown and Marty McFly: 
 Back to the Future
  • 4. Why Aegir? • “Aegir creates the web server's site configuration files, the site's database, runs the Drupal installation process and reloads the relevant services, all automatically.”
 http://aegir.readthedocs.org/en/3.x/ • Useful for managing even a few Drupal sites • Imposes a discipline for managing
 development→staging→live sites
  • 5. Typical Aegir Site Operations to manage Site Operations queued
  • 6. Typical Aegir Site Per site:. Of note: aliases; platform; packages; tasks / operations
  • 7. Drupal platforms The Development Triangle live staging dev Aegir Server Dev m/c
  • 8. git push dev Case: update contrib Iterate dev; Distribute dev live staging dev
  • 9. Development complete Pushing tag on develop branch: Creates a new platform and migrates staging site to it. live staging dev git tag <tag> “ready to stage” ✔ git push —-tags
  • 10. Aegir migrate Staging platform replaces live platform drush @live_site provision-migrate @new_platform live staging dev tests ✔
  • 12. Front-end workflow • sass; compass (Stylus; postcss; etc.) • coffeescript • browserSync Theming can be more fun and more productive💥 Introduces extra build steps to be automated 😱
  • 13. Let’s see a demo The workflow experience has to be worth the pain of setting it all up!
  • 14. Post demo A few details of note in workflow setup Full details at: https://github.com/iainhouston/aegir-deploys https://iainhouston.com/blog/automated-drupal-builds-with-fabric-git-and-aegir.html
  • 15. browserSync gotchas (D7) • Don’t use Drupal browsersync contrib
 Do use browserSync.init({proxy: <test_site_name>}) • Do use Drupal link_css contrib
 Overrides @import during development
 linked css for browserSync to inject new css
  • 16. Workflow Consequences • Aegir builds new platforms with drush make • We keep source under version control (sass, coffee) • We don’t version compiled artefacts (css, js) • So …
 We need to add compile steps after drush make
  • 17. Workflow Consequences • We use Fabric to extend Aegir • Write task to run compilations • Write tasks to emulate Aegir front-end steps
 with drush provision • You can fork fabfile.py
 https://github.com/iainhouston/aegir-deploys
  • 18. Extending Aegir with Fabric tasks Snippet 1 - config This file in your “build” repo
  • 19. npm gotchas • Enforce build-local versions of sass and coffee compilers 
 npm run sass 
 npm run coffee • node_modules/**/*.info files can be included in drupal cache rebuild → WSOD
 (addressed in drupal core now / soon)
  • 20. gulp gotchas Compilation errors • Should fail automated build • Shouldn’t interrupt devel workflow
  • 21. Extending Aegir with Fabric tasks Snippet 2 - compile css; js This fabfile.py file in https://github.com/<your_fork>/aegir-deploys
  • 22. Extending Aegir with Fabric tasks Snippet 3 - emulates Aegir migrate This fabfile.py file in https://github.com/<your_fork>/aegir-deploys
  • 23. Hooking Git into the automation Writing the Git post-receive hook
  • 26. Seeing the results in Aegir drush provision tasks shown in Aegir UI Use UI to migrate live site to new platform OR push new tag on master branch
  • 27. Seeing the results in Aegir drush provision tasks shown in Aegir UI Use UI to migrate live site to new platform OR push new tag on master branch
  • 28. Wrap up. GitHub and tutorial pointers https://github.com/iainhouston/aegir-deploys https://iainhouston.com https://iainhouston.com/blog/automated-drupal-builds-with-fabric-git-and-aegir.html
  • 29. fin