The Release stage comes after your build and test pipeline is complete and ensures that your software makes it through your review apps, pre-production environments, and ultimately to your users with zero touch needed. It is part of the CI/CD department, and includes elements of mobile development and delivery use cases; if you're interested in those topics, be sure to check out those links.
We have also begun implementing features within Release to help make Progressive Delivery a reality. It's an exciting new concept that we'd encourage your to read about if you're not already familiar.
There are a few important north stars we are keeping sight of to guide us forward in this space. With each of these, we're focusing on complete (what we call minimally lovable) features. Iterations are how we build software, but at the same time we want to continue to evolve those features that have proven their value, allowing them to grow into more complete and comprehensive solutions.
We track epics for many of the major deliverables associated with these north stars, you can view them on a calendar at this link.
Technologies like AutoDevOps are leading the way in making it possible for developers to focus on building code and letting the automation handle figuring out how to handle the deployment. Our vision is for CD to take over from your build system and predictably manage your delivery for you while remaining completely customizable to support any unique cases. We're achieving this through templates, smart defaults, and feature flags that give you the confidence to release smaller changes more frequently.
Delivering software to your environments automatically is the first step, and modern technologies like Kubernetes are now allowing on-demand environments to be created like never before. By tying your source repo to intelligent infrastructure that understands the intentions of developers, you can enable a true one-click workflow to deliver to your internal or external end users.
Releasing in GitLab takes advantage of our deeply connected ecosystem to provide traceability and auditing all the way from planning through monitoring. Compliance and security evidence is gathered and validated at each step of the way, giving you confidence that what you're delivering is what you expect. Deployments are separated from builds and tests, ensuring a clear boundary between developers and production environments, thanks to your well-orchestrated and automated delivery process.
There are a few product categories that are critical for success here; each one is intended to represent what you might find as an entire product out in the market. We want our single application to solve the important problems solved by other tools in this space - if you see an opportunity where we can deliver a specific solution that would be enough for you to switch over to GitLab, please reach out to the PM for this stage and let us know.
Each of these categories has a designated level of maturity; you can read more about our category maturity model to help you decide which categories you want to start using and when.
Deliver your changes to production with zero-touch software delivery; focus on building great software and allow GitLab CD to bring your release through your path to production for you. This category is at the "complete" level of maturity.
Management and orchestration of releases-as-code that supports intelligent notifications, scheduling of delivery and shared resources, blackout periods, relationships, parallelization, and sequencing, as well as support for integrating manual processes and interventions. This category is at the "minimal" level of maturity.
Use any static site generator to create websites that are easily managed and deployed by GitLab. This category is at the "complete" level of maturity.
Get a full production like environment for every merge request that updates on each commit. See code running and enable user acceptance testing before you merge. This category is at the "complete" level of maturity.
Mitigate the risk of production deploys by deploying new production code to small subset of your fleet and then incrementally adding more. This category is at the "minimal" level of maturity.
Feature flags enable teams to achieve CD by letting them deploy dark features to production as smaller batches for controlled testing, separating feature delivery from customer launch, and removing risk from delivery. This category is at the "viable" level of maturity.
Release Governance includes features such as deploy-time security controls to ensure only trusted container images are deployed on Kubernetes Engine, and more broadly includes all the assurances and evidence collection that are necessary for you to trust the changes you're delivering. This category is planned, but not yet available.
Use Vault embedded in GitLab for managing your secrets both inside and outside of GitLab. This category is planned, but not yet available.
At GitLab, one of our values is that everyone can contribute. If you're looking to get involved with features in the Release area, there are a couple searches you can use to find issues to work on:
Contribute for Prizeprogram is available on our Code Contributor Programs page.
You can read more about our general contribution guidelines here.
It's important to call out that the plan can change any moment and should not be taken as a hard commitment, though we do try to keep things generally stable. In general, we follow the same prioritization guidelines as the product team at large. Issues will tend to flow from having no milestone, to being added to the backlog, to being added to this page once a specific milestone is set.
.gitlab-ci.yml, auto-configure GKE
There are a number of other issues that we've identified as being interesting that we are potentially thinking about, but do not currently have planned by setting a milestone for delivery. Some are good ideas we want to do, but don't yet know when; some we may never get around to, some may be replaced by another idea, and some are just waiting for that right spark of inspiration to turn them into something special.
Remember that at GitLab, everyone can contribute! This is one of our fundamental values and something we truly believe in, so if you have feedback on any of these items you're more than welcome to jump into the discussion. Our vision and product are truly something we build together!