SlideShare a Scribd company logo
Lightweight continuous delivery
for small schools
Charles Fulton (Lafayette College)
Kevin Wiliarty (Hampshire College)
#ne12
...or, “Script and version all the things!”
Who we are
● Charles Fulton (@mackensen), Senior Web Applications Developer, Lafayette
College
● Kevin Wiliarty, Senior Web Programmer, Hampshire College
What we’re doing here
● A free and open source self-hosted continuous delivery stack
● We’re going to give you all the nouns
● Yes, all of them
Continuous delivery
Continuous Delivery is a software development discipline where you build software in
such a way that the software can be released to production at any time.
You achieve continuous delivery by continuously integrating the software done by the
development team, building executables, and running automated tests on those
executables to detect problems.
-- Martin Fowler
http://martinfowler.com/bliki/ContinuousDelivery.html
Challenges
Version control
Collaboration
Quality assurance
Integration
Delivery
Solutions
Git
GitLab
Behat
Docker
Capistrano
Version control
Benefits of using git
http://guides.beanstalkapp.com/version-control/intro-to-version-control.html
● It helps you master complexity
● It permits you to disperse development
● It’s both free and open source
● It’s inevitable
Complexity
http://gource.io/
● Track changes, but for an entire project
● Visualize the progression of your project over time
● Maintain versioned branches
● Manage local customizations
● Have the confidence to make major changes
Dispersal
● No “central” repository with git
● Cheap branching and merging
● Concurrent development across teams
Publish
WorkDev #1
Dev #2
http://marklodato.github.io/visual-git-guide/index-en.html
Free and open source
● No artificial limitations
● Total ownership of the tools and the resulting product
http://choosealicense.com/
Inevitability
“In 2010, SVN was still the top version control system, used in 60% of software projects,
while Git was used in just 11%. But today, Git has nearly matched SVN’s market share.”
-- Nadia Eghbal
https://medium.com/@nayafia/we-re-in-a-brave-new-post-open-source-world-56ef46d152a3
Collaboration
Social coding: Github
● Store
● Distribute
● Expose
● Report
● Follow
● Document
● Visualize
● Test
● Fork
● Contribute
Fork and Contribute
Institutional coding: GitLab
● Identity management
● Institutional continuity
● Audience control
● Price
● Openness and freedom
https://about.gitlab.com/
Quality assurance
Testing your assumptions
● Manual testing is time-intensive and boring every time you do it
● Automated testing is time-intensive and boring once, and then never again
● Manual testing makes you hesitant to make major changes
● Automated testing gives you the confidence to destroy everything at once
https://docs.moodle.org/dev/Testing
Behat
● Automated
● Behavior-driven
● User stories
http://docs.behat.org/en/v3.0/
Storytelling
http://iansommerville.com/systems-software-and-technology/giving-up-on-test-first-development/
Telling your code a
story before bed
Look, Ma, no hands!
http://www.seleniumhq.org/
Look, Ma, no head!
http://tenon.io/
● Computers don't need to look at a
browser
● Headless testing can expose
accessibility issues
Integration
Continuous integration, continuously
● Establish a sane process
● Test every commit
● Stay out of the gears
Look, Ma, no nothin'!
Containers: Docker
● Software containers
● Scriptable
● Available on demand
● Disposable
● Repeatable
https://medium.freecodecamp.com/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b
.gitlab-ci.yml
● GitLab launches Docker containers
● Installs latest version of project
● Runs your tests
● Reports your results
https://about.gitlab.com/gitlab-ci/
Test results
Fork, Test, Contribute, Test
Delivery
Last-mile problem
● All this talk of projects, it’s exhausting
● How do I make my project useful?
● Manual solution: climb pole maintain clone of
repository on production server
Downsides to climbing utility pole
● Introduces scope for error
● Requires “physical” access to the server
● Maintains the full history of the project on the server
A pipeline, not a utility pole
1. Commit your change
2. Tests pass
3. ???
4. Profit!
Capistrano
● Ruby application
● Manages the deployed state of your project, in addition to code
● Deployments can be executed locally, or from another system
http://capistranorb.com/
Extended metaphor about the American cliff swallow
● Swallows always return to Capistrano...something something...delivery!
● Swallows may or may not take trains to Capistrano.
Capistrano in a container
● Provision one more docker container with ruby and SSH
● Add a job to .gitlab-ci.yml to run the deploy task in a ruby container
http://sites.lafayette.edu/fultonc/2015/11/12/quick-note-on-agent-forwarding-with-docker/
Script and version all the things!
● Everything is in git and attached to your project:
○ Code changes
○ Acceptance tests
○ Testing environment configuration
○ Deployment configuration
Building your pipeline
1. Commit my changes in git
2. Push them to GitLab
3. GitLab spins up a Docker container to run QA tests
4. The tests pass
5. GitLab spins up another Docker container to deploy the project
6. Profit!
Questions?
Image credits
● Git logo by Jason Long [CC BY 3.0], via Wikimedia Commons
● GitHub logo https://github.com/logos
● GitHub octocat https://github.com/logos
● GitLab wordmark https://about.gitlab.com/press/
● Docker logo https://www.docker.com/brand-guidelines
● User icon (modified) by WMF User Experience Design Group [MIT License], via
Wikimedia Commons
● Man on telephone pole by Unknown or not provided (U.S. National Archives and
Records Administration) [Public domain], via Wikimedia Commons
● Second Los Angeles Aqueduct Cascades, Sylmar by Los Angeles [CC BY-SA 3.0]
via Wikimedia Commons
● Cliff swallow in flight by Don DeBold, [CC BY 2.0], via Flickr

