Category Direction - GitLab Pages

GitLab Pages

GitLab Pages allows you to create a statically generated website from your project that is automatically built using GitLab CI and hosted on our infrastructure.

Overall Prioritization

Pages is a popular feature and one that people really enjoy engaging with as part of the GitLab experience; it's truly one of our most "personal" features in the Release stage. We do not plan to provide a market-leading solution for static web page hosting, but we do want to offer one that is capable for most basic needs, in particular for hosting static content and documentation that is a part of your software release.

Popular issues and compelling blockers for our users hosting static content and documentation will be the top priority for Pages.

What's Next & Why

In order to improve Pages performance, we are working on changing the Pages architecture. Now that we have delivered the first improvement to speed up the initialization time with gitlab#28782 and support GitLab Domains with the new API configuration via gitlab#282, we are tackling the Object Storage re-architecture to support cloud native installations of GitLab Pages via gitlab#39586. Now that we have validated our zip archive serving method in gitlab#377 we are going to spend more time evaluating on storing Pages files in object storage via gitlab#229154.

Maturity Plan

This category is currently at the "Complete" maturity level, and our next maturity target is "Lovable" (see our definitions of maturity levels).

Key deliverables to achieve this are:

Competitive Landscape

Gitlab Pages are offered as a service, but we do not position ourselves as a static site market leader. We are invested in supporting the process of developing and deploying code from a single place as a convenience for our users. Other providers, such as Netlify, provide a more comprehensive solution. There are project templates available that offer the use of Netlify for static site CI/CD, while also still taking advantage of GitLab for repos, merge requests, issues, and everything else.

We are seeing a rise in JAMStack and static site generators partnering in the media. This trend toward API-first, affirms our modernization effort of Pages, reinforcing our cloud native installation maturity plan.

Top Customer Issue(s) and Top Customer Success/Sales Issue(s)

The most popular customer issue is (gitlab#17584). Creating Gitlab pages today requires admins to setup wildcard DNS records and SSL/TLS certificates. Some services and/or corporate security policies forbid wildcard DNS records, preventing users from benefitting from using Gitlab Pages. This issue will remove the need for wildcard DNS and allow many more users to enjoy the Pages experience.

We are working on better supporting custom domains and will expect to have a path to redirect to custom domains (gitlab#14243) following the Pages re-architecture effort.

Our most popular issue for Pages, Multiple-version Pages support (gitlab#16208) will also need to wait until the new architecture is in place, but we are working on an alternative solution of using environments for achieving the same functionality (gitlab#33822).

Top Internal Customer Issue(s)

Our top internal customer issue is (gitlab#16208) which enables having multiple GitLab Pages generated based on branches or tags. We have been seeing more demand for cloud native, kubernetes based delivery of which GitLab Pages NFS storage is a blocker for, this will be addressed via gitlab#39586.

Top Vision Item(s)

Adding Review Apps for Pages (gitlab#16907) will allow for more sophisticated development flows involving testing and review of Pages deployments. Enhancing the maturity of deployment would integrate Pages more critically within projects and groups.

Another vision item being investigated is to leverage JAMstack for Pages. The primary goal would be to enhance the user experience (gitlab#2179) and allow easy to set up Pages from the UI without expanding APIs. Lastly, in combination with feature flags, Pages can be used to support A/B testing (gitlab#14122).