The FOSS Enterprise Application Platform

Putting it together

How we build and deploy Preside applications as a busy agency

About me

 

Dominic Watson

  • Technical Lead @ Pixl8 Interactive
  • Lead developer of Preside
  • Like making bread (but not very good at it)

About Pixl8
 

  • Web development agency since early 2000's specializing in CMS and web applications for membership style organisations
  • Based in London, UK + Kuala Lumpur, Malaysia

Preside

A growing competitor for mid to large-scale commercial content platforms; open sourced. We work openly and with integrity to create a platform for and with our community.

 

 

Our mission

To build an out-of-box web application foundation that does as much of the laborious, hard and overlooked work for you, accelerating teams as they focus on unique requirements.

 

To build a community and platform that leads by example; that is a joy to use, a joy to work with and a joy to participate in.

Our vision

Preside solving complex needs for a wide breadth of industries and communities. A well-known name founded on openness and excellence.

What we'll cover

  • TWGit Git Workflow
  • How we build applications with Preside extensions and coldbox modules today
  • How we deploy our applications today
  • How we inject environment specific variables today
  • A little of how we got there ^^^

The PROBLEM(s)!

Problem 1: People

Collaboration within our team and with volatile clients!

Preside Projects with Dependencies

  • Preside Extensions
  • Coldbox Modules
  • Git Submodules
  • Anything else we can think of

Tests!

Environment configuration

Without coding or meddling on the server!

PRODUCTION

UAT

VS

Static asset generation

CSS / JS Minification, etc.

Solution part 1:

Git branching workflow

http://twgit.twenga.com/

TWGit

From Twenga

Simple and powerful flow that we use for both Preside itself and also all our client projects. This flow has transformed the way we work in teams and is (relatively) easy to learn.

Solution part 2:

GitLab :)

FOR EVERYTHING ELSE

GitLab:

Quick Tour and setup

(LIVE DEMO)

GitLab:

Pipelines

A file that configures what jobs to run on what commits and when

GitLab:

Pipeline build files

Basically, you can run ANYTHING you want when you commit to a repository (or when you manually run a pipeline. We:

 

  • Build static assets with Grunt
  • Pull down dependencies using CommandBox, git submodule update and anything else
  • Run tests using testbox + Commandbox
  • Deploy files using rsync

GitLab:

Build variables and environments

Environments in Gitlab Pipelines + convention based pipeline variables help us deploy to different environments with different settings

Looking back

and forward...

  • Used to use SVN, no branching strategy, deploy using TortoiseSVN, Beyond Compare and manually editing of source files for config on servers
  • Moved to some kind of branching model
  • Moved to Git and TWGit + Submodules for dependencies.
  • Moved to Linux.
  • Deploying through sftp from repo server, no builds though
  • Built an app for dependency injection
  • Started using Jenkins
  • Built an app for deploying using our convention
  • Discovered GitLab
  • Next: docker across everything

Thanks for listening

https://www.preside.org/signup

https://community.preside.org

https://presidecms-slack.herokuapp.com/

https://presidecms.atlassian.net

Putting it together

By Dominic Watson

Putting it together

  • 1,139