More Related Content

PDF
Releaseflow: a healthy build and deploy process
PDF
vodQA Pune (2019) - Jenkins pipeline As code
PDF
[WroclawJUG] Continuous Delivery in OSS using Shipkit
PPT
icebreakerwithdevops-150218112943-conversion-gate02
PDF
Developing with versioning and CI/CD
PDF
TuleapCon 2019. DevOps in Tuleap
PPTX
Gitlab CI/CD
PPTX
Docs or it didn’t happen
Releaseflow: a healthy build and deploy process
vodQA Pune (2019) - Jenkins pipeline As code
[WroclawJUG] Continuous Delivery in OSS using Shipkit
icebreakerwithdevops-150218112943-conversion-gate02
Developing with versioning and CI/CD
TuleapCon 2019. DevOps in Tuleap
Gitlab CI/CD
Docs or it didn’t happen

What's hot (20)

PDF
Continuous Delivery in OSS using Shipkit.org
PDF
Git essentials
PPTX
The Automated Monolith
PDF
Continuous Delivery at Snyk
PDF
Continuous Integration for Spark Apps by Sean McIntyre
ODP
Product development and tools
ODP
Getting your project_started
PDF
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
PDF
Software Delivery in 2016 - A Continuous Delivery Approach
PDF
Behaviour Testing and Continuous Integration with Drupal
PDF
Jenkins Declarative Pipelines 101
PPTX
Fundamentals of DevOps and CI/CD
PDF
TuleapCon 2019. Tuleap explained by the users
PDF
Continuous delivery journey at LesFurets.com
PDF
EFL QA: Where Are We and Where Should We Go?
PDF
SF JUG - Gradle Lint
PPTX
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
PDF
Agnostic Continuous Delivery
PDF
PUG Romagna - Pipeline + Deployer PHP
PDF
Continuous integration & Continuous Delivery @DeVz
Continuous Delivery in OSS using Shipkit.org
Git essentials
The Automated Monolith
Continuous Delivery at Snyk
Continuous Integration for Spark Apps by Sean McIntyre
Product development and tools
Getting your project_started
Increase the Velocity of Your Software Releases Using GitHub and DeployHub
Software Delivery in 2016 - A Continuous Delivery Approach
Behaviour Testing and Continuous Integration with Drupal
Jenkins Declarative Pipelines 101
Fundamentals of DevOps and CI/CD
TuleapCon 2019. Tuleap explained by the users
Continuous delivery journey at LesFurets.com
EFL QA: Where Are We and Where Should We Go?
SF JUG - Gradle Lint
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Agnostic Continuous Delivery
PUG Romagna - Pipeline + Deployer PHP
Continuous integration & Continuous Delivery @DeVz
Ad

Viewers also liked (6)

