- Get started
- Processes
- UX and Frontend guides
- Backend guides
- Performance guides
- Database guides
- Integration guides
- Testing guides
- Refactoring guides
- Documentation guides
- Internationalization (i18n) guides
- Telemetry guides
- Experiment Guide
- Build guides
- Compliance
- Go guides
- Shell Scripting guides
- Domain-specific guides
- Other Development guides
- Other GitLab Development Kit (GDK) guides
Contributor and Development Docs
Get started
- Set up GitLab’s development environment with GitLab Development Kit (GDK)
-
GitLab contributing guide
-
Issues workflow. For information on:
- Issue tracker guidelines.
- Triaging.
- Labels.
- Feature proposals.
- Issue weight.
- Regression issues.
- Technical or UX debt.
-
Merge requests workflow. For
information on:
- Merge request guidelines.
- Contribution acceptance criteria.
- Definition of done.
- Dependencies.
- Style guides
- Implement design & UI elements
-
Issues workflow. For information on:
- GitLab Architecture Overview
- Rake tasks for development
Processes
Must-reads:
- Code review guidelines for reviewing code and having code reviewed
- Database review guidelines for reviewing database-related changes and complex SQL queries, and having them reviewed
- Secure coding guidelines
- Pipelines for the GitLab project
Complementary reads:
- GitLab core team & GitLab Inc. contribution process
- Security process for developers
- Guidelines for implementing Enterprise Edition features
- Danger bot
- Generate a changelog entry with
bin/changelog
- Requesting access to Chatops on GitLab.com (for GitLab team members)
UX and Frontend guides
- GitLab Design System for building GitLab with existing CSS styles and elements
- Frontend guidelines
- Emoji guide
Backend guides
- GitLab utilities
- Issuable-like Rails models
- Logging
- API styleguide Use this styleguide if you are contributing to the API
- GraphQL API styleguide Use this styleguide if you are contributing to the GraphQL API
- Sidekiq guidelines for working with Sidekiq workers
- Working with Gitaly
- Manage feature flags
- Licensed feature availability
- View sent emails or preview mailers
- Shell commands in the GitLab codebase
Gemfile
guidelines- Pry debugging
- Sidekiq debugging
- Accessing session data
- Gotchas to avoid
- Avoid modules with instance variables if possible
- How to dump production data to staging
- Working with the GitHub importer
- Import/Export development documentation
- Test Import Project
- Elasticsearch integration docs
- Working with Merge Request diffs
- Kubernetes integration guidelines
- Permissions
- Prometheus
- Guidelines for reusing abstractions
- DeclarativePolicy framework
- How Git object deduplication works in GitLab
- Geo development
- Routing
- Repository mirroring
- Git LFS
- Developing against interacting components or features
- File uploads
- Auto DevOps development guide
- Mass Inserting Models
- Value Stream Analytics development guide
- Issue types vs first-class types
- Application limits
- Redis guidelines
- Rails initializers
- Code comments
- Renaming features
Performance guides
- Instrumentation for Ruby code running in production environments
- Performance guidelines for writing code, benchmarks, and certain patterns to avoid
- Merge request performance guidelines for ensuring merge requests do not negatively impact GitLab performance
- Profiling a URL, measuring performance using Sherlock, or tracking down N+1 queries using Bullet
Database guides
Tooling
- Understanding EXPLAIN plans
-
explain.depesz.com for visualising the output
of
EXPLAIN
- pgFormatter a PostgreSQL SQL syntax beautifier
Migrations
- What requires downtime?
- SQL guidelines for working with SQL queries
- Migrations style guide for creating safe SQL migrations
- Testing Rails migrations guide
- Post deployment migrations
- Background migrations
- Swapping tables
- Deleting migrations
Debugging
- Tracing the source of an SQL query using query comments with Marginalia
- Tracing the source of an SQL query in Rails console using Verbose Query Logs
Best practices
- Adding database indexes
- Foreign keys & associations
- Single table inheritance
- Polymorphic associations
- Serializing data
- Hash indexes
- Storing SHA1 hashes as binary
- Iterating tables in batches
- Insert into tables in batches
- Ordering table columns
- Verifying database capabilities
- Database Debugging and Troubleshooting
- Query Count Limits
- Creating enums
Case studies
Integration guides
- Jira Connect app
- Security Scanners
- Secure Partner Integration
- How to run Jenkins in development environment
Testing guides
Refactoring guides
Documentation guides
Internationalization (i18n) guides
Telemetry guides
Experiment Guide
Build guides
Compliance
- Licensing for ensuring license compliance
Help and feedback
If there's something you don't like about this feature
To propose functionality that GitLab does not yet offer
To further help GitLab in shaping new features
If you didn't find what you were looking for
If you want help with something very specific to your use case, and can use some community support
POST ON GITLAB FORUM
If you have problems setting up or using this feature (depending on your GitLab subscription)
REQUEST SUPPORT
To view all GitLab tiers and features or to upgrade
If you want to try all features available in GitLab.com
If you want to try all features available in GitLab self-managed
If you spot an error or a need for improvement and would like to fix it yourself in a merge request
EDIT THIS PAGE
If you would like to suggest an improvement to this doc