Паспорт проекта
- Тип
- Технические модули
- Задача
- Заявленная цель — упростить работу над GitLab и дать быстрый локальный просмотр изменений, а при росте числа служб сделать интеграцию и ответственность за…
- Для кого
- Участники разработки GitLab, которые пишут код, проверяют чужие изменения или тестируют его.
- Технологии
- Ruby
- Что потребуется
- Для установки нужны Git и make, зависимости управляются mise.
- Основание
- 116 первоисточников
За 30 секунд
Заявленная цель — упростить работу над GitLab и дать быстрый локальный просмотр изменений, а при росте числа служб сделать интеграцию и ответственность за компоненты понятнее.
GDK запускает, останавливает и проверяет службы, обновляет окружение, синхронизирует зависимости с выбранной веткой и помогает просматривать изменения локально.
Результат — управляемая установка GitLab для разработки, запущенные или остановленные службы, сгенерированные конфигурации и локальный предварительный просмотр изменений.
Как это работает
На входе
Входы — рабочие репозитории и выбранные ветки, переопределения gdk.yml, версии инструментов в .tool-versions, ERB-шаблоны и описания компонентов GDK.rb. Для уже описанного компонента добавляемую legacy-службу требуется явно связать с ним. Shell export не является надёжным способом передать переменные из терминала в изолированные runit-службы.
Механизм
GDK запускает, останавливает и проверяет службы, обновляет окружение, синхронизирует зависимости с выбранной веткой и помогает просматривать изменения локально. Для диагностики есть doctor и журналы; predictive запускает выбранные по изменениям тесты и линтеры, но его лимит времени может исключать медленные RSpec-тесты. Компоненты GDK.rb связывают службы с владельцами и должны иметь smoke tests готовности.
Результат
Результат — управляемая установка GitLab для разработки, запущенные или остановленные службы, сгенерированные конфигурации и локальный предварительный просмотр изменений. Дополнительные выходы — диагностика, журналы и отчёт о среде; при замене конфигурации исходная версия переносится в .backups. Это документированные выходы, а не результат выполненной здесь установки.
Что важно понять
Техническое устройство
Ruby/Bash/Make-оркестратор управляет командами служб через runit. mise выбирает версии инструментов для подпроектов; gdk.yml переопределяет defaults, а ERB-шаблоны формируют конфигурации. Ruby-службы поддерживают setup/install/update hooks. GDK.rb объединяет службы, шаблоны и настройки по feature category, с legacy_service во время перехода и smoke tests. Sandbox сохраняет head, копирует рабочие данные и подставляет симлинки, чтобы службы не зависели от его состояния.
Для чего создано
Заявленная цель — упростить работу над GitLab и дать быстрый локальный просмотр изменений, а при росте числа служб сделать интеграцию и ответственность за компоненты понятнее. Документированные ожидания по скорости не считаются измеренным ускорением.
Для кого
Участники разработки GitLab, которые пишут код, проверяют чужие изменения или тестируют его. Для владельцев компонентов предусмотрены декларативные определения и smoke tests; это описанные роли, без установленного числа пользователей.
Сценарии использования
Локально просмотреть изменения из ветки; обновить зависимости под неё; проверить состояние и журналы одной службы; временно работать со схемой БД в sandbox; добавить службу к компоненту и проверить её готовность. Дополнительно описаны несколько локальных cells с сокращёнными возможностями. Полнота миграции всех служб и успешный запуск этих сценариев здесь не проверены.
Идея решения
Согласовывать локальный код, версии зависимостей, конфигурацию и процессы как одну среду разработки, сохраняя возможность управлять отдельной службой. Декларативная граница компонента добавляет связь с командой-владельцем и проверкой готовности; это конкретная схема рабочего окружения, а не повторное описание общей платформы GitLab.
Какую задачу описывает источник
Названы две инженерные задачи: рост количества служб усложняет их интеграцию и распределение ответственности; для предварительного просмотра изменений приходится ждать Review App. GDK предлагает локальное окружение, а переход к компонентам должен упростить владение службами. Рыночный спрос или достигнутые показатели этим не доказываются.
Что известно из описания
Что потребуется
- Для установки нужны Git и make, зависимости управляются mise.
- Обычный режим — установка на рабочую машину; remote-среды технически возможны, но архитектурный документ не объявляет их поддерживаемыми.
- Набор выбранных служб требует соответствующих зависимостей; многие службы должны включаться явно.
- Для поддерживаемой установки README указывает минимум 16 GB RAM и 30 GB диска.
Что учитывать
- Миграция GDK.rb не завершена по датированному тексту.
- Обновление может спрятать незакоммиченные изменения в stash, переключить ветку и выполнить миграции БД.
- kill затрагивает runsv и вне текущего GDK; cleanup может удалить mise-инструменты других проектов.
- Sandbox пока не обнаруживает отсутствующие каталоги.
- Vite не поддерживается, а Rspack указан основным frontend bundler.
- Публикация локальных портов или туннелей с рабочей машины прямо не рекомендуется из-за риска исполнения заданий на хосте.
Из первоисточников
Редакционный обзор NeoBridge Insight по материалам источников ниже. Права на исходные тексты, код и изображения принадлежат их правообладателям. Условия использования указаны в первоисточниках.
Независимое тестирование проекта не проводилось.
gitlab.com
- gitlab-org/gitlab-development-kit↗
- README.md↗
- doc/.vale/gitlab_base/spelling-exceptions.txt↗
- doc/_index.md↗
- doc/advanced.md↗
- doc/configuration.md↗
- doc/contributing/_index.md↗
- doc/contributing/architecture.md↗
- doc/contributing/components.md↗
- doc/contributing/maintenance.md↗
- doc/contributing/personas.md↗
- doc/contributing/runit.md↗
- doc/contributing/sandbox_design.md↗
- doc/contributing/support_process.md↗
- doc/contributing/telemetry.md↗
- doc/contributing/tool_upgrades.md↗
- doc/gdk_commands.md↗
- doc/gdk_in_a_box.md↗
- doc/howto/_index.md↗
- doc/howto/ai/_index.md↗
- doc/howto/ai/gitlab_ai_gateway.md↗
- doc/howto/announcements.md↗
- doc/howto/asset_proxy.md↗
- doc/howto/browse.md↗
- doc/howto/cells.md↗
- doc/howto/continuous_vulnerability_scanning.md↗
- doc/howto/database_load_balancing.md↗
- doc/howto/database_load_balancing_with_service_discovery.md↗
- doc/howto/dependency_proxy.md↗
- doc/howto/elasticsearch.md↗
- doc/howto/email.md↗
- doc/howto/end_to_end_test_configuration.md↗
- doc/howto/feature_flags.md↗
- doc/howto/flux.md↗
- doc/howto/gdkrc.custom.md↗
- doc/howto/geo-docker-registry-replication.md↗
- doc/howto/geo.md↗
- doc/howto/geo/advanced_installation.md↗
- doc/howto/git_push_options.md↗
- doc/howto/gitaly.md↗
- doc/howto/gitlab-oauth2.md↗
- doc/howto/gitlab_observability_backend.md↗
- doc/howto/gitlab_version.md↗
- doc/howto/gitpod.md↗
- doc/howto/google-oauth2.md↗
- doc/howto/hashicorp_vault.md↗
- doc/howto/kerberos.md↗
- doc/howto/kubernetes/_index.md↗
- doc/howto/kubernetes/k3d.md↗
- doc/howto/kubernetes/minikube.md↗
- doc/howto/kubernetes/tips_and_troubleshooting.md↗
- doc/howto/kubernetes/useful_commands.md↗
- doc/howto/kubernetes_agent.md↗
- doc/howto/ldap.md↗
- doc/howto/lefthook.md↗
- doc/howto/lfs.md↗
- doc/howto/load_testing.md↗
- doc/howto/local_network.md↗
- doc/howto/mattermost.md↗
- doc/howto/mise.md↗
- doc/howto/nfs.md↗
- doc/howto/nginx.md↗
- doc/howto/object_storage.md↗
- doc/howto/oidc_okta.md↗
- doc/howto/openbao.md↗
- doc/howto/opentelemetry_collector.md↗
- doc/howto/package.md↗
- doc/howto/package_metadata_synchronization.md↗
- doc/howto/pages.md↗
- doc/howto/pgvector.md↗
- doc/howto/postgresql.md↗
- doc/howto/preview_gitlab_changes.md↗
- doc/howto/prometheus/_index.md↗
- doc/howto/prometheus/alerts.md↗
- doc/howto/prometheus/third_party_access.md↗
- doc/howto/pry.md↗
- doc/howto/public_gdk.md↗
- doc/howto/puma.md↗
- doc/howto/rails_console.md↗
- doc/howto/rails_web.md↗
- doc/howto/redis.md↗
- doc/howto/redis_cluster.md↗
- doc/howto/registry.md↗
- doc/howto/remote_workstation.md↗
- doc/howto/repository_graph.md↗
- doc/howto/rtx.md↗
- doc/howto/runner.md↗
- doc/howto/saml.md↗
- doc/howto/saml_okta.md↗
- doc/howto/serverless.md↗
- doc/howto/service_desk_mail_room.md↗
- doc/howto/shell_completion.md↗
- doc/howto/simulate_storage.md↗
- doc/howto/siphon.md↗
- doc/howto/smartcard.md↗
- doc/howto/snowplow_micro.md↗
- doc/howto/ssh.md↗
- doc/howto/update_external_dependencies.md↗
- doc/howto/vagrant.md↗
- doc/howto/workhorse.md↗
- doc/howto/x509_self_signed_commits.md↗
- doc/howto/zoekt.md↗
- doc/impact/18_1.md↗
- doc/impact/_index.md↗
- doc/install_alternatives.md↗
- doc/troubleshooting/_index.md↗
- doc/troubleshooting/apple_mx_machines.md↗
- doc/troubleshooting/git.md↗
- doc/troubleshooting/mise.md↗
- doc/troubleshooting/node_js.md↗
- doc/troubleshooting/postgresql.md↗
- doc/troubleshooting/rspack.md↗
- doc/troubleshooting/ruby.md↗
- doc/troubleshooting/running_tests.md↗
- doc/troubleshooting/vite.md↗
- doc/troubleshooting/webpack.md↗

Комментарий NeoBridge
Общая справка
Что стоит уточнить
Основания и справочные материалы
Ruby ↗