PDF
Continuous Integration: Improving Quality in Moodle
PDF
Testing Moodle functionality automatically
PDF
Scaling Open edX with Kubernetes
PDF
Jenkins CI
PPTX
Getting started with Jenkins
PPTX
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Continuous Integration: Improving Quality in Moodle
Testing Moodle functionality automatically
Scaling Open edX with Kubernetes
Jenkins CI
Getting started with Jenkins
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Ad

Similar to Lightweight continuous delivery for small schools (20)

PDF
Embracing Disruption: Adding a Bit of Chaos to Help You Grow
PDF
DevOps-Ebook
PDF
CICD_BestPractices.pdf
PPTX
Continuous delivery applied (RJUG)
PPTX
DevQAOps - Surviving in a DevOps World
PDF
Journey toward3rdplatform
PDF
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
PPTX
Continous integration and delivery for single page applications
PDF
jenkins.pdf
PDF
Jenkins_1679702972.pdf
PDF
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
PDF
DevOps & DevEx
PDF
KubeCon EU 2022 Istio, Flux & Flagger.pdf
PDF
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
PDF
Continuous Deployment of your Application @jSession#5
PPT
Continuous deployment steve povilaitis
PDF
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
PPTX
Continuous delivery applied (DC CI User Group)
PDF
Agile Secure Cloud Application Development Management
PPT
Continuous Delivery Agiles 2014 Medellin
Embracing Disruption: Adding a Bit of Chaos to Help You Grow
DevOps-Ebook
CICD_BestPractices.pdf
Continuous delivery applied (RJUG)
DevQAOps - Surviving in a DevOps World
Journey toward3rdplatform
Weave GitOps 2022.09 Release: A Fast & Reliable Path to Production with Progr...
Continous integration and delivery for single page applications
jenkins.pdf
Jenkins_1679702972.pdf
DevOps Continuous Integration & Delivery - A Whitepaper by RapidValue
DevOps & DevEx
KubeCon EU 2022 Istio, Flux & Flagger.pdf
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
Continuous Deployment of your Application @jSession#5
Continuous deployment steve povilaitis
Cloud-Native Fundamentals: Accelerating Development with Continuous Integration
Continuous delivery applied (DC CI User Group)
Agile Secure Cloud Application Development Management
Continuous Delivery Agiles 2014 Medellin

Recently uploaded (20)

PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Encapsulation theory and applications.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
A Presentation on Artificial Intelligence
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Cloud computing and distributed systems.
Diabetes mellitus diagnosis method based random forest with bat algorithm
Encapsulation_ Review paper, used for researhc scholars
Review of recent advances in non-invasive hemoglobin estimation
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Mobile App Security Testing_ A Comprehensive Guide.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Reach Out and Touch Someone: Haptics and Empathic Computing
Understanding_Digital_Forensics_Presentation.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Advanced methodologies resolving dimensionality complications for autism neur...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Chapter 3 Spatial Domain Image Processing.pdf
Encapsulation theory and applications.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
A Presentation on Artificial Intelligence
NewMind AI Monthly Chronicles - July 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The AUB Centre for AI in Media Proposal.docx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Cloud computing and distributed systems.

