debian-mirror-gitlab/doc/development/README.md

224 lines
8.6 KiB
Markdown
Raw Normal View History

2018-03-17 18:26:18 +05:30
---
comments: false
2018-11-08 19:23:39 +05:30
description: 'Learn how to contribute to GitLab.'
2018-03-17 18:26:18 +05:30
---
2014-09-02 18:07:02 +05:30
2019-10-12 21:52:04 +05:30
# Contributor and Development Docs
2016-09-13 17:45:13 +05:30
2019-12-04 20:38:33 +05:30
## Get started
2016-09-13 17:45:13 +05:30
2018-12-05 23:21:45 +05:30
- Set up GitLab's development environment with [GitLab Development Kit (GDK)](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/README.md)
2018-12-13 13:39:08 +05:30
- [GitLab contributing guide](contributing/index.md)
2020-04-08 14:13:33 +05:30
- [Issues workflow](contributing/issue_workflow.md). For information on:
- Issue tracker guidelines.
- Triaging.
- Labels.
- Feature proposals.
- Issue weight.
- Regression issues.
- Technical or UX debt.
- [Merge requests workflow](contributing/merge_request_workflow.md). For
information on:
- Merge request guidelines.
- Contribution acceptance criteria.
- Definition of done.
- Dependencies.
2020-03-09 13:42:32 +05:30
- [Style guides](contributing/style_guides.md)
- [Implement design & UI elements](contributing/design.md)
- [GitLab Architecture Overview](architecture.md)
2018-03-17 18:26:18 +05:30
- [Rake tasks](rake_tasks.md) for development
2016-09-13 17:45:13 +05:30
2018-03-17 18:26:18 +05:30
## Processes
2016-09-13 17:45:13 +05:30
2020-03-09 13:42:32 +05:30
**Must-reads:**
2019-09-30 21:07:59 +05:30
- [Code review guidelines](code_review.md) for reviewing code and having code reviewed
2020-03-09 13:42:32 +05:30
- [Database review guidelines](database_review.md) for reviewing database-related changes and complex SQL queries, and having them reviewed
2020-04-08 14:13:33 +05:30
- [Secure coding guidelines](https://gitlab.com/gitlab-com/gl-security/security-guidelines)
2019-12-04 20:38:33 +05:30
- [Pipelines for the GitLab project](pipelines.md)
2020-03-09 13:42:32 +05:30
Complementary reads:
- [GitLab core team & GitLab Inc. contribution process](https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md)
2018-11-08 19:23:39 +05:30
- [Security process for developers](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#security-releases-critical-non-critical-as-a-developer)
2020-03-09 13:42:32 +05:30
- [Guidelines for implementing Enterprise Edition features](ee_features.md)
2019-12-04 20:38:33 +05:30
- [Danger bot](dangerbot.md)
2020-03-09 13:42:32 +05:30
- [Generate a changelog entry with `bin/changelog`](changelog.md)
2020-04-08 14:13:33 +05:30
- [Requesting access to Chatops on GitLab.com](chatops_on_gitlabcom.md#requesting-access) (for GitLab team members)
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
## UX and Frontend guides
2016-09-13 17:45:13 +05:30
2019-02-15 15:39:39 +05:30
- [GitLab Design System](https://design.gitlab.com/) for building GitLab with existing CSS styles and elements
2018-03-17 18:26:18 +05:30
- [Frontend guidelines](fe_guide/index.md)
- [Emoji guide](fe_guide/emojis.md)
## Backend guides
- [GitLab utilities](utilities.md)
2019-12-21 20:55:43 +05:30
- [Issuable-like Rails models](issuable-like-models.md)
2019-02-15 15:39:39 +05:30
- [Logging](logging.md)
2018-03-17 18:26:18 +05:30
- [API styleguide](api_styleguide.md) Use this styleguide if you are
2019-09-30 21:07:59 +05:30
contributing to the API
2018-11-08 19:23:39 +05:30
- [GraphQL API styleguide](api_graphql_styleguide.md) Use this
2019-09-04 21:01:54 +05:30
styleguide if you are contributing to the [GraphQL API](../api/graphql/index.md)
2018-03-17 18:26:18 +05:30
- [Sidekiq guidelines](sidekiq_style_guide.md) for working with Sidekiq workers
- [Working with Gitaly](gitaly.md)
- [Manage feature flags](feature_flags.md)
2019-07-31 22:56:46 +05:30
- [Licensed feature availability](licensed_feature_availability.md)
2018-03-17 18:26:18 +05:30
- [View sent emails or preview mailers](emails.md)
- [Shell commands](shell_commands.md) in the GitLab codebase
- [`Gemfile` guidelines](gemfile.md)
2018-11-18 11:00:15 +05:30
- [Pry debugging](pry_debugging.md)
2018-03-17 18:26:18 +05:30
- [Sidekiq debugging](sidekiq_debugging.md)
2019-07-31 22:56:46 +05:30
- [Accessing session data](session.md)
2016-06-02 11:05:42 +05:30
- [Gotchas](gotchas.md) to avoid
2018-03-17 18:26:18 +05:30
- [Avoid modules with instance variables](module_with_instance_variables.md) if possible
2016-06-02 11:05:42 +05:30
- [How to dump production data to staging](db_dump.md)
2018-03-17 18:26:18 +05:30
- [Working with the GitHub importer](github_importer.md)
2019-03-02 22:35:43 +05:30
- [Import/Export development documentation](import_export.md)
2020-03-09 13:42:32 +05:30
- [Test Import Project](import_project.md)
2019-07-31 22:56:46 +05:30
- [Elasticsearch integration docs](elasticsearch.md)
2018-10-15 14:42:47 +05:30
- [Working with Merge Request diffs](diffs.md)
2019-07-07 11:18:12 +05:30
- [Kubernetes integration guidelines](kubernetes.md)
2018-12-05 23:21:45 +05:30
- [Permissions](permissions.md)
2018-11-20 20:47:30 +05:30
- [Prometheus metrics](prometheus_metrics.md)
2018-12-05 23:21:45 +05:30
- [Guidelines for reusing abstractions](reusing_abstractions.md)
2018-12-13 13:39:08 +05:30
- [DeclarativePolicy framework](policies.md)
2019-07-07 11:18:12 +05:30
- [How Git object deduplication works in GitLab](git_object_deduplication.md)
2019-07-31 22:56:46 +05:30
- [Geo development](geo.md)
2019-09-04 21:01:54 +05:30
- [Routing](routing.md)
2019-09-30 21:07:59 +05:30
- [Repository mirroring](repository_mirroring.md)
- [Git LFS](lfs.md)
2019-10-12 21:52:04 +05:30
- [Developing against interacting components or features](interacting_components.md)
2019-12-04 20:38:33 +05:30
- [File uploads](uploads.md)
2019-12-21 20:55:43 +05:30
- [Auto DevOps development guide](auto_devops.md)
2020-01-01 13:55:28 +05:30
- [Mass Inserting Models](mass_insert.md)
2020-03-09 13:42:32 +05:30
- [Value Stream Analytics development guide](value_stream_analytics.md)
- [Issue types vs first-class types](issue_types.md)
- [Application limits](application_limits.md)
- [Redis guidelines](redis.md)
2020-04-08 14:13:33 +05:30
- [Rails initializers](rails_initializers.md)
2018-03-17 18:26:18 +05:30
## Performance guides
2018-12-05 23:21:45 +05:30
- [Instrumentation](instrumentation.md) for Ruby code running in production
environments
- [Performance guidelines](performance.md) for writing code, benchmarks, and
certain patterns to avoid
2018-03-17 18:26:18 +05:30
- [Merge request performance guidelines](merge_request_performance_guidelines.md)
for ensuring merge requests do not negatively impact GitLab performance
2018-12-05 23:21:45 +05:30
- [Profiling](profiling.md) a URL, measuring performance using Sherlock, or
tracking down N+1 queries using Bullet
2018-03-17 18:26:18 +05:30
2018-11-20 20:47:30 +05:30
## Database guides
### Tooling
- [Understanding EXPLAIN plans](understanding_explain_plans.md)
- [explain.depesz.com](https://explain.depesz.com/) for visualising the output
of `EXPLAIN`
2019-09-30 21:07:59 +05:30
- [pgFormatter](http://sqlformat.darold.net/) a PostgreSQL SQL syntax beautifier
2016-09-13 17:45:13 +05:30
2018-03-17 18:26:18 +05:30
### Migrations
2016-09-13 17:45:13 +05:30
- [What requires downtime?](what_requires_downtime.md)
2018-03-17 18:26:18 +05:30
- [SQL guidelines](sql.md) for working with SQL queries
- [Migrations style guide](migration_style_guide.md) for creating safe SQL migrations
2019-12-21 20:55:43 +05:30
- [Testing Rails migrations](testing_guide/testing_migrations_guide.md) guide
2018-03-17 18:26:18 +05:30
- [Post deployment migrations](post_deployment_migrations.md)
- [Background migrations](background_migrations.md)
- [Swapping tables](swapping_tables.md)
2019-12-26 22:10:19 +05:30
- [Deleting migrations](deleting_migrations.md)
2018-03-17 18:26:18 +05:30
2020-01-01 13:55:28 +05:30
### Debugging
- Tracing the source of an SQL query using query comments with [Marginalia](database_query_comments.md)
2020-03-09 13:42:32 +05:30
- Tracing the source of an SQL query in Rails console using [Verbose Query Logs](https://guides.rubyonrails.org/debugging_rails_applications.html#verbose-query-logs)
2020-01-01 13:55:28 +05:30
2018-03-17 18:26:18 +05:30
### Best practices
2016-09-13 17:45:13 +05:30
- [Adding database indexes](adding_database_indexes.md)
2018-03-17 18:26:18 +05:30
- [Foreign keys & associations](foreign_keys.md)
- [Single table inheritance](single_table_inheritance.md)
- [Polymorphic associations](polymorphic_associations.md)
- [Serializing data](serializing_data.md)
- [Hash indexes](hash_indexes.md)
- [Storing SHA1 hashes as binary](sha1_as_binary.md)
- [Iterating tables in batches](iterating_tables_in_batches.md)
2020-04-08 14:13:33 +05:30
- [Insert into tables in batches](insert_into_tables_in_batches.md)
2018-03-17 18:26:18 +05:30
- [Ordering table columns](ordering_table_columns.md)
- [Verifying database capabilities](verifying_database_capabilities.md)
- [Database Debugging and Troubleshooting](database_debugging.md)
- [Query Count Limits](query_count_limits.md)
2019-09-30 21:07:59 +05:30
- [Code comments](code_comments.md)
2019-12-26 22:10:19 +05:30
- [Creating enums](creating_enums.md)
2020-03-09 13:42:32 +05:30
- [Renaming features](renaming_features.md)
2018-03-17 18:26:18 +05:30
2019-12-21 20:55:43 +05:30
### Case studies
2019-10-12 21:52:04 +05:30
- [Database case study: Filtering by label](filtering_by_label.md)
2019-12-04 20:38:33 +05:30
- [Database case study: Namespaces storage statistics](namespaces_storage_statistics.md)
2019-10-12 21:52:04 +05:30
2019-07-31 22:56:46 +05:30
## Integration guides
- [Jira Connect app](integrations/jira_connect.md)
2020-03-09 13:42:32 +05:30
- [Security Scanners](integrations/secure.md)
2020-04-08 14:13:33 +05:30
- [Secure Partner Integration](integrations/secure_partner_integration.md)
2019-07-31 22:56:46 +05:30
2018-03-17 18:26:18 +05:30
## Testing guides
- [Testing standards and style guidelines](testing_guide/index.md)
- [Frontend testing standards and style guidelines](testing_guide/frontend_testing.md)
## Documentation guides
2018-11-08 19:23:39 +05:30
- [Writing documentation](documentation/index.md)
- [Documentation styleguide](documentation/styleguide.md)
2018-03-17 18:26:18 +05:30
- [Markdown](../user/markdown.md)
## Internationalization (i18n) guides
- [Introduction](i18n/index.md)
- [Externalization](i18n/externalization.md)
- [Translation](i18n/translation.md)
2020-04-08 14:13:33 +05:30
## Telemetry guides
2019-12-04 20:38:33 +05:30
2020-04-08 14:13:33 +05:30
- [Introduction](../telemetry/index.md)
- [Frontend tracking guide](../telemetry/frontend.md)
- [Backend tracking guide](../telemetry/backend.md)
2019-12-04 20:38:33 +05:30
2019-12-21 20:55:43 +05:30
## Experiment Guide
- [Introduction](experiment_guide/index.md)
2018-03-17 18:26:18 +05:30
## Build guides
- [Building a package for testing purposes](build_test_package.md)
2016-09-13 17:45:13 +05:30
## Compliance
- [Licensing](licensing.md) for ensuring license compliance
2019-03-02 22:35:43 +05:30
## Go guides
- [Go Guidelines](go_guide/index.md)
2019-09-04 21:01:54 +05:30
2019-10-12 21:52:04 +05:30
## Shell Scripting guides
- [Shell scripting standards and style guidelines](shell_scripting_guide/index.md)
2020-03-09 13:42:32 +05:30
## Domain-specific guides
- [CI/CD development documentation](cicd/index.md)
2019-12-21 20:55:43 +05:30
## Other Development guides
- [Defining relations between files using projections](projections.md)
2020-04-08 14:13:33 +05:30
- [Reference processing](./reference_processing.md)
2019-12-21 20:55:43 +05:30
2019-09-04 21:01:54 +05:30
## Other GitLab Development Kit (GDK) guides
- [Run full Auto DevOps cycle in a GDK instance](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/auto_devops.md)
- [Using GitLab Runner with GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/master/doc/howto/runner.md)