Build & Launch Tools (BLT) Automating best practices for enterprise sites

Similar documents
Configuration Management

Drupal & Composer Matthew Grasmick & Jeff Geerling

Composer and Drupal. CIDUG Meeting December 13, 2018 John Rearick

Cheaper by the Dozens

Composer for Absolute Beginners. Alison Jo McCauley Drupal Developer, Cornell University

Drupal Command Line Instructions Windows 7 List All Files >>>CLICK HERE<<<

Improving the Magento 2 Developer Experience

More Dev / Less Ops. Sean Dietrich DrupalCorn '18

CONFIGURATION AS DEPENDENCY. Managing Drupal 8 Configuration with Git and Composer

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Advanced Configuration Management with Config Split et al. Fabian Bircher

@EvanMHerman Introduction to Workflow Automation

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

Software Development I

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

AVOIDING THE GIT OF DESPAIR

Drupal Command Line Instructions Windows 7 List All >>>CLICK HERE<<<

Drupal Command Line Instructions Windows 7 List All Users >>>CLICK HERE<<<

Con guration Management

Make the Leap - The Joy of Drupal 8

Continuous Delivery of your infrastructure. Christophe

Software. Full Stack Web Development Intensive, Fall Lecture Topics. Class Sessions. Grading

Building and Deploying a Saas platform On Prem

Composer Best Practices Nils Private Packagist

Aspirin as a Service: Using the Cloud to Cure Security Headaches

CS314 Software Engineering Configuration Management

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY

Review Version Control Concepts

Version Control with Git ME 461 Fall 2018

Understanding the Dark Side

Snapshot Best Practices: Continuous Integration

Drupal Command Line Instructions Windows 7 List >>>CLICK HERE<<<

Branching and Merging

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017

For Starters: Creating CU Bear, a Drupal 8 Starter Kit

Technical Comparison Sheet: ez Platform Cloud vs Other Hosting Approaches

Continuous Integration and Delivery with Spinnaker

Untangling your code: a git workflow for Noobs

Continuous Delivery the hard way with Kubernetes. Luke Marsden, Developer

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

Effizientere WordPress-Plugin-Entwicklung mit Softwaretests. Martin Schütte

DevOps Course Content

Continuous integration & continuous delivery. COSC345 Software Engineering

THE GREAT CONSOLIDATION: ENTERTAINMENT WEEKLY MIGRATION CASE STUDY JON PECK, MATT GRILL, PRESTON SO

A CD Framework For Data Pipelines. Yaniv

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

What I ll be talking about. About me & bol.com The CI/CD bol.com Current setup. The future in the cloud

Pipeline as Code for your IAC. Kris

Version control CSE 403

Drupal Command Line Instructions Windows 7 Networking >>>CLICK HERE<<<

CONTINUOUS DELIVERY IN THE ORACLE CLOUD

SCALING DRUPAL TO THE CLOUD WITH DOCKER AND AWS

TM DevOps Use Case TechMinfy All Rights Reserved

How to version control like a pro: a roadmap to your reproducible & collaborative research

Documentation External Synchronization FirstSpirit

Start Building CI/CD as Code The 7 Lessons Learnt from Deploying and Managing 100s of CI Environments

OpenStack Enabling DevOps Shannon McFarland CCIE #5245 Distinguished DEVNET-1104

ContainerOps - DevOps Orchestration. Quanyi Ma

Configuration Management in Drupal 8

GIT TO DA REPO! VERSION CONTROL, GITLAB, AND ISU

Continuous Delivery at Liferay A fast lane for your software updates. Rubén Eduardo

Magento Commerce Cloud. Implementing a Project Effectively

Love Your Load Times. Trim seconds off page loads, secure private files and make the most of your digital assets

Automatic MySQL Schema Management with Skeema. Evan Elias Percona Live, April 2017

DrupalGovcon July 20th, 2016

Azure Day Application Development. Randy Pagels Sr. Developer Technology Specialist US DX Developer Tools - Central Region

COMPOSER IN DRUPAL WORLD

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Index. Chaminda Chandrasekara 2017 C. Chandrasekara, Beginning Build and Release Management with TFS 2017 and VSTS, DOI /

