Our vision for CI/CD is aligned to the one set forth in Jez Humble's classic Continuous Delivery book. The ideas of reducing risk, getting features and fixes out quickly, and reducing costs/creating happier teams by removing the barriers to getting things done has stood the test of time.
The CI/CD section focuses on the code build/verification (Verify), packaging/distribution (Package), and delivery (Release) stages of the DevOps Lifecycle. Each of these areas has their own strategy page with upcoming features, north star directions, and more. This page ties them together via important concepts that unify the direction across all of these areas. In addition to the core CI/CD elements, the mobile use case is very much related and will be of interest to you if you are interested in building and releasing mobile applications using GitLab.
You can see how the CI/CD stages relate to each other in the following infographic:
GitLab has traditionally done very well with building and deploying software on Linux, with our shared runner fleet making it very easy to get up and running quickly. We've supported MacOS and Windows Runners, but only in a bring-your-own configuration where you host and register your own Runners. We're looking to change that by improving Runner features for these platforms in addition to providing them as available options in the shared runner fleet.
Just being able to run builds on the platform isn't sufficient, though. We also want to improve our support for unit testing and code coverage frameworks used on these operating systems, as well as our support for different package managers that are used by code build there.
The action for improving multi-platform support in GitLab is primarily happening in the Continuous Integration category, where we're adding this improved testing and runner support, but all categories are involved to some extent to making sure that our Mac and Windows support is just as good as it is for Linux. If you're a user of these platforms and have ideas how we can make our support better for your use cases, we'd love to hear them.
Put simply, Progressive Delivery is a set of emerging CD best practices, oriented around being able to control and monitor deployments incrementally over time, and in an automated and safe way. Similarly to Compliance as Code, our single application is uniquely capable of providing an integrated solution in this space.
Continuous Delivery is the base category for Progressive Delivery, but there are additional ones that will be important in rounding out our comprehensive solution:
Compliance as Code is the idea that requirements for auditing and compliance teams can be collected with zero additional cognitive load from developers and other team members participating in software delivery. Because GitLab has an end-to-end view of the artifacts that are associated with releases (issues, merge requests, feature flags, and so on) we are uniquely positioned to provide a comprehensive view of compliance-related activity, collected on an ongoing basis throughout the release process.
Watch for us to provide features that automatically collect this data as part of normal, automated day-to-day operation of GitLab - whether through issue updates, CI pipelines, test runs, and more, and then make it all available in an easy to digest format associated with your releases and milestones.
The primary home for this theme, at least in terms of where you will interact with it in the product, is our Release Governance category. You can read more about what we have planned next at that stage.
rulessection for pipelines
needs: to specify a job that can always be started immediately, regardless of stage FY20 Vision
needs:to refer to a job in the same stage FY20 Vision
allow_failureaction for pipeline rules FY20 Vision
write_registrypermission to Deploy Tokens FY20 Vision
.gitlab-ci.yml, auto-configure GKE