Lightweight continuous delivery for small schools

  • 1. Lightweight continuous delivery for small schools Charles Fulton (Lafayette College) Kevin Wiliarty (Hampshire College) #ne12
  • 2. ...or, “Script and version all the things!”
  • 3. Who we are ● Charles Fulton (@mackensen), Senior Web Applications Developer, Lafayette College ● Kevin Wiliarty, Senior Web Programmer, Hampshire College
  • 4. What we’re doing here ● A free and open source self-hosted continuous delivery stack ● We’re going to give you all the nouns ● Yes, all of them
  • 5. Continuous delivery Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time. You achieve continuous delivery by continuously integrating the software done by the development team, building executables, and running automated tests on those executables to detect problems. -- Martin Fowler http://martinfowler.com/bliki/ContinuousDelivery.html
  • 8. Benefits of using git http://guides.beanstalkapp.com/version-control/intro-to-version-control.html ● It helps you master complexity ● It permits you to disperse development ● It’s both free and open source ● It’s inevitable
  • 9. Complexity http://gource.io/ ● Track changes, but for an entire project ● Visualize the progression of your project over time ● Maintain versioned branches ● Manage local customizations ● Have the confidence to make major changes
  • 10. Dispersal ● No “central” repository with git ● Cheap branching and merging ● Concurrent development across teams Publish WorkDev #1 Dev #2 http://marklodato.github.io/visual-git-guide/index-en.html
  • 11. Free and open source ● No artificial limitations ● Total ownership of the tools and the resulting product http://choosealicense.com/
  • 12. Inevitability “In 2010, SVN was still the top version control system, used in 60% of software projects, while Git was used in just 11%. But today, Git has nearly matched SVN’s market share.” -- Nadia Eghbal https://medium.com/@nayafia/we-re-in-a-brave-new-post-open-source-world-56ef46d152a3
  • 14. Social coding: Github ● Store ● Distribute ● Expose ● Report ● Follow ● Document ● Visualize ● Test ● Fork ● Contribute
  • 16. Institutional coding: GitLab ● Identity management ● Institutional continuity ● Audience control ● Price ● Openness and freedom https://about.gitlab.com/
  • 18. Testing your assumptions ● Manual testing is time-intensive and boring every time you do it ● Automated testing is time-intensive and boring once, and then never again ● Manual testing makes you hesitant to make major changes ● Automated testing gives you the confidence to destroy everything at once https://docs.moodle.org/dev/Testing
  • 19. Behat ● Automated ● Behavior-driven ● User stories http://docs.behat.org/en/v3.0/
  • 21. Telling your code a story before bed
  • 22. Look, Ma, no hands! http://www.seleniumhq.org/
  • 23. Look, Ma, no head! http://tenon.io/ ● Computers don't need to look at a browser ● Headless testing can expose accessibility issues
  • 25. Continuous integration, continuously ● Establish a sane process ● Test every commit ● Stay out of the gears
  • 26. Look, Ma, no nothin'!
  • 27. Containers: Docker ● Software containers ● Scriptable ● Available on demand ● Disposable ● Repeatable https://medium.freecodecamp.com/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b
  • 28. .gitlab-ci.yml ● GitLab launches Docker containers ● Installs latest version of project ● Runs your tests ● Reports your results https://about.gitlab.com/gitlab-ci/
  • 32. Last-mile problem ● All this talk of projects, it’s exhausting ● How do I make my project useful? ● Manual solution: climb pole maintain clone of repository on production server
  • 33. Downsides to climbing utility pole ● Introduces scope for error ● Requires “physical” access to the server ● Maintains the full history of the project on the server
  • 34. A pipeline, not a utility pole 1. Commit your change 2. Tests pass 3. ??? 4. Profit!
  • 35. Capistrano ● Ruby application ● Manages the deployed state of your project, in addition to code ● Deployments can be executed locally, or from another system http://capistranorb.com/
  • 36. Extended metaphor about the American cliff swallow ● Swallows always return to Capistrano...something something...delivery! ● Swallows may or may not take trains to Capistrano.
  • 37. Capistrano in a container ● Provision one more docker container with ruby and SSH ● Add a job to .gitlab-ci.yml to run the deploy task in a ruby container http://sites.lafayette.edu/fultonc/2015/11/12/quick-note-on-agent-forwarding-with-docker/
  • 38. Script and version all the things! ● Everything is in git and attached to your project: ○ Code changes ○ Acceptance tests ○ Testing environment configuration ○ Deployment configuration
  • 39. Building your pipeline 1. Commit my changes in git 2. Push them to GitLab 3. GitLab spins up a Docker container to run QA tests 4. The tests pass 5. GitLab spins up another Docker container to deploy the project 6. Profit!
  • 41. Image credits ● Git logo by Jason Long [CC BY 3.0], via Wikimedia Commons ● GitHub logo https://github.com/logos ● GitHub octocat https://github.com/logos ● GitLab wordmark https://about.gitlab.com/press/ ● Docker logo https://www.docker.com/brand-guidelines ● User icon (modified) by WMF User Experience Design Group [MIT License], via Wikimedia Commons ● Man on telephone pole by Unknown or not provided (U.S. National Archives and Records Administration) [Public domain], via Wikimedia Commons ● Second Los Angeles Aqueduct Cascades, Sylmar by Los Angeles [CC BY-SA 3.0] via Wikimedia Commons ● Cliff swallow in flight by Don DeBold, [CC BY 2.0], via Flickr