https://docs.gitlab.com/ee/architecture/blueprints/activity_pub/ GitLab documentation home Docs * * What's new? * Get free trial Home The DevSecOps platform Tutorials Find your way around GitLab Tutorial: Use the left sidebar to navigate GitLab Learn Git Plan and track your work Build your application Secure your application Manage your infrastructure Extend with GitLab Find more tutorials Subscribe Choose a subscription GitLab SaaS Free user limit Free push limit Read-only namespaces Storage GitLab self-managed Activate Enterprise Edition GitLab Dedicated Community programs Customers Portal Quarterly reconciliation Compute quota Features available to Starter and Bronze subscribers Install Requirements PostgreSQL extensions Installation methods Linux package (Omnibus) Architecture Omnibus packages and images Package information Package defaults Package licensing Package signatures PostgreSQL versions Installation Deprecation policy Supported OSes Manual installation Install JiHu Edition Configure Action Cable Backups Configuration options Custom environment variables Database GitLab Mattermost High availability roles Logs Microsoft Graph Mailer NGINX Gitaly Cluster Prometheus Puma Raspberry Pi Redis SMTP Rake tasks SSL Troubleshooting DNS Image scaling Memory-constrained environments Release process Maintain Troubleshooting Helm chart (Kubernetes) Install Test the GitLab chart on GKE or EKS Install prerequisites Chart versions Secrets RBAC Storage TLS Set up cloud resources Azure Kubernetes Service Amazon EKS Google Kubernetes Engine OpenShift Origin Oracle Container Engine for Kubernetes Deploy the Helm chart Deployment options Configure Globals GitLab subcharts Gitaly chart GitLab Exporter chart GitLab Pages chart GitLab Runner chart GitLab Shell chart KAS chart Mailroom chart Migrations chart Praefect chart Sidekiq chart Spamcheck chart Toolbox chart Webservice chart Minio chart Nginx chart Registry chart Zoekt chart Advanced Custom Docker images External database External Gitaly External GitLab Pages External Mattermost External Nginx External object storage External Redis FIPS-compliant images Geo Internal TLS between services Multiple databases Persistent volumes Red Hat UBI-based images Upgrade Database upgrade Release notes 7.0 Release notes 6.0 Release notes 5.0 Release notes 4.0 Release notes 3.0 Release notes 2.0 Release notes 1.0 Upgrade old versions Backup and Restore Backup Restore Migration guides Migrate from the Linux package Migrate to the Linux package Migrate between Helm versions Migrate to MinIO Uninstall Troubleshooting Operator (Kubernetes) Install Backup and restore Upgrade GitLab Support for Git over SSH Upgrade the Operator Ingress in OpenShift RedHat-certified images Security context constraints Troubleshooting Docker Self-compiled (source) Install under a relative URL Cloud providers Azure Google Cloud Platform (GCP) Amazon Web Services (AWS) Offline GitLab Offline GitLab installation Reference Architectures Up to 1,000 users Tutorial: Install and secure a single node GitLab instance Up to 2,000 users Up to 3,000 users Up to 5,000 users Up to 10,000 users Up to 25,000 users Up to 50,000 users Steps after installing Upgrade GitLab Plan an upgrade Background migrations Troubleshooting Upgrade a Linux package instance Convert to Linux package (Omnibus) Convert to Enterprise Edition Package signatures Downgrade Troubleshooting Upgrade a self-compiled instance Patch versions Change from Community Edition to Enterprise Edition GitLab 16 changes GitLab 15 changes GitLab 14 changes Zero-downtime upgrades for multi-node instances Upgrades with downtime for multi-node instances Change from Enterprise Edition to Community Edition Releases and maintenance Deprecations by version Terminology What's new Install GitLab Runner Linux Linux manual install FreeBSD macOS Windows Docker Helm chart GitLab agent Operator Bleeding edge releases Support policy Configure GitLab Runner Advanced configuration Autoscale configuration Docker Machine Executor autoscale Autoscale on AWS EC2 Autoscale on AWS Fargate Commands Feature flags macOS setup Runner Operator on OpenShift Running behind a proxy Rate limited requests Graphical processing units Self-signed certificates System services Speed up job execution Tutorial: Configure GitLab Runner to use the Google Kubernetes Engine Troubleshooting Administer Getting started All feature flags Enable features behind feature flags Authentication and authorization AliCloud Atlassian Atlassian Crowd (deprecated) Auth0 AWS Cognito Azure Bitbucket Cloud ClickHouse DingTalk Facebook Generic OAuth2 GitHub GitLab.com Google JWT Kerberos LDAP LDAP synchronization LDAP (Google Secure) Rake tasks Troubleshooting OAuth service provider OmniAuth OpenID Connect identity OpenID Connect OmniAuth Salesforce SAML Configure SCIM Shibboleth Smartcard Test OIDC/OAuth in GitLab Twitter Vault Configure your installation Admin Area Application cache interval CI/CD Secure files External pipeline validation Consul Environment variables File hooks Geo sites Git LFS administration Git protocol v2 Health Check Incoming email Rake tasks Instance limits Instance review Log system Parse logs with jq Trace logs based on correlation ID Merge request approvals PostgreSQL Database load balancing External database service Monitor external databases Move instances Multiple databases PgBouncer Replication and failover Troubleshooting Standalone packaged database Upgrade external database Labels Load balancer NFS Postfix Redis Configure the bundled Redis for replication Configure your own Redis for replication Standalone Redis configuration Troubleshooting Reply by email Sidekiq Multiple Sidekiq processes Processing specific job classes Sidekiq MemoryKiller Sidekiq health check Sidekiq job migration Sidekiq job size limits Troubleshooting S/MIME signing Repository storage Gitaly and Geo capabilities Gitaly and Gitaly Cluster Configure Gitaly Concurrency limiting Timeouts TLS support Configure Gitaly Cluster Example configuration files Monitoring Recovery options Troubleshooting Gitaly Troubleshooting Gitaly Cluster Praefect Rake tasks List repositories Rake task Object storage Merge request diffs storage Static objects external storage Geo Setting up Geo Set up Geo for two single-node sites Set up Geo for two single-node sites (with external PostgreSQL services) Database replication External PostgreSQL instances Configuration Using a Geo site Configure secondary proxying Secondary runners Location-aware public URL Upgrading Geo sites Using object storage Container Registry for a secondary site Geo for multiple servers Geo security review Location-aware Git remote URLs Single Sign On (SSO) Tuning Geo Rake tasks Disable Geo Removing a Geo site Supported data types Frequently asked questions Troubleshooting Validation tests Geo Glossary Disaster recovery (Geo) Planned failover Bring primary back Automatic background verification Agent server for Kubernetes Server hooks Terraform state Terraform limits Timezone Uploads Uploads migration Rake tasks Uploads sanitization Rake tasks Packages Container Registry Dependency Proxy Web terminals Wikis Invalidate Markdown cache Issue closing pattern Snippets Host the product documentation Update your settings Account and limit settings Appearance CI/CD Custom instance-level project templates Diff limits Email External authorization Federated Learning of Cohorts (FLoC) Git abuse rate limit GitLab for Jira Cloud app Troubleshooting GitLab for Slack app GitLab Pages GitLab Pages for source installations Troubleshooting Import and export settings Instance template repository IP address restrictions Job artifacts Troubleshooting Job logs Localization Maintenance Mode Polling interval multiplier Project integrations Protected paths Public security contact information Push event activities limit Rate limits Deprecated API Git LFS Git SSH operations Incident management Issue creation Note creation Package Registry Pipeline creation Projects API Raw endpoints Repository files API User and IP Users API Repository checks Security and Compliance Sign-in and help page text Sign-in restrictions Sign-up restrictions Spamcheck System Hooks Terms of service and privacy policy Third-party offers Visibility and access controls Configure GitLab Dedicated Maintain your installation Housekeeping Clean up with Rake tasks Maintenance Rake tasks Integrity check Rake task Activate GitLab EE with license Fast SSH key lookup Filesystem benchmarking gitlab-sshd Rails console Use SSH certificates Enable encrypted configuration Rake tasks Backup and restore Back up GitLab Troubleshooting Restore GitLab Migrate to a new server Back up and restore large reference architectures Inactive project deletion Move repositories Silent mode Read-only state Restart GitLab Troubleshooting Secure your installation Limits on SSH keys Rate limits Filtering outbound requests Information exclusivity Manage the CRIME vulnerability Enforce two-factor authentication (2FA) Identity verification Account email verification Make new users confirm email Runners Proxying assets Token overview Rotate secrets of third-party integrations Respond to security incidents Hardening General concepts Application recommendations CI/CD recommendations Configuration recommendations Operating system recommendations Administer users Reset user password Unlock a user Review abuse reports Review spam logs User file uploads Password storage Credentials inventory Custom password length limits Generated passwords and integrated authentication Global user settings Moderate users Auditor users External users Configure the Libravatar service Broadcast messages Email from GitLab User cohorts Rake tasks Use GitLab Learn Git Tutorial: Make your first Git commit Tutorial: Update Git commit messages Getting started Installing Git Command line Git Add file to repository Partial clone Rebase and force-push Feature branch workflow Undo options Unstage Git stash Push options Roll back commits Cherry-pick a commit Troubleshooting Set up your organization Tutorial: Set up your organization Namespaces Members Groups Manage groups Group access and permissions Manage group SSH certificates Moderate users Custom group-level project templates Group access tokens SAML Group Sync SAML SSO for GitLab.com groups Configure SCIM Troubleshooting Example group SAML and SCIM configurations Troubleshooting Subgroups Tutorial: Move a personal project to a group Tutorial: Convert a personal namespace into a group Git abuse rate limit Troubleshooting Compliance Audit event reports Audit event types Audit event schema Audit event streaming GraphQL API Compliance frameworks Tutorial: Create a compliance pipeline Compliance center Compliance tools License scanning of CycloneDX files License approval policies License list (deprecated) SPDX license list import Enterprise users Service accounts User account options Active sessions Comment templates Contributions calendar Achievements Permissions and roles Custom roles Available custom permissions Personal access tokens Profile preferences Notification emails User passwords Two-factor authentication Report abuse Delete account SSH keys GitLab.com settings Organize work with projects Create a project Manage projects Migrate projects Share projects Project features and permissions Project and group visibility Project access tokens Reserved project and group names Search Advanced search Exact code search Command palette File finder Use a project as a Go package Tutorial: Build a protected workflow for your project Badges Code intelligence Description templates Deploy keys Deploy tokens Import and migrate groups and projects Bitbucket Cloud Bitbucket Server ClearCase CVS FogBugz Gitea GitHub GitHub import Rake task GitLab (direct transfer) GitLab (file export) Troubleshooting Rate limits for project and group imports and exports Rake tasks Jira Perforce Helix Repo by manifest file Repo by URL TFVC System notes Plan and track work Labels Iterations Tutorial: Use GitLab to run an Agile iteration Milestones Burndown and burnup charts Issues Create issues Manage issues Confidential issues Crosslinking issues CSV export CSV import Design management Due dates Emoji reactions Issue boards Tutorial: Set up issue boards for team hand-off Tutorial: Set up a single project for issue triage Multiple assignees Linked issues Service Desk Configure Service Desk Use Service Desk Rake tasks Sorting and ordering issue lists Weight Zoom meetings in issues Comments and threads Tasks Requirements Time tracking Customer relations (CRM) Wikis Group wikis Epics Manage epics Linked epics Epic boards Roadmaps Planning hierarchies Objectives and key results (OKR) Keyboard shortcuts Quick actions Autocomplete characters Markdown AsciiDoc CSV files Rich text editor To-Do List Manage your code Repositories Code owners Syntax and errors Branches Default branch Protected branches Forks Mirroring Bidirectional mirroring Pull mirroring Push mirroring Troubleshooting Managing monorepos Observability Troubleshooting Git LFS Troubleshooting Reduce repository size Tags Protected tags Changelogs File Blame File History Snippets GeoJSON files Git attributes Locked files Jupyter notebook files Machine learning model experiments Model registry Push rules Signed commits Sign commits with GPG Sign commits with SSH keys Sign commits and tags with X.509 X.509 signatures Rake task Web Editor Web IDE Merge requests Workflows Collaborate across forks Create merge requests Commits Changes Approvals Approval rules Approval settings Commit message templates Draft merge requests Confidential merge requests Reviewing and managing merge requests Suggestions Merge request widgets Merge methods Squash and merge Auto-merge Merge conflicts Reverting changes Cherry pick changes Versions Export merge requests to CSV External status checks Merge request dependencies AI in merge requests Remote development Tutorial: Connect a remote machine to the Web IDE Workspaces Workspace configuration GitLab agent configuration Tutorial: Create a custom workspace image that supports arbitrary user IDs Use CI/CD to build your application Getting started Tutorial: Your first pipeline Tutorial: A complex pipeline Plan a migration to GitLab CI/CD Migrate from Bamboo Migrate from GitHub actions Migrate from Jenkins Migrate a Maven build from Jenkins Migrate from CircleCI CI/CD examples Deployment with Dpl End-to-end testing NPM with semantic-release PHP with PHPunit and atoum PHP with NPM and SCP PHP with Laravel and Envoy CI/CD YAML syntax reference Optimize your YAML files Validate syntax Debug pipelines Pipeline editor Artifacts reports Include examples Inputs Workflow examples CI/CD components Runners Tutorial: Create, register, and run your own project runner Tutorial: Automate runner creation and registration Runner SaaS Linux GPU macOS Windows Manage runners Register a runner Migrate to the new runner registration workflow Runner executors Custom libvirt LXD Docker Docker Machine Docker Autoscaler Instance Kubernetes Shell Supported shells SSH Parallels VirtualBox Configure runners Scale a fleet of runners Runner Fleet Dashboard Pipelines Scheduled pipelines Trigger a pipeline Customize pipeline configuration Pipeline architectures Pipeline efficiency Pipeline resource groups Directed acyclic graph (DAG) Downstream pipelines Merge request pipelines Merged results pipelines Merge trains Jobs Choose when jobs run Access a terminal for a running job Format scripts and job logs Git submodules Cache and artifacts Job artifacts Troubleshooting Docker Run CI/CD jobs in Docker containers Use Docker to build Docker images Authenticate with registry Docker Layer Caching Use kaniko to build Docker images Tutorial: Use Buildah in a rootless container on OpenShift Variables Predefined CI/CD variables Where variables can be used Pipeline security CI/CD job token External secrets ID token authentication Secure Files Use Azure Key Vault secrets in GitLab CI/CD Use GCP Secret Manager secrets in GitLab CI/CD Tutorial: Use Fortanix Data Security Manager (DSM) with GitLab Use Sigstore for keyless signing Connect to cloud services Configure OpenID Connect in AWS Configure OpenID Connect in Azure Configure OpenID Connect with Google Cloud Authenticating with HashiCorp Vault Tutorial: Update HashiCorp Vault configuration to use ID Tokens Services MySQL service PostgreSQL service Redis service GitLab as a service Auto DevOps Requirements Stages Customize CI/CD variables Multiple Kubernetes clusters Upgrade PostgreSQL Prepare for deployment Upgrade Auto Deploy dependencies Deploy to GKE Deploy to EKS Deploy to ECS Deploy to EC2 Troubleshooting Testing Accessibility testing Browser performance testing Code coverage Code quality Fail fast testing Load performance testing Metrics reports Test cases Test coverage visualization Unit test reports Unit test report examples SSH keys ChatOps Mobile DevOps External repository integrations Bitbucket Cloud GitHub Secure your application Application security Getting started Security Configuration Container Scanning Tutorial: Scan a Docker container for vulnerabilities Dependency Scanning Tutorial: Set up dependency scanning Troubleshooting Comparison: Dependency Scanning and Container Scanning Dependency List Tutorial: Export dependency list Continuous Vulnerability Scanning Static Application Security Testing SAST rules Customize rulesets SAST Analyzers Troubleshooting Infrastructure as Code (IaC) Scanning Secret Detection Automatic response to leaked secrets Dynamic Application Security Testing (DAST) DAST browser-based analyzer Configuration Requirements Enabling the analyzer Customizing analyzer settings Overriding analyzer jobs Available CI/CD variables Authentication Offline configuration Vulnerability checks Troubleshooting DAST proxy-based analyzer Troubleshooting DAST on-demand scan Authentication Troubleshooting DAST API analyzer Configuration Requirements Enabling the analyzer Customizing analyzer settings Overriding analyzer jobs Available CI/CD variables Offline configuration Performance Troubleshooting Run DAST offline API Security API Discovery Web API Fuzz Testing Configuration Requirements Enabling the analyzer Customizing analyzer settings Overriding analyzer jobs Available CI/CD variables Offline configuration HTTP Archive format Performance Troubleshooting Coverage-guided fuzz testing Tutorial: Perform fuzz testing in GitLab Breach and Attack Simulation Security Dashboard Offline environments Vulnerability Report View vulnerabilities in a pipeline Vulnerability Page Vulnerability severity levels GitLab Advisory Database CVE ID requests Policies Scan execution policies Tutorial: Set up a scan execution policy Scan result policies Tutorial: Set up a scan result policy Security scanner integration Secure and Govern glossary Deploy and release your application Environments and deployments Environments Dashboard Operations Dashboard Dashboard for Kubernetes Protected environments Deployment safety Deployment approvals Roll out an application incrementally Deploy to AWS Deploy to Amazon ECS Deploy to Heroku External deployment tools Configure Kubernetes deployments (deprecated) Releases Release CI/CD examples Release CLI tool Release fields Release evidence Packages & Registries Package Registry Supported package managers Supported functionality Composer Conan Debian Go Proxy Helm Maven npm NuGet PyPI Ruby gems Yarn Generic Dependency proxy for packages Store all packages in one project Monorepo workflows Reduce Package Registry storage Build packages Container Registry Authenticate Build and push images Delete images Reduce Container Registry storage Reduce Container Registry data transfers Troubleshooting Harbor Registry Terraform module registry Dependency Proxy Reduce Dependency Proxy storage Review Apps Feature flags GitLab Pages Tutorial: Create website from scratch Tutorial: Build, test, and deploy your Hugo site Create website from CI/CD template Create website from forked sample project Create website from project template Create deployment for static site Public folder Default domain names and URLs Custom domains DNS records SSL/TLS certificates Let's Encrypt certificates Access control Redirects Settings Monitor application performance Error tracking Distributed tracing Metrics Incident management Alerts Integrations Incidents Manage incidents Timeline events Linked resources Incident management for Slack On-call schedules Escalation policies Paging and notifications Status page Monitor runner performance Manage your infrastructure Infrastructure as Code Terraform state Terraform integration in merge requests GitLab Terraform helpers Terraform template recipes Troubleshooting Create Kubernetes clusters Amazon EKS Azure AKS Google GKE Civo Connect Kubernetes clusters Use GitOps Tutorial: Set up Flux for GitOps Tutorial: Deploy a Git repository using Flux Tutorial: Deploy an OCI artifact using Flux Migrate to Flux Manage Kubernetes secrets (deprecated) Track cluster resources (deprecated) Using GitOps with the agent for Kubernetes (deprecated) Use GitLab CI/CD Manage cluster applications Install cert-manager Install Ingress Install GitLab Runner Install Vault Install the agent for Kubernetes Manage the agent for Kubernetes instances Grant users Kubernetes access Operational container scanning Troubleshooting Migrate to the agent for Kubernetes Runbooks Analyze GitLab usage Analytics dashboards CI/CD analytics Code review analytics Contribution analytics Contributor analytics DevOps adoption by instance DevOps adoption by group DORA metrics Insights Issue analytics Merge request analytics Product analytics Instrumentation Browser SDK Productivity analytics Repository analytics for projects Repository analytics for groups Usage trends Value stream analytics Value streams dashboard Instance-level analytics Metrics Configure GitLab Configure Grafana GitHub imports GitLab exporter GitLab Prometheus metrics IP allowlist endpoints Node exporter PGBouncer exporter PostgreSQL server exporter Prometheus Performance bar Performance monitoring Redis exporter Registry exporter Usage statistics Web exporter Tutorial: Set up an analytics-powered project Tutorial: Set up product analytics in a GitLab Pages website project Experiment, Beta, GA support Find your GitLab version GitLab Duo Code Suggestions SaaS Self-managed Troubleshooting Repository X-Ray Ask questions with Chat Extend Integrations Project integrations Akismet Apple App Store Connect Arkose Protect Asana Atlassian Bamboo AWS CodePipeline Beyond Identity Datadog Diagrams.net Diffblue Cover Discord Notifications Elasticsearch Troubleshooting Emails on push External issue trackers Bugzilla ClickUp Custom issue tracker Engineering Workflow Management (EWM) Redmine YouTrack GitHub GitLab for Slack app Troubleshooting Gitpod Gmail actions Google Chat Google Play Harbor irker (IRC gateway) Jenkins Jira Jira issue integration Jira issue management Tutorial: Create Jira credentials Troubleshooting Jira development panel GitLab for Jira Cloud app Jira DVCS connector Troubleshooting Kroki Mailgun Marketplace partners Mattermost notifications Mattermost slash commands Microsoft Teams notifications MLflow Mock CI Pipeline status emails Pivotal Tracker PlantUML Pumble reCAPTCHA ServiceNow Slack notifications (deprecated) Slack slash commands Sourcegraph Squash TM Telegram Trello Power-Ups Unify Circuit Webex Teams Webhooks Webhook events Rake tasks REST API REST API resources .gitignore (templates) .gitlab-ci.yml (templates) Access requests Agent for Kubernetes Alert Management Appearance (application) Applications Audit events Avatar Badges (project) Badges (group) Branches Broadcast messages Code Suggestions Commits Composer Conan Container Registry Custom attributes Dashboard annotations Database migrations Debian Debian group distributions Debian project distributions Dependencies Dependency list export Dependency Proxy Deploy keys Deploy tokens Deployments Discussions Dockerfile (templates) DORA4 metrics Emoji reactions Environments Epics Error tracking Events Experiments External status checks Feature flags Feature flag user lists Freeze periods Geo nodes Geo sites GitLab Pages Go Proxy Group access tokens Group activity analytics Group epic boards Group Import/Export Group-level protected branches Group migration by direct transfer Group relations export Group repository storage moves Groups Helm Import Instance-level CI/CD variables Integrations Invitations Issue boards (project) Issue boards (group) Issues Issues (epic) Issues statistics Iterations (project) Iterations (group) Jobs Job artifacts Job token scopes Keys Labels (project) Labels (group) License Licenses (templates) Linked epics Links (issue) Links (epic) Lint .gitlab-ci.yml Markdown Marketplace Maven Member Roles Members Merge request approvals Merge request context commits Merge requests Merge trains Metadata Milestones (project) Milestones (group) Namespaces Notes (comments) Draft notes Notification settings npm NuGet Packages Pages domains Personal access tokens Pipelines schedules Pipeline trigger tokens Pipelines Plan limits Product analytics Project access tokens Project aliases Project import/export Project relations export Project remote mirrors Project repository storage moves Project statistics Project templates Project vulnerabilities Projects Protected branches Project-level protected environments Group-level protected environments Protected tags PyPI Releases Group releases Release links Repositories Repository files Repository submodules Resource group Resource iteration events Resource label events Resource milestone events Resource state events Resource weight events Ruby gems Runners SAML SCIM Search Search migrations Secure files Settings (application) Sidekiq metrics Sidekiq queues Snippet repository storage moves Snippets Snippets (project) SSH certificates (group) Statistics (application) Suggestions System hooks Tags Terraform Registry To-Do lists Topics Service Data Users User-starred metrics dashboards Variables (project) Variables (group) Version Visual Review discussions (deprecated) Vulnerabilities Vulnerability export Vulnerability Findings Wikis (group) Wikis (project) Automate storage management Deprecations and removals OpenAPI GraphQL API Run GraphQL API queries and mutations GraphQL API resources Create audit report (example) Identify issue boards (example) List branch rules for project (example) Query users (example) Use custom emojis (example) Removed items OAuth 2.0 identity provider API Editor and IDE extensions Visual Studio Code JetBrains IDEs Visual Studio Neovim GitLab CLI (glab) Contribute Contribute to GitLab Tutorial: Make a GitLab contribution Architecture Adding a new Service Component Development Rake tasks Mass insert Rails models Development processes AI features Duo Chat Working with prompts Glossary Avoiding required stops Changelog entries ChatOps on GitLab.com Code review guidelines Danger bot Deprecation guidelines EE features Emails Experiments Implementing experiments Testing experiments Experiment code reviews Experiment rollouts Feature flags for GitLab development Controlling feature flags Feature flags API FIPS compliance Framework - DeclarativePolicy Issues workflow Labels Merge request concepts Merge request diffs development guide Working with diffs Application and rate limit guidelines Frontend overview Mergeability framework Performance guidelines Merge request workflow Reusing Abstractions Ruby upgrade guidelines Secure partner onboarding process Testing standards and styles Flaky tests Frontend testing standards and style guidelines Review apps Smoke tests Testing best practices Testing levels Testing Rails migrations Testing Rake tasks Testing (contract) Writing consumer tests Writing provider tests Testing (end to end) Beginner's guide to writing end-to-end tests Best practices when writing end-to-end tests Dynamic element validation Flows in GitLab QA Page objects in GitLab QA Resource class in GitLab QA Migrate Capybara to Chemlab Execution context selection End-to-end test pipelines Running tests that require special setup RSpec metadata for end-to-end tests Style guide for writing end-to-end tests Testing with feature flags Test Infrastructure for Cloud Integrations Troubleshooting Translate GitLab Externalization Translation Proofreading Merging Development style guides Advanced search migration style guide API style guide Frontend style guides Gemfile guidelines Go standards and style guidelines Dependency management in Go Managing Go versions GraphQL API style guide Shell command guidelines HTML style guide JavaScript style guide Python guidelines RuboCop rule guidelines Ruby style guide SCSS style guide Secure coding guidelines Shell scripting standards and style guidelines TypeScript style guide Vue style guide Feature development ActivityPub ActivityPub actors Releases actor Advanced search Application Settings Approval rules Audit events Auto DevOps Built-in project templates Cells CI/CD Documenting keywords Contribute to the CI/CD schema CI/CD component development CI/CD template development Pipeline Wizard New partitioned CI/CD tables Code intelligence Code Owners Code Suggestions Source Code Management Gitaly touch points Push Rules development guidelines Data science Model registry Database Adding database indexes Adding required stops Add a foreign key constraint to an existing column Avoiding downtime in migrations Batched background migrations Batch iteration in a tree hierarchy Case study - filtering by label Case study - namespaces storage statistics CI mirrored tables ClickHouse ClickHouse within GitLab GitLab activity data in ClickHouse Merge request analytics with ClickHouse Optimizing query execution Tiered storages in ClickHouse Database Dictionary Database Lab and Postgres.ai Database load balancing Database migration pipeline Database review guidelines Database check-migrations job Delete existing migrations Enums Foreign keys and associations Introducing a new database migration version Layout and access patterns Maintenance operations Migrations style guide Multiple databases Loose Foreign Keys Migrations for multiple databases Ordering table columns Pagination guidelines Pagination performance guidelines Keyset pagination Efficient IN operator queries Post-deployment migrations Query comments with Marginalia Query Recorder Single Table Inheritance SQL guidelines Strings and the Text data type Swapping tables Table partitioning Date range Hash Int range List Troubleshooting and debugging Understanding EXPLAIN plans Design and UI Development seed files Distributed tracing Frontend development Accessibility Best practices Automated testing Architecture Content Editor Customizable dashboards Design tokens Diagrams.net Merge request widget extensions Registry architecture Source editor Widgets Dark mode Dependencies Design patterns Event tracking Emojis FAQ Guides Getting started Migrating from Vuex Onboarding course Lesson 1 Vue 3 migration Icons and SVG illustrations Keyboard shortcuts Logging Sentry Performance Security Tech Stack Axios GraphQL HAML ViewComponent Vue Vuex Tooling Troubleshooting Type hinting Geo Geo framework Geo proxying Git LFS Git object deduplication Gitaly GitLab Flavored Markdown (GLFM) GitLab Flavored Markdown (GLFM) specification guide GitLab Shell Features GitLab-sshd Processes GraphQL GraphQL authorization GraphQL BatchLoader GraphQL pagination GraphQL Pro GraphQL API merge request checklist Group-level project templates Import (Bitbucket Cloud) Import (Bitbucket Server) Import (GitHub) Import (group migration by direct transfer) Import (project import by file export) Import (test project) Identity verification Integrations Internal analytics Internal event tracking Quick start guide Migrating to internal event tracking Event definition guide Local setup and debugging Metrics Metrics dictionary guide Metrics instrumentation guide Metrics lifecycle Service Ping Troubleshooting Review guidelines Internal API Internal allowed API Internal users Issuable-like Rails models utilities Issue types Jenkins in local environments Jira development environment JSON guidelines Kubernetes integration Logging Observability for stage groups Dashboards Stage group dashboard Error budget detail Package Package settings Package structure Support new formats Cleanup policies Debian repository Dependency proxy Harbor registry Permissions Custom roles Product Qualified Lead (PQL) Pry debugging VS Code debugging Build and deploy real-time view components Redis Remote Development developer documentation Repository storage moves Sec section Analyzer development guide CycloneDX property taxonomy Gemnasium analyzer data Security report ingestion Token Revocation API Generate test vulnerabilities Sidekiq Compatibility across updates Job idempotency and job deduplication Limited capacity worker Logging Worker attributes Spam protection and CAPTCHA Model and services REST API spam protection GraphQL API spam protection Web UI spam protection Exploratory testing Uploads Adding new uploads Value Stream Analytics Verify stage Wikis Work items and work item types Workhorse Adding new features to Workhorse Configuration Features that rely on Workhorse Websocket channel support Prometheus metrics Organization User experience GitLab Development Kit GitLab project pipelines Contribute to GitLab Runner Review GitLab Runner Add new Windows version support for Docker executor Contribute to GitLab Pages Using dnsmasq to dynamically handle GitLab Pages subdomains Contribute to GitLab Distribution Contribute to Omnibus GitLab Getting started Build locally Build Omnibus GitLab package Build all-in-one Docker image Information for GitLab team members Set up a development environment CI variables Change package behavior Change YAML config options Add deprecation messages Add new gitlab-ctl commands Add new services Add new software definitions Create patches Add or remove configuration options Manage PostgreSQL versions Omnibus mirror Version format for the packages and Docker images Pipelines Work with public_attributes.json Upgrade Chef Handle vulnerabilities Handle broken master pipelines Deprecate and remove support for an OS Contribute to GitLab Helm charts Architecture of Cloud native GitLab Helm charts Backup and Restore Goals Architecture Design Decisions Resource Usage Environment setup Style guide Versioning and release Troubleshooting Contribute to GitLab Operator CI/CD configuration Dependency on GitLab Charts Development installation OpenShift cluster setup Publish to OperatorHub Provision and deploy RedHat certification RedHat certification full Versioning and releases Test OLM Contribute to GitLab Design System Contribute to documentation Style guide Recommended word list Topic types Concepts Tasks Reference Troubleshooting Getting Started Tutorials Glossaries Document product versions Document feature flags Document Experiment and Beta features Metadata Global navigation /help Workflow Drawer content Testing Site architecture Folder structure Deployment process Automation Documentation review apps Redirects Create a GraphQL example page Documenting REST API resources Solutions Cloud AWS Solutions GitLab partnership qualifications from AWS GitLab AWS integrations index GitLab Instances on AWS Provision GitLab on a single EC2 instance in AWS SRE considerations for Gitaly on AWS