Вышел GitLab 10.8: зеркалирование пушей в открытом доступе и инкрементное развертывание

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

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

Больше уверенности при развертывании

Выпуск новой функциональности всегда сопряжен с волнением, ведь даже при самом строгом тестировании присутствует риск непредвиденных осложнений. Наша новая фича инкрементного развертывания (Incremental Rollouts) позволяет проводить развертывание кода только для определенного подмножества пользователей. Теперь вместо того, чтобы выкатывать обновления сразу для всех пользователей, вы можете постепенно увеличивать количество подов Kubernetes, на которые проводится развертывание. В случае каких-либо осложнений, вы можете откатить изменения до того, как они затронут всю пользовательскую базу целиком. Это нововведение предоставляет дополнительный уровень защиты пользователей от непредвиденных ошибок, что в идеале позволит вам чаще проводить развертывание.

Зеркалирование пушей теперь в открытом доступе

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

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

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

Ускорение работы с уязвимостями

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

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

Ждем вашего ответа!

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

Спасибо за ваше участие!

GitLab MVP badge

MVP этого месяца — Alexis Reigel

Alexis добавил очень полезную возможность создания общих CI Runner’ов для групп. Эту функциональность пользователи просили более года, и вклад Alexis наконец позволил претворить ее в жизнь. Теперь управлять Runner’ами проектов определенной группы стало намного проще.

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

Инкрементное развертывание (PREMIUM, ULTIMATE, SILVER, GOLD)

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

В GitLab 10.8 мы добавляем возможность инкрементного развертывания кода на 10, 25, 50 и 100 процентов ваших подов. Вы также можете применять этот подход в Auto DevOps с помощью переменной окружения INCREMENTAL_ROLLOUT_ENABLED.

Incremental rollout deployments

Документация по инкрементному развертыванию

