Вышел GitLab 10.6: CI/CD для GitHub и углубленная интеграция с Kubernetes

Картинка для привлечения внимания

Непрерывная интеграция, поставка и развертывание являются основополагающими принципами DevOps. В GitLab включена функциональность CI/CD, которая пришлась по душе как разработчикам и аналитикам, так и компаниям в целом.

Однако, было одно упущение — ранее вы не могли использовать GitLab CI/CD с GitHub. В данном релизе мы это исправили.

Представляем GitLab CI/CD для GitHub

Несмотря на то, что GitLab лучше всего себя показывает в качестве единого приложения для всего цикла разработки, мы стремимся к продуктивному взаимодействию с другими приложениями. Поэтому, начиная с данного релиза, мы добавляем интеграцию CI/CD с GitHub, а также возможность интеграции CI/CD с любыми другими внешними репозиториями, например BitBucket. Это нововведение нацелено на четыре основные группы пользователей.

Проекты с открытым исходным кодом

Теперь, если у вас есть публичный проект с открытым исходным кодом на GitHub, вы можете пользоваться бесплатным CI/CD на GitLab.com. Мы предоставляем публичным проектам возможности GitLab CI/CD наивысшего плана (Gold) бесплатно, как часть нашей поддержки open source. В то время как другие поставщики CI/CD разрешают выполнять лишь небольшое количество одновременных работ, GitLab.com позволяет проектам с открытым исходным кодом запускать сотни одновременных работ с 50 000 бесплатных минут для конвейеров CI в месяц.

Крупные компании

Из общения с нашими крупнейшими клиентами мы знаем, что в больших бизнесах множество команд зачастую использует множество различных инструментов. Наши клиенты хотят стандартизировать CI/CD на GitLab, однако код может храниться одновременно в GitLab, GitHub и других репозиториях. Начиная с данного релиза, компании смогут использовать общие конвейеры CI/CD для всех репозиториев. Это ключевая группа пользователей для нас, поэтому мы сделали CI/CD для GitHub частью нашего плана Premium.

Кто угодно на GitHub.com

Хотя GitLab спроектирован для использования SCM и CI/CD в одном приложении, мы понимаем, почему некоторые пользователи хотят использовать GitLab CI/CD с контролем версий GitHub. Поэтому в течение года GitLab CI/CD для GitHub будет частью плана Free GitLab.com. Это значит, что все пользователи GitHub, от персональных проектов и стартапов до малых и средних бизнесов, смогут пользоваться GitLab CI/CD бесплатно. В таком варианте изначально доступны 2000 бесплатных минут конвейеров CI с возможностью добавления собственных Runner’ов и апгрейда плана.

Пользователи Gemnasium

Как вы, возможно, помните, недавно мы приобрели Gemnasium. Мы очень рады такому пополнению наших рядов, однако также не забываем о пользователях, которые использовали Gemnasium и раньше: мы хотим предоставить им простой и безболезненный способ перехода на новую платформу. Мы уже поставляем функциональность Gemnasium как часть нашей встроенной системы безопасности, а теперь пользователи Gemnasium, которые используют его в связке с GitHub, смогут использовать GitLab CI/CD для проверок безопасности без необходимости переноса кода.

Улучшения Kubernetes для GitLab

Мы продолжаем интегрировать контейнеризацию (containerization) в GitLab. В версии 10.4 мы вывели в общий доступ интеграцию с кластерами Kubernetes и GKE. В версии 10.6 мы еще больше упрощаем использование Kubernetes с GitLab. Теперь вы в один клик можете провести развертывание GitLab Runner в подключенный кластер Kubernetes. Также вы можете мониторить ваш кластер Kubernetes и узнать IP адрес контроллера Ingress, подключенного к нему, не выходя из GitLab.

Приглашаем на наши встречи!

GitLab MVP badge

(MVP) этого месяца — Takuya Noguchi

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

Спасибо, Takuya! В знак благодарности мы отправили Takuya фирменные кофту, носки и тануки ручной работы с символикой GitLab.

