Инструмент для управления версиями Git не только завоевал всемирную популярность среди разработчиков, но также лег в основу создания таких сервисов, как GitHub, GitLab и Bitbucket. Все три веб-инструмента представляют собой систему для хостинга Git-репозиториев, а также возможность совместного управления версиями исходного кода проекта. На первый взгляд может показаться, что все три системы максимально близки друг к другу. Однако каждый из сервисов обладает своим уникальным функционалом и возможностями. Также стоит отметить, что все три системы можно использовать в сервисе Apps облачного провайдера Timeweb Cloud. Сегодня мы сравним системы GitHub, GitLab, Bitbucket и рассмотрим отличия и возможности каждой системы.
GitHub появился в апреле 2008 года и представляет собой «социальную сеть» для IT-сообщества, в которой, помимо хранения git-репозиториев, участники могут предлагать и вносить свои правки, вести документацию по проектам и поддерживать общение. В 2018 году GitHub был приобретен корпорацией Microsoft.
GitHub используют для публикации своих собственных проектов не только независимые разработчики и малые команды, но и такие крупные компании, как Microsoft, Nginx, Meta, Yahoo, VMware и многие другие, которые публикуют свои проекты с открытым исходным кодом. Также на GitHub хранятся репозитории таких проектов, как ядро Linux, Rocket.Chat, Bootstrap.
В качестве основного интерфейса управления используется веб-интерфейс GitHub, который можно использовать вместо командной строки при работе с git, т.к. веб-интерфейс поддерживает весь функционал Git — создание и клонирование репозиториев, использование коммитов, в том числе откат до необходимых коммитов, работу с ветками, отправку изменений в репозиторий, merge requests и т.д. В частности, для работы с репозиторием его можно как клонировать (clone), так и сделать его форк (fork) — скопировать в свое рабочее пространство и продолжать свою собственную разработку.
В GitHub существуют два типа репозиториев: общедоступные и частные (приватные). Первый тип репозиториев доступен для всех пользователей, причем неважно, зарегистрированы ли они на GitHub или нет. Как правило, репозиторий делают открытым в двух случаях — когда необходимо поделиться с остальными пользователями своим проектом и для совместной разработки. Частные репозитории доступны только тем пользователям, которые зарегистрированы в GitHub. Также дополнительно необходимо разослать пользователям приглашения с доступом до необходимого приватного репозитория. Приватные репозитории, как правило, используются при работе над коммерческими проектами.
В качестве дополнительного функционала в GitHub присутствует сервис GitHub Actions, который представляет собой сервис непрерывной интеграции и доставки, он же конвейер CI/CD.
Также существует консольная утилита GitHub CLI, которая существенно расширяет функционал Git добавляя новые функции.
Для GitHub присутствует отдельный клиент под названием GitHub Desktop, который можно установить на Windows и macOS.
GitHub поддерживает множество различных интеграций со сторонними сервисами, включая такие, как Jira Cloud, Slack, Microsoft Teams, Atom, GitKraken. Также присутствуют расширения для IDE Visual Studio и Visual Studio Code. В самом GitHub присутствует свой магазин приложений, где можно найти различные расширения для интеграции непосредственно в репозиторий проекта. Также GitHub поддерживает стандарт авторизации OAuth.
Присутствует функционал по выпуску релизов, с помощью которого можно подготавливать готовые пакеты программного обеспечения с целью дальнейшего скачивания. Готовые артефакты и образы можно хранить в специальном хранилище — GitHub предоставляет свой собственный реестр образов под названием GitHub Packages, в котором можно хранить образы Docker, а также такие артефакты как npm, Maven, NuGet, RubyGems. С документацией сервиса можно ознакомиться по ссылке.
У GitHub присутствует несколько тарифных планов — Free, Team, Enterprise, которые отличаются опциями и лимитами, в частности на использование сервисов GitHub Actions и GitHub Packages. Однако для работы с базовым функционалом GitHub можно использовать совершенно бесплатно.
Сервис GitLab был запущен в 2011 году для внутренних потребностей независимой команды разработчиков, пока в 2014 году не перешел под крыло компании GitLab Inc, которая разрабатывает и поддерживает сервис до настоящего времени. Стоит отметить что компания GitLab Inc в 2021 году вышла на IPO, тем самым достигнув капитализации в 19 миллиардов долларов. Среди клиентов которые используют GitLab присутствуют такие гиганты, как Airbus, Boeing, Nasdaq, Siemens, Nvidia, Goldman Sachs, NASA, IBM, Sony и многие другие.
GitLab — это веб-приложение для хостинга git-репозиториев и совместной разработки. Несмотря на то, что GitLab и GitHub максимально похожи по функционалу у них есть как минимум два главных отличия:
GitLab — это self-hosted-решение, то есть его можно развернуть на своей собственной инфраструктуре, в то время как GitHub — облачное решение, которое хранит все данные на стороне компании Microsoft.
GitLab сильно «заточен» под использование в DevOps-процессах, а именно в CI/CD, и позволяет использовать их без настройки дополнительного функционала, в то время как в GitHub необходимо использовать дополнительный инструмент GitHub Actions.
GitLab активно используется в корпоративных средах благодаря возможности отдельного развертывания платформы на своем оборудовании, а также поддерживаемой интеграции с платформой Kubernetes, чего нет у системы GitHub.
Так же, как и GitHub, GitLab полностью опирается на систему контроля версий Git и поддерживает весь без исключения функционал Git. По аналогии с GitHub, можно не использовать консольную утилиту git
и вести разработку прямо в веб-интерфейсе сервиса.
Среди других функций можно выделить GitLab container registry — реестр для хранения Docker-образов, который непосредственно интегрирован в GitLab. Реестром можно пользоваться во время процессов CI/CD.
Присутствует функционал GitLab Compliance для оценки соответствия общепринятым стандартам безопасности для процесса разработки.
GitLab уделяет информационной безопасности повышенное внимание — сервис поддерживает такой функционал как SAST, DAST, сервис по оценке качества кода, сервис по обнаружению секретов в исходном коде и конфигурационных файлах, Фаззинг-тестирование, защита API, SCA-анализ (Software composition analysis), сканирование образов контейнеров. В документации GitLab представлено обширное описание всех поддерживаемых функций безопасности, с которыми можно ознакомиться по ссылке.
GitLab как сервис поддерживает полный цикл методологии DevOps — начиная от написания кода (в GitLab встроена веб-версия IDE Visual Studio Code, которая позволяет писать код прямо в интерфейсе браузера) и его хранения до выкатки готового сервиса в Production-окружение. Несмотря на упор в сторону DevOps-практик, GitLab можно использовать просто как место для хранилища вашего репозитория Git. Как и в сервисе GitHub, в GitLab присутствуют два типа репозиториев — общедоступные и частные (приватные). Их настройка и функциональность идентичны GitHub.
Существует две версии GitLab — Community Edition (бесплатная версия) и Enterprise Edition (коммерческая версия). В бесплатной версии доступен весь базовый функционал, включая работу с репозиториями и функционалом CI/CD, который ограничивается использованием в 400 вычислительных минут в месяц. Enterprise Edition подразделяется на тарифы. Существует два типа платных тарифов: Premium и Ultimate. Каждый из доступных тарифов поддерживает свой собственный функционал, с которым можно ознакомиться по ссылке.
vds
В последнее время становится популярным еще один хостинг для git-репозиториев — Bitbucket. Сервис разработан в 2008 году австралийской компанией Atlassian, которая создала два известных IT-продукта — Jira и Confluence.
Bitbucket имеет то же предназначение, что и два его главных конкурента GitHub и GitLab, — хранение git-репозиториев и управление ими. Bitbucket также использует git в качестве контроля версий. Однако отличие Bitbucket заключается в том, что сервис «заточен» на использование приватных репозиториев. Чтобы использовать Bitbucket полноценно, необходимо оплатить подписку. Без нее сервисом можно пользоваться бесплатно, но тогда накладываются ограничения — над проектом могут работать максимум до пяти пользователей и доступно максимум 2 гигабайта места на жестком диске для хранения данных.
Первое и самое главное отличие от системы GitHub заключается в простой интеграции Bitbucket c Jira, Trello и Confluence, что неудивительно, так как все эти продукты разрабатывает одна и та же компания. Помимо этого Bitbucket обладает следующими эксклюзивными функциями:
Интегрированные отчеты для отображения результатов сканирования кода на безопасность
Поддержка семантического поиска для быстро поиска данных
Настройка прав для процессов CI/CD
Автоматизированное управление изменениями при помощи функционала Jira Service Management
Интеграция с сервисом Opsgenie для устранения инцидентов
Более подробно ознакомиться с отличиями Bitbucket от GitHub можно на соответствующей странице.
Развернуть Bitbucket можно двумя способами — в облачной платформе Bitbucket Cloud и при помощи Bitbucket Data Center. В первом случае Bitbucket будет развернут в облачной инфраструктуре компании Atlassian, а для доступа будет предоставлен уникальный URL-адрес. При использовании метода Bitbucket Data Center, Bitbucket будет развернут в одном из облачных провайдеров на выбор — AWS или Microsoft Azure. В этом случае пользователь заранее арендует у выбранного облачного провайдера необходимые ресурсы и использует шаблон для развертывания готового экземпляра Bitbucket. Стоит отметить, что в отличие от GitLab, Bitbucket нельзя развернуть на своем железе.
Также стоит выделить функционал, который доступен пользователям в бесплатной версии программы:
Дисковое пространство для всех репозиториев объемом 2 ГБ.
Безлимитное количество общедоступных репозиториев.
Возможность создания вики-страниц для каждого репозитория.
Помимо бесплатного тарифа Bitbucket предлагает еще два тарифа — Standard и Premium. Тарификация привязана к пользователям. Чем больше пользователей в вашей команде, тем дешевле будет плата за одного пользователя. Ознакомиться с тарифными планами можно по ссылке.
Для наглядного сравнения всех трех систем воспользуемся таблицей ниже.
GitHub |
GitLab |
Bitbucket |
|
Год создания |
2008 |
2011 |
2008 |
Поддерживаемые форматы репозиториев |
Git |
Git |
Git |
Методы управления |
Веб-интерфейс Консольный клиент |
Веб-интерфейс Консольный клиент |
Веб-интерфейс Консольный клиент (неофициальный) |
Возможность развернуть на своем сервере (self hosted) |
Нет |
Да |
Нет |
Интеграция со сторонними сервисами |
Jira Cloud Slack Microsoft Teams |
Jira YouTrack Harbor Jenkins Telegram |
Jira Trello ConfluenceSlack AllAnswered knowledge management system Amazon CodeGuru reviewer |
Дополнительный функционал |
Поддержка совместного кодинга |
Встроенный функционал для обеспечения безопасности репозитория Встроенный реестр для хранения Docker образов |
Интегрированные отчеты для отображения результатов сканирования кода на безопасность |
Поддержка CI/CD |
Да (реализация через сторонний функционал GitHub Actions) |
Да (встроенный функционал) |
Да (реализация через сторонний функционал Bitbucket Pipelines) |
Наличие плагина для IDE |
Да |
Нет |
Да (неофициальный плагин) |
Тарифы |
Team 4$ за 1 пользователя/месяц |
Premium 29$ за 1 пользователя/месяц |
Standard $3 за 1 пользователя/месяц |
Бесплатное использование |
Да (доступен базовый функционал) |
Да (доступен базовый функционал) |
Да (доступен базовый функционал) |
Несмотря на то, что все три сервиса максимально похожи, принято разделять их для использования в конкретных задачах. В частности, GitHub хорошо подходит для разработки и хранения личных проектов, а также для оформления портфолио, которое пригодится при трудоустройстве. Стоит отметить, что практически все крупные проекты с открытым исходным кодом, включая разнообразные утилиты, хранятся именно в GitHub, где также можно ознакомиться с документацией проекта, задать свои вопросы и при желании предложить свои правки.
GitLab идеально подходит для работы в корпоративной среде благодаря тому, что его можно развернуть на своей инфраструктуре. Это дает колоссальное преимущество, так как ваш инстанс GitLab не будет зависеть от внешних «рычагов давления», и вы сможете продолжать использовать продукт без боязни потерять к нему доступ. Также GitLab обладает всем необходимым функционалом для работы в DevOps-командах. Его богатые возможности могут покрыть потребности вашего проекта без необходимости покупки или использования стороннего программного обеспечения.
Bitbucket может хорошо подойти для небольших команд, например, в стартапах, где объем команды и проекта еще не так велики. Стоит также отметить, что Bitbucket отлично интегрируется с такими программами, как Jira и Confluence, в связи с чем сервис можно рассматривать в корпоративной среде, где активно используют эти продукты.
Разверните self-hosted GitLab на собственном VDS
Сегодня мы подробно рассмотрели три самых популярных веб хостинга для хранения git-репозиториев. Каждый сервис обладает своими уникальными функциями и предназначен для определенных целей в зависимости от ваших потребностей.