Riff-Raff
"Deploy the transit beam"
About
The Guardian's scala-based deployment system is designed to automate deploys by providing a web application that performs and records deploys, as well as providing various integration points for automating deployment pipelines.
Requirements
Riff-Raff and Magenta have been built with the tools we use at the Guardian and you will find it easiest if you use a similar set of tools. Riff-Raff:
- relies on artifacts and
riff-raff.yaml
files describing builds being in S3 buckets with the artifacts having paths of the formproject-name/build-number
- uses the AWS SDK and Prism to do resource discovery
- stores configuration, history and logs in a PostgreSQL database and a handful of DynamoDB tables (the eventual aim is to ditch DynamoDB altogether)
Documentation
The documentation is available in the application (under the Documentation menu) but can also be viewed under riff-raff/public/docs in GitHub.
In action
Screenshots don't do a lot to show how Riff-Raff works in practice - but here are a handful anyway, just to give a hint.
The deploy history view - this shows all deploys that have ever been done (in this case filtered on PROD and projects containing 'mobile')
This is what a single deploy looks like - displaying the overall result and the list of tasks that were executed.
The simple form for requesting a deploy can be seen here (further options are available after previewing)
Riff-Raff polls our build server frequently and can be configured to automatically start a deploy for newly completed builds
Contributing
See CONTRIBUTING.md.
What is still left to do?
See the TODO.txt
file in this project