Continuous deployment / delivery / pipelines
monperrus opened this issue · 32 comments
Releasy, a tool that aims at supporting
projects that use continuous delivery by generating and reporting their
release provenance: http://arxiv.org/abs/1809.10265
https://www.terraform.io/ is an excellent tool for "infrastructure as code". We use it to develop, spin up, update, upgrade and kill pretty large kubernetes/docker deployments.
"One size does not fit all - an empirical study of containerized continuous deployment workflows."
https://www.researchgate.net/publication/326696302_One_Size_Does_Not_Fit_All_An_Empirical_Study_of_Containerized_Continuous_Deployment_Workflows
Concepts: feature flags, dark launching.
Concept: canary service, canary release
Figure 3 of "Holistic Configuration Management at Facebook"
Figure 14: Latency in seconds between committing a config change and the new config reaching the production server
Advanced Concept: "delta execution" see "Efficient online validation with delta execution" (ASPLOS 2009)
Search-Based Scheduling of Experiments in Continuous Deployment
https://www.ifi.uzh.ch/dam/jcr:1cc880b3-a5fd-40e9-a4aa-4c93123526c7/icsme18_preprint.pdf
Gitlab technology https://gitlab.com/help/topics/autodevops/index.md
Mozilla's CI/CD pipeline for building and publishing multiple whale containers as microservices within a mono repository.
https://github.com/MozillaSecurity/orion
Dokku A docker-powered PaaS that helps you build and manage the lifecycle of applications
https://github.com/dokku/dokku
Rainbow Deploys with Kubernetes
http://brandon.dimcheff.com/2018/02/rainbow-deploys-with-kubernetes/
Reproducible build initiative at Debian
https://wiki.debian.org/ReproducibleBuilds
Spinnaker is an open source, multi-cloud continuous delivery platform
https://www.spinnaker.io/
Go continuous delivery
https://www.gocd.org/
Rollback and it’s importance in a DevOps world
https://medium.com/@bharghavyerravalli/rollback-and-its-importance-in-a-devops-world-21d486738760
JFrog: Universal package repository, SecOps, CI/CD and software distribution all in one platform.
https://jfrog.com/
Iter8
Release engineering platform for Kubernetes
Iter8 automates SLO validation, A/B or A/B/n testing, and progressive rollouts with advanced traffic engineering.
- Simple rollout & rollback
- BlueGreen
- Dark launch with built-in load/metrics
- Dark launch with mirroring (shadowing)
- Canary with fixed-%-split
- Canary with progressive traffic shift
- Canary with user segmentation
- Canary with session affinity
The practice and future of release engineering: A roundtable with three release engineers
https://resources.sei.cmu.edu/asset_files/Article/2015_101_001_442658.pdf
Infrastructure-as-code and tools such as Terraform and Ansible, are key technology for CD
Automating Staged Rollout with Reinforcement Learning https://arxiv.org/pdf/2204.02189.pdf
Drone is a continuous delivery system built on container technology.
https://github.com/harness/drone
An open source build platform designed for continuous delivery
https://github.com/screwdriver-cd/screwdriver
https://github.com/googleapis/release-please
Release Please automates CHANGELOG generation, the creation of GitHub releases, and version bumps for your projects.
jreleaser: 'the quick and effortless way to release your project!'
https://jreleaser.org/