GitLab CI/CD для внешних репозиториев (PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

Для использования GitLab CI/CD с репозиторием GitHub создайте новый проект GitLab и выберите GitHub на вкладке CI/CD for external repo. После того, как вы добавите файл .gitlab-ci.yml в ваш репозиторий (или подключите Auto DevOps), GitLab будет автоматически запускать конвейеры и обновлять статусы коммитов в GitHub.

Также вы можете подключиться к любому Git-репозиторию по URL и настроить вебхуки статуса вручную. Например, если вы используете Bitbucket, здесь вы можете почитать, как вручную настроить для него GitLab CI/CD.

В честь запуска этой функциональности мы предоставляем ее бесплатно, как часть плана GitLab.com Free, в течение года — до марта 2019.

GitLab CI/CD for external repos

Документация по CI/CD для внешних репозиториев

Быстрое развертывание GitLab Runner на кластер Kubernetes (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

С помощью GitLab вы можете взаимодействовать с кластерами Kubernetes, а также с легкостью устанавливать приложения, которые ваш проект сможет использовать.

В GitLab 10.6 мы добавляем возможность развертывания GitLab Runner в один клик напрямую в ваш кластер, после чего он сможет автоматически запускать работы вашего проекта без какой-либо дополнительной настройки.

Документация по установке Runner для Kubernetes

Quick deploy of GitLab Runner to Kubernetes cluster

Мониторинг кластеров Kubernetes (ULTIMATE, GOLD)

Kubernetes предоставляет разработчикам возможность с легкостью проводить развертывание и управление приложениями, не отвлекаясь на вопросы о том, как и откуда запускается их код. Однако, при этом необходимо отслеживать общую вместимость кластеров и балансировать между эффективным использованием памяти и оставлением пространства для роста.

GitLab 10.6 упрощает эту задачу: как используемые на текущий момент, так и все доступные вычислительные ресурсы подключенного кластера теперь отображаются напрямую. Например, если на досках развертывания отображается под, который не может запуститься, пользователи теперь смогут проверить метрики кластера и понять, были ли израсходованы все его ресурсы.

Документация по мониторингу кластеров Kubernetes

Kubernetes cluster monitoring

IP адрес Ingress на странице кластера Kubernetes (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

В GitLab 10.2 мы добавили возможность установки Ingress на кластер Kubernetes. После установки Ingress предоставляет публичный IP адрес, который можно использовать для внешнего доступа к развернутым приложениям.

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

Документация по IP адресу Ingress для кластеров Kubernetes

Ingress IP address on Kubernetes cluster page

Сопровождающие исходного проекта могут пушить в форк (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Распределение рабочего процесса по форкам — частое явление в проектах с открытым исходным кодом, таких как GitLab; при этом мерж-реквесты отправляются из форка в исходный проект.

Теперь сопровождающие (maintainers) исходного проекта могут напрямую вносить небольшие фиксы и делать перебазирование перед мержем, не тратя время на ненужные запросы-подтверждения, как раньше. Само собой, никто не ограничивает размер фиксов, и большие коммиты добавлять тоже можно.

Ранее это было невозможно, поскольку сопровождающие исходного проекта не получали автоматических разрешений на запись в форки. Теперь же, если у автора мерж-реквеста есть доступ на запись в исходную ветку, он может выдать сопровождающим право на запись в ветку мерж-реквеста, выбрав Allow edits from maintainers на его странице. После подключения этой опции пользователи с разрешением на мерж ветки исходного проекта смогут проводить пуш в ветку мерж-реквеста. По умолчанию эта опция отключена.

Документация по правам доступа для сопровождающих

Maintainers can push to MR from fork

Единая доска задач для группы в Libre и Free (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

Ранее эта функциональность была доступна только для планов Premium и Ultimate, и пользователи с такими подписками высоко оценили ее возможности. Пользователи Libre также выразили интерес к единой доске задач, так что в данном релизе мы добавляем ее и для них. В инстансах Libre и Starter теперь есть единая доска задач для каждой группы, тогда как единые доски задач для множества групп остаются привилегией Premium и Ultimate. Мы думаем, что это нововведение повысит привлекательность планов Libre и GitLab.com Free и надеемся получить обратную связь по данной функциональности от еще большего количества пользователей.

Документация по доскам задач

Single Group Issue Board in Libre and Free

Другие улучшения GitLab 10.6

Отчеты безопасности SAST на страницах конвейеров (ULTIMATE, GOLD)

Несколько месяцев назад мы добавили статическое тестирование безопасности приложений (SAST). Эта система автоматически ищет уязвимости во всех изменениях кода в мерж-реквесте, благодаря чему вы можете их исправить перед мержем и предотвратить их попадание в master и итоговый релиз.

Начиная с данного релиза полноценный отчет работы SAST отображается на странице CI/CD > Pipelines, что еще больше облегчает отслеживание рисков безопасности в конвейерах для разработчиков, инженеров и других заинтересованных лиц.

SAST security report on pipelines view

Документация по отчетам безопасности SAST на страницах конвейеров

SAST для приложений Java-Maven (ULTIMATE, GOLD)

Ранее в GitLab уже была добавлена поддержка популярных языков программирования, таких как Ruby, Python и JavaScript, как часть системы статического тестирования безопасности приложений (SAST).

В GitLab 10.6 мы добавляем поддержку Maven — довольно известного инструмента автоматизации для Java. Если вы уже пользуетесь SAST, вам не нужно ничего менять и перенастраивать — новые проверки появятся автоматически.

Полный лист поддерживаемых языков и фреймворков можно посмотреть здесь.

SAST for Java-Maven apps

Документация по SAST

Внешний контроль авторизации (PREMIUM, ULTIMATE, SILVER, GOLD)

В некоторых управляемых окружениях системы классификации проектов используются для контроля доступа к ним. Теперь их можно использовать и в GitLab.

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

Документация о внешнем контроле авторизации

Поддержка идентификации в DAST (ULTIMATE, GOLD)

Несколько релизов назад мы выпустили динамическое тестирование безопасности приложений Dynamic Application Security Testing (DAST). DAST позволяет динамически и автоматически проверять приложения на уязвимости безопасности в процессе разработки при помощи Review App — до мержа кода в master и релиза.

Раньше эта функциональность была доступна только для публичных страниц. В этом релизе вы можете определить учетные данные, которые DAST будет использовать для идентификации в вашем веб-приложении для симуляции злоумышленника, у которого есть доступ к разделам, доступным только авторизованным пользователям.

Authentication support for DAST

Документация о поддержке идентификации в DAST

Внешние настройки CI/CD в Starter и Bronze (STARTER, PREMIUM, ULTIMATE, BRONZE, SILVER, GOLD)

В GitLab 10.5 мы ввели возможность добавления внешних файлов конфигурации CI/CD в основной .gitlab-ci.yml вашего проекта. Эта возможность была доступна только для пользователей плана Premium в Gitlab на собственном сервере и для пользователей Silver на GitLab.com.

Мы получили много обратной связи от пользователей: очень многие просили добавить такую возможность в остальные подписки. Мы пошли навстречу и рады сообщить, что эта функциональность теперь доступна пользователям Starter на собственном сервере и Bronze — на GitLab.com. Возможность централизованно контролировать настройку конвейера и переиспользовать одно и то же определение в нескольких проектах очень ценна как для больших корпораций, так и для бизнесов меньшего размера.

Заметим, что согласно нашей политике об открытом исходном коде публичные проекты на Free GitLab.com имеют возможности, эквивалентные Gold подписке. Поэтому данная функциональность также будет доступна и для этих проектов.

Документация о включении дополнительных файлов конфигурации CI/CD

Обзор веток (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Проекты и команды растут, появляется все больше веток. С новой функциональностью обзора веток и фильтрацией списков веток стало гораздо проще найти нужную. Если за последние 3 месяца в ветку кто-то коммитил, она будет считаться активной.

Спасибо, Takuya Noguchi, за твой вклад!

Branches overview

Документация по веткам

Переход к внешнему трекеру задач (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

Чтобы упростить эту интеграцию, мы добавили в навигацию по проекту новую ссылку. Если у вас уже есть настроенный внешний трекер (Redmine, Jira, Bugzilla или Собственный Настроенный Трекер), в навигации по проекту будет отдельная ссылка, по которой вы сможете быстро перейти в эту внешнюю систему. Ссылка на задачу в GitLab остается там же, где и была, так что при желании вы сможете использовать оба трекера одновременно.

Navigate to external issue tracker

Документация о внешнем трекере задач

API импорта/экспорта проектов (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Проекты — очень важная часть GitLab, так как в них хранится вся ценная работа (включа репозиторий Git) и данные по организации работы команды (включая задачи и мерж-реквесты). С помощью существующего экспорта и импорта проектов GitLab можно легко переносить проекты между инстансами и внутри них.

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

За эту фичу спасибо Travis Miller!

Документация по API экспорта и импорта проектов

GitLab ChatOps (альфа) (ULTIMATE, GOLD)

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

В GitLab 10.6 мы хотели упростить автоматизацию этих рутинных действий, а также добавить их прямо в Slack. Для начала нужно добавить работу в YML GitLab CI и подключить интеграцию со слэш-командами Slack. Пользователи затем смогут писать слэш-команды, название работы CI и необходимые аргументы — работа запустится на runner, а результат вернется в Slack.

Документация по GitLab ChatOps

Метки в эпиках (ULTIMATE, GOLD)

В этом релизе мы добавили новую эффективную интерфейсную возможность: задачи и мерж-реквесты GitLab теперь поддерживают метки. За счет этого управлять ими становится легче: вы можете настроить управление точно под нужды своего проекта.

Вы можете назначать групповые метки в боковом меню эпика — так же, как для задач и мерж-реквестов. Кроме того, вы можете сортировать список эпиков группы по меткам (снова по аналогии с задачами и мерж-реквестами — опытные пользователи GitLab быстро узнают эту функциональность). Это позволит легко смешивать и сопоставлять эпики с разными категориями, предлагаемыми в меню поиска и фильтрации.

Labels in Epics

Документация об эпиках

API эпиков (ULTIMATE, GOLD)

Вместе с поддержкой меток, упомянутой выше, мы добавили поддержку API для эпиков. Вы можете получить список эпиков по определенным параметрам поиска и фильтрации в поисковой строке на странице эпиков в веб-интерфейсе. Сюда входит поиск эпика по названию или описанию, фильтр по автору и меткам, а также по дате создания или дате обновления.

Документация об API эпиков

API утверждения мерж-реквестов (STARTER, PREMIUM, ULTIMATE, BRONZE, SILVER, GOLD)

До этого релиза возможности API утверждения мерж-реквестов ограничивались утверждением или не-утверждением мерж-реквеста. В этом релизе появилась возможность полностью настраивать утверждение на уровне проекта или на уровне мерж-реквеста. Функционально получилось то же самое, что и в веб-интерфейсе GitLab.

С помощью API утверждений команды смогут проводить более детальное ревью кода и настраивать процессы утверждения исходя из своих потребностей. Вы можете использовать API для определения того, какие процессы будут происходить в веб-интерфейсе GitLab, а какие — вне его.

Документация об API утверждений мерж-реквестов

API обсуждений (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

В этом релизе мы добавили поддержку API в обсуждения задач, сниппетов и эпиков. Это значит, что все комментарии и обсуждения задач теперь доступны через API. Команды могут использовать API для получения более гибких, настраиваемых и специфических рабочих процессов, которые обычно не используются в основном веб-интерфейсе GitLab.

Поддержка API для комментариев и обсуждений мерж-реквестов выйдет в следующем релизе.

Документация об API обсуждений

Поддержка филиппинского, индонезийского и турецкого языков (LIBRE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

Также мы экстернализировали строки в заблокированные файлы репозитория (Repository Locked Files) для версии Premium и выше: теперь наши переводчики смогут добавлять больше языков в большее количество строк в GitLab.

Если вы тоже хотите поучаствовать в переводе GitLab, присоединяйтесь к нашему сообществу переводчиков.

Документация о локализации GitLab


Подробные release notes и инструкции по обновлению/установке можно прочитать в оригинальном англоязычном посте: GitLab 10.6 released with CI/CD for GitHub and deeper Kubernetes integration.

Над переводом с английского работали @rishavant и @sgnl_05.