Зеркалирование пушей теперь в открытом доступе (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

Ранее зеркалирование пушей было доступно в GitLab Starter, а теперь еще и в Core.

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

Push Mirroring now open source

Интерактивная обратная связь в отчетах безопасности (альфа-версия) (ULTIMATE, GOLD)

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

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

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

Interactive feedback in security reports (alpha)

Нечеткий поиск файлов для Web IDE (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Мы добавили нечеткий (fuzzy) поиск файлов в Web IDE с целью упрощения навигации для крупных проектов. Нечеткий поиск доступен по комбинации клавиш Cmd + p/Ctrl + p.

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

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

Fuzzy file finder in the Web IDE

Коммит отдельных файлов в Web IDE (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Мы добавили возможность добавления (stage) отдельных файлов в коммит в Web IDE, что позволяет совершать коммиты небольшого масштаба. Внесенные изменения добавляются в соответствующий список unstaged changes, после чего из этого списка вы можете выбрать нужные файлы и добавить их в список staged changes — эти файлы станут частью следующего коммита.

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

Stage and commit by file in the Web IDE

Графики выполнения задач для групп (PREMIUM, ULTIMATE, SILVER, GOLD)

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

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

По аналогии с проектными графиками выполнения задач, графики для групп учитывают как количество задач, так и их вес. Кроме того, групповые графики учитывают задачи, связанные с майлстоуном, для всех подгрупп соответствующей группы.

Документация по графикам выполнения задач

Group milestone burndown chart

Метрики Prometheus выходят в общий доступ, включены по умолчанию (CORE, STARTER, PREMIUM, ULTIMATE)

GitLab часто является ключевым элементом цикла поставки ПО, поэтому важно быть уверенным в его стабильной и корректной работе. В предыдущих релизах мы добавили метрики Prometheus для зависимостей Redis и Postgres, а также несколько экспериментальных метрик в версии 9.3. С тех пор мы покрыли метриками ещё некоторые части нашей кодовой базы, а также уменьшили негативное влияние сбора метрик на производительность. Теперь мы используем эти метрики для мониторинга сервиса GitLab.com.

Как следствие прошедших нововведений, мы выводим мониторинг Prometheus в общий доступ (GA, general availability) начиная с версии 10.8. Для всех новых установок GitLab мониторинг будет включен по умолчанию. Также мы выпустили пробную версию приборной панели Grafana для наглядной визуализации метрик.

Документация по мониторингу Prometheus в GitLab

GitLab Prometheus service metrics now GA, on by default for new installations

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

Подтверждение обновлений политики использования (CORE, STARTER, PREMIUM, ULTIMATE)

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

При включении этой фичи админом инстанса, пользователи будут обязаны просмотреть Условия Использования и согласиться с ними перед продолжением работы с GitLab. До тех пор, пока пользователь не подтвердит это сообщение, его доступ к GitLab через веб, API и Git будет заблокирован.

Сообщение с Условиями Использования может быть полностью изменено в настройках админа. Также, поскольку это сообщение создается на основе GitLab-flavored Markdown, в нем могут даже содержаться ссылки на другие страницы.

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

Документация по подтверждению обновлений политики использования

Меню поиска и фильтрации по эпикам дорожной карты (ULTIMATE, GOLD)

Меню поиска и фильтрации — очень полезная часть интерфейса, хорошо знакомая пользователям и используемая по всему GitLab. Мы решили использовать эту функциональность для поиска и фильтрации эпиков дорожной карты (roadmap) при ее просмотре.

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

Epic roadmap search and filter bar

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

Обсуждения в API (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

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

SAST для PHP и Java Gradle (ULTIMATE, GOLD)

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

В GitLab 10.8 проекты, написанные на PHP и Java с Gradle могут автоматически проверяться на уязвимости безопасности. Для этого даже не нужно определять язык — он определяется в рантайме автоматически.

SAST for PHP and Java Gradle

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

Определение переменных для ручных конвейеров (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

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

Specify variables for manual pipelines

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

Мерж-коммиты в виджете мерж-реквеста (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

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

Merge commit in merge request widget

Документация о мерж-реквестах

Системные заметки для добавления веса задачи (STARTER, PREMIUM, ULTIMATE, BRONZE, SILVER, GOLD)

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

System note for adding issue weight

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

Вес задачи и статус блокировки в экспорте CSV (STARTER, PREMIUM, ULTIMATE, BRONZE, SILVER, GOLD)

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

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

Мерж-реквесты GitLab в Jira Development Panel (PREMIUM, ULTIMATE, SILVER, GOLD)

В этом релизе мы улучшили интеграцию с Jira Development Panel: теперь она включает мерж-реквесты GitLab. Это значит, что, если вы используете специальную интеграцию, в боковой панели связанной задачи Jira вдобавок к коммитам и веткам Gitlab будут отображаться еще и мерж-реквесты.

Обратите внимание, что в интерфейсе Jira мерж-реквесты называются «pull requests».

GitLab merge requests in Jira Development Panel

Документация по интеграции с GitLab Jira Development Panel

Уведомления на email для комментариев по эпикам (ULTIMATE, GOLD)

В предыдущем релизе мы представили треды комментариев для эпиков. В этом релизе мы сделали совместную работу над эпиками еще более похожей на остальные части GitLab — за счет добавления email уведомлений. Как и ранее в задачах и мерж-реквестах, вы будете получать уведомления на email (указанный вами в настройках GitLab) после соответствующей активности в эпике. Например, когда член команды упоминает вас в описании эпика или комментарии к нему, вы получите уведомление, если вы настроили свои уведомления для группы этого эпика на уровень Participate или выше.

Epic email notifications

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

Улучшенное отображение длинных описаний коммитов (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

Improved display of long commit messages

Поддержка встроенных сниппетов (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Сниппеты полезны для обсуждения части кода. Теперь вы можете встраивать публичные сниппеты в ваш веб-сайт. Это очень помогает в документировании, дополнении поста в блоге примерами кода или на личном сайте. За эту возможность спасибо Haseeb.

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

API для языков проекта (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

С помощью нового API для языков вы сможете собирать статистику по языкам проекта. Это может быть полезно для отчетов или исследований — например, понять, какие языки программирования чаще всего используются в вашей организации или в проекте с открытым исходным кодом на GitLab.com. Спасибо, Roger, за твой вклад!

Документация по API для языков проекта

GitLab Runner для групп (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

У GitLab Runner-ов есть два типа настройки: для целого инстанса (shared) или на уровне проекта (specific). Однако, иногда существует необходимость предоставить набор Runner-ов целой группе проектов, не предоставляя доступ к ним кому-либо извне. На GitLab.com, например, это хорошо работает за счет прямой связи между группами и организациями.

Начиная с GitLab 10.8 вы сможете соединять ваши GitLab Runner с конкретной группой — и каждый проект этой группы получит возможности CI/CD без каких-либо дополнительных настроек. А новые проекты будут получать все преимущества групповых Runner-ов сразу после создания. За эту фичу спасибо Alexis.

GitLab Runners for groups

Документация по настройке GitLab Runners

Поддержка политики тестового окружения для Auto DevOps (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

До этого релиза Auto DevOps по умолчанию использовал модель непрерывного развертывания: пуш в production происходил автоматически каждый раз после запуска конвейера в ветке master. Это очень полезно, но иногда для завершенности приложения или доступности продакшн-окружения нужно использовать дополнительное тестовое окружение. Только после прохождения всех проверок на нем можно вручную запускать развертывание в продакшн.

В шаблоне Auto DevOps раньше уже поддерживалась такая возможность, но она не была включена по умолчанию. Если кто-то хотел воспользоваться прогоном через тестовое окружение, нужно было отдельно создать файл .gitlab-ci.yml.

Начиная с GitLab 10.8, шаблоны Auto DevOps позволят пользователям включать staging с помощью переменной окружения. Вы можете указать STAGING_ENABLED для целой группы, для одного проекта или даже для конкретного запуска. Развертывание в production нужно будет запускать вручную — и можно будет сделать это в нужное время.

Staging environment policy support for Auto DevOps

Документация о политике развертывания Auto DevOps

Шаблоны проектов теперь работают с Auto DevOps (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

GitLab 10.8 включает усовершенствованные версии шаблонов Rails, Spring и Express, так что при создании новых проектов вы можете использовать все возможности Auto DevOps. Используя эти улучшенные шаблоны, вы сможете пройти путь от идеи до производства за считанные минуты.

Project templates now work with Auto DevOps

Документация о создании шаблонов, основанных на проектах

Улучшения Geo (PREMIUM, ULTIMATE, SILVER, GOLD)

  • Geo поставляется с Git 2.16.3, что значительно уменьшит время синхронизации репозиториев с большим количеством ссылок.
  • После первоначального клонирования репозитория вторичный нод Geo будет выполнять переупаковку (git pack-objects), чтобы освободить место на диске. Также он будет регулярно выполнять сборку мусора (git gc).
  • При включенных проверках репозитория Geo будет периодически запускать git fsck на каждом репозитории вторичного нода.
  • Улучшены метрики Geo Prometheus: стало проще находить репозитории с несовместимыми контрольными суммами.

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


Подробные release notes и инструкции по обновлению/установке можно прочитать в оригинальном англоязычном посте: GitLab 10.8 released with incremental rollouts, plus open source push mirroring.

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