Drupal Command Line Instructions Windows 7 List Files >>>CLICK HERE<<<

Behat Drupal Integration Documentation

Strengthen and Scale security using DevSecOps

How to git with proper etiquette

Docker at Lyft Speeding up development Matthew #dockercon

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

FREELANCE WORDPRESS DEVELOPER

Full Stack boot camp

Agile CI/CD with Jenkins and/at ZeroStack. Kiran Bondalapati CTO, Co-Founder & Jenkins Admin ZeroStack, Inc. (

Lab 01 How to Survive & Introduction to Git. Web Programming DataLab, CS, NTHU

FROM VSTS TO AZURE DEVOPS

Accelerate OpenStack* Together. * OpenStack is a registered trademark of the OpenStack Foundation

Version Control for PL/SQL

platform Development Process Optimization For Drupal centric projects

Building a reference IoT product with Zephyr. Ricardo Salveti Michael Scott Tyler Baker

1. Which of these Git client commands creates a copy of the repository and a working directory in the client s workspace. (Choose one.

Your Engineering Excellency

Code Review for DevOps

Submitting your Work using GIT

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

Python Unit Testing and CI Workflow. Tim Scott, Python Meetup 11/07/17

Software Development. Using GIT. Pr. Olivier Gruber. Laboratoire d'informatique de Grenoble Université de Grenoble-Alpes

Version control CSE 403

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

Designing the Home Page and Creating Additional Pages

1. I NEED TO HAVE MULTIPLE VERSIONS OF VISUAL STUDIO INSTALLED IF I M MAINTAINING APPLICATIONS THAT RUN ON MORE THAN ONE VERSION OF THE.

Tools. SWE 432, Fall Design and Implementation of Software for the Web

Transcription:

Build & Launch Tools (BLT) Automating best practices for enterprise sites

Who are you? Matthew Grasmick @grasmash on Drupal.org, twitter, etc. Acquia Professional Services, 4yrs Drupalist, 9yrs Maintainer of BLT

Let s start with the problem that we re solving.

FTP

This was good It was fast and simple.

But it had problems! We d overwrite each other s files We couldn t track or revert changes It wasn t redundant or resilient

FTP

This was better But also a bit more complicated.

Meanwhile... Our backend tools were evolving

This was better But also a bit more complicated.

Meanwhile... Our front end tools were changing too

This was better But also a bit more complicated.

Meanwhile... We starting getting great testing tools

This was better But also a bit more complicated.

Meanwhile... Our local environments were changing

This was better But also a bit more complicated.

Meanwhile... The PHP community continued to evolve

These are all great tools! That we run locally.

Teams have many machines And continuous integration requires even more machines

At some point it became very complex And painful.

This is the problem We re trying to solve.

Real world consequences 1. You don t use these tools a. You don t have a build process to manage dependencies b. You don t use automated testing c. You don t have a CI process 2. You spend a long time orchestrating these tools a. You painstakingly create your own build process, for every project b. You configure your own CI setup, for every project c. You maintain it constantly, for every project

There has to be a way... To approach this more consistently and efficiently.

Build & Launch Tools BLT

Package, integrate, automate A stack of Drupal development tools.

What s in the box?

BLT high-level features: Open source Standardized template for Drupal 8 sites Set of tools for building, testing, deploying Commands for automating usage of those tools

Template

What is the template? Pre-defined structure for files and directories Boiler plate code and configuration

Opinionated placement of... Settings files Exported configuration Modules, themes, profiles, etc. Drush commands Patches

Nothing earth-shattering.

Actually, it s kind of a big deal.

Why is it helpful? Faster on-boarding Better collaboration Simpler hand-offs

Tools

We re all using the same things The same tools, the same versions Testing tools PHP Packages Modules Preconfigured to work together

Also a big deal.

What makes this powerful?

Automation!

Make complex things simple Create an entire project Boot (& create) a VM Validate all of your code Test you application Sync environments Deploy to cloud in one command

Seeing is believing.

Warning: we re going CLI.

Creating a new project

Use composer and then wait a bit.. $ composer create-project acquia/blt-project [project-name] --no-interaction

You have a complete project!

Install blt alias and then you can use blt $ composer blt-alias

Setup LAMP stack Dev Desktop, DrupalVM, MAMP, Native LAMP, etc. $ blt vm

You have a virtual machine!

Let s do the other [local] stuff.

Do all the [local] things $ blt setup build dependencies install drupal import configuration set file permissions

You have a fully functional Drupal site!

That s a lot of work you didn t have to do.

Login to Drupal because it s ready to go $ cd docroot && drush uli

You ve only run 4 commands.

Automated testing

Don t freak out.

We provide the tools and example tests Testing Behat PHPUnit Validation PHPCS Linting (PHP/Twig)

Validate code phpcs, lint, composer The right standards, on the right extensions, in the right dirs $ blt validate

Run them all! Behat, PHPUnit all rolled up. $ blt tests

Let s stop and appreciate this.

2016 Acquia Inc. Confidential and Proprietary

Let s talk about workflow Not just local development

Develop, Build & Test Review Build & Test Deploy Local Machine E.g., GitHub Continuous Integration Cloud BLT BLT

With this workflow... Before merging, you: Test your changes automatically Review your changes on GitHub Preview your changes on a dedicated environment

Gives the confidence To merge a deploy code

Adding Continuous Integration Acquia Cloud CD and Travis CI out-of-the-box.

We provide CI config You don t need to figure it out.

Acquia Cloud CD pipelines acquia-pipelines.yml $ blt ci:pipelines:init

You now have acquia-pipelines.yml pre-configured.

Travis CI.travis.yml $ blt ci:travis:init

You now have.travis.yml pre-configured.

Push $ git commit -a $ git push origin to the Cloud

CI + BLT will build & test your site Triggered by a push or pull request

Your tests run before merging so you don t break things.

After merge, code deploys all by itself.

Develop, Build & Test Review Build & Test Deploy Local Machine E.g., GitHub Continuous Integration Cloud BLT BLT

Deploying to the Cloud Deployment is special.

Only deploy artifacts! Wait what? What s an artifact?

Things you need for!= development process <> Things you need for production website

Development Artifact

Development (SASS) #navbar { width: 80%; border: solid red 1px; float: left; padding: 5px; ul { list-style-type: none; } li { float: right; a{ font-weight: bold; color: red; } } } Artifact (CSS) #navbar { width: 80%; border: solid red 1px; float: left; padding: 5px; } #navbar ul { list-style-type: none; } #navbar ul li { float: right; } #navbar ul li a { font-weight: bold; color: red; }

Development.drush-use.git/.gitignore.idea/.travis.yml.vagrant/ README.md Vagrantfile box/ build/ composer.json composer.lock config/ docroot/ drush/ drush.wrapper* example.project.local.yml factory-hooks/ hooks/ patches/ project.local.yml project.yml readme/ reports/ scripts/ tests/ vendor/ Artifact.gitignore composer.json composer.lock config/ docroot/ drush/ factory-hooks/ hooks/ scripts/ vendor/

Working Repo Artifact Push Develop Build Artifact & Push Review Build & Test

Why are we doing this? Lots of good reasons.

Improves process, improves product. Maintainability Performance Prevents hacking contrib & core (not committed). Deployments are scripted and repeatable (update hooks are required). Removes unnecessary tools and libraries. Security Artifacts are sanitized.

Show me. Manual deployment is good for debugging.

deploying manually from your local machine $ blt deploy

What just happened? A deployment artifact was created at your/project/path/deploy Files were copied. Front end assets were compiled. Prod dependencies were built. Directory was sanitized. Everything was committed. The deployment artifact was: Committed to the <original-branch>-build branch. Pushed to ${project.git.remotes}

Recap

BLT is a box with: Standardized template for Drupal 8 sites Set of tools for building, testing, deploying Commands for automating usage of those tools

Make complex things simple Create an entire project Boot (& create) a VM Validate all of your code Test your application Deploy to cloud in one command

Develop, Build & Test Review Build & Test Deploy Local Machine E.g., GitHub Continuous Integration Cloud BLT BLT

github.com/acquia/blt Thanks! Questions? Reminder: Sprints are tomorrow! @grasmash /2oa9j1w bit.ly