Темой этой публикации будет один из продуктов для хостинга исходного кода проектов. А именно GitLab. Мы затронули эту тему, так как она актуальна для devops. Существует несколько решений с подобным функционалом. Опытные разработчики расставляют их в порядке популярности так:

  1. GitHub
  2. BitBucket
  3. GitLab

githubПервое место обеспечено GitHub за счет огромного комьюнити, больших возможностей интеграции, а также возможностях заявить о себе и своих проектах. Однако в бесплатной версии нет возможности создания приватных репозитариев. Поэтому поиск продолжается.

BitBucket имеет возможность бесплатно использовать неограниченное количество приватных репозитариев, более удобен для работы команды. Является продуктом Atlassian, вследствие чего имеет тесную интеграцию с ними. Имеет тенденцию к перемещению в облако. Идем дальше.

GitLab также имеет бесплатные приватные репозитарии. Может быть установлен локально. И не смотря на то, что это сравнительно молодой проект, который имеет немного внешних интеграций, он выглядит достаточно привлекательным для внутреннего использования.

GitLab включает в себя управление Git репозитарием, отслеживание задач, code review, IDE, activity streams, wikis, и многое другое.

GitLab также имеет встроенные CI и CD средства для тестирования, сборки, и развертывания Вашего решения, включая удобные инструменты для мониторинга процесса на всех этапах. Вы будете уверены в том, что Ваш код будет работать в различных окружениях.

Разработчики проекта уверены в том, что инструменты должны быть простыми, интуитивно понятными и должны работать из коробки. GitLab имеет установочные пакеты для всех популярных дистрибутивов Linux, устанавливается  за минуты, имеет дружественный интерфейс и детальную документацию.

В качестве преимуществ в работе с GitLab профессионалы отмечают:

  1. Наличие Issues для проектов и Snippets (аналог Gist) на приватном сервере.
  2. Удобство работы с Merge Requestsв графическом представлении
  3. поддержка Docker и инструмент для Continuous Integration из коробки.
  4. ключи для чтения репозитория во время деплоя
  5. Наличие преднастроек для интеграции с другими сервисами (JIRA, Asana, HipChat и т.д.)

Среди нового функционала GitLab стоит упомянуть об автоматическом развертывании через планировщик контейнеров. С включением этого функционала появляется кнопка, нажимая на которую Вы создаете merge-requqest содержащий сценарий развертывания с помощью докер. В шаблоне для merge-request’а имеется настройка ReviewApps, которая позволяет посмотреть на работу новой фитчи до того, как будет принят merge-request.

Также полезен Web-терминал для динамических сред, созданных для проектов, с которыми Вы ведете работу. Доступ к нему Вы можете получить прямо со страницы проекта. При нажатии на кнопку подключения GitLab установит SSH соединение с требуемым сервером и отобразит консоль в окне браузера.

С появлением глобальных git-хуков больше не нужно копирование правил и триггеров для пушей из проекта в проект. Один раз созданные хуки в директории hooks/<hook_name>.d/ будут доступны для каждого проекта в инстансе GitLab. Также появилась возможность создания упорядоченных хуков, где последующие хуки не выполняются, пока предыдущий не  завершится успехом.

GitLab 8.16 можно развернуть в Google Container Engine. В нём сразу будет автомасштабируемое CI, автоматическое развертывание в ваш собственный кластер Kubernetes, чаты Mattermost, поддержка приватного реестра Docker и настройка сертификатов с помощью Let’s Encrypt.

Также появилась  возможность Мониторинга GitLab с помощью Prometheus. Для ее использования на данный момент необходима некоторая переконфигурация GitLab, однако в версии GitLab 9.0, которая запланирована на 22 марта 2017 года, мониторинг будет включен по умолчанию.

Что ж, ждем новых улучшений.