Мы с радостью представляем вам новую версию GitLab со множеством нововведений и улучшений! В данном релизе мы улучшили автоматизацию релизов, вывели в общий доступ ранее платную функциональность, ускорили исправление уязвимостей безопасности и многое другое.
Выпуск новой функциональности всегда сопряжен с волнением, ведь даже при самом строгом тестировании присутствует риск непредвиденных осложнений. Наша новая фича инкрементного развертывания (Incremental Rollouts) позволяет проводить развертывание кода только для определенного подмножества пользователей. Теперь вместо того, чтобы выкатывать обновления сразу для всех пользователей, вы можете постепенно увеличивать количество подов Kubernetes, на которые проводится развертывание. В случае каких-либо осложнений, вы можете откатить изменения до того, как они затронут всю пользовательскую базу целиком. Это нововведение предоставляет дополнительный уровень защиты пользователей от непредвиденных ошибок, что в идеале позволит вам чаще проводить развертывание.
Изначально зеркалирование пушей было доступно только по платной подписке, однако, с момента ее выхода, эта функциональность была одной из самых востребованных пользователями — многие просили перевести ее в общий доступ. Мы серьезно относимся к таким вопросам и считаем, что поиск идеального баланса между платной и общедоступной функциональностью является одним из ключевых направлений политики управления проектами. Поэтому, начиная с данного релиза, зеркалирование пушей выходит в открытый доступ.
Благодаря этому у пользователей GitLab Core появляются новые возможности, связанные среди прочего с фриланс разработкой и миграцией. Фрилансеры теперь смогут проводить зеркалирование любого клиентского репозитория, а пользователи, переходящие на GitLab из других git-репозиториев, смогут воспользоваться возможностями зеркалирования для упрощения процесса миграции.
По возможности мы стремимся к выводу функциональности в открытый доступ, как для того, чтобы привлекать новых пользователей GitLab, так и для того, чтобы увеличивать количество людей, участвующих в разработке ПО с открытым исходным кодом.
Практически невозможно отслеживать уязвимости в коде без какой-либо автоматизации, поэтому в GitLab включено несколько встроенных систем безопасности, таких как SAST, DAST, а также сканирование контейнеров и зависимостей. В данном релизе мы продолжаем работу в этом направлении.
При обнаружении уязвимости нужно либо исправить ее, либо проигнорировать в случае ложноположительного срабатывания. Наши новые интерактивные отчеты безопасности позволят вам выполнять соответствующее действие прямо из отчета: вы сможете либо отклонить уязвимость, либо создать задачу по ее устранению. Данная функциональность упрощает процесс работы с уязвимостями и, как следствие, ускоряет выпуск безопасного кода.
Мы с нетерпением ждем вашей реакции на нововведения этого релиза — что вам понравилось? Что нам следует улучшить? Мы с интересом прочитаем ваши комментарии к оригиналу статьи и продолжим работу над улучшением GitLab.
Спасибо за ваше участие!
Alexis добавил очень полезную возможность создания общих CI Runner’ов для групп. Эту функциональность пользователи просили более года, и вклад Alexis наконец позволил претворить ее в жизнь. Теперь управлять Runner’ами проектов определенной группы стало намного проще.
Спасибо, Alexis! В знак благодарности мы отправили ему фирменные кофту, носки и тануки ручной работы с символикой GitLab.
При внесении масштабных изменений в ваше приложение разумно развертывать версию на небольшую подгруппу пользователей с целью получения фидбека и обнаружения возможных проблем. После этого можно последовательно увеличивать процент пользователей, для которых проводится развертывание, пока новая версия полностью не заменит предыдущую. Таким образом, если на каком-то этапе обнаруживаются проблемы, откат продукта затронет меньшее количество пользователей.
В GitLab 10.8 мы добавляем возможность инкрементного развертывания кода на 10, 25, 50 и 100 процентов ваших подов. Вы также можете применять этот подход в Auto DevOps с помощью переменной окружения INCREMENTAL_ROLLOUT_ENABLED
.
Документация по инкрементному развертыванию
Зеркалирование репозиториев позволяет копировать репозитории Git из одной локации в другую. Это упрощает работу с несколькими инстансами GitLab: например, вы можете зеркалировать результаты работы вашей команды в личный инстанс GitLab ваших клиентов. Также зеркалирование пушей упрощает перемещение проекта в GitLab из других репозиториев, причем оригинальный репозиторий, из которого производится перемещение, остается актуальным.
Ранее зеркалирование пушей было доступно в GitLab Starter, а теперь еще и в Core.
Документация по зеркалированию пушей
Отчеты безопасности помогают находить потенциальные уязвимости вашего ПО, после чего вы можете предпринять действия по их устранению.
Начиная с GitLab 10.8 вы можете создавать задачи по исправлению уязвимостей прямо из окна отчета безопасности. Также вы можете отклонить определенную уязвимость в случае ложноположительного срабатывания. Ваша обратная связь отображается напрямую в отчете.
Документация по работе с отчетами безопасности
Мы добавили нечеткий (fuzzy) поиск файлов в Web IDE с целью упрощения навигации для крупных проектов. Нечеткий поиск доступен по комбинации клавиш Cmd + p
/Ctrl + p
.
Ранее вам нужно было напрямую просматривать дерево файлов проекта для того, чтобы найти определенный файл.
Мы добавили возможность добавления (stage) отдельных файлов в коммит в Web IDE, что позволяет совершать коммиты небольшого масштаба. Внесенные изменения добавляются в соответствующий список unstaged changes, после чего из этого списка вы можете выбрать нужные файлы и добавить их в список staged changes — эти файлы станут частью следующего коммита.
Графики выполнения задач используются во многих проектах для отслеживания прогресса определенного майлстоуна. Поскольку все больше команд используют разделение на группы и подгруппы, мы получили множество запросов на добавление таких графиков на уровне групп.
В данном релизе мы добавляем графики выполнения задач для групповых майлстоунов. Эти графики функционируют абсолютно так же, как и проектные: в них отображается прогресс выполнения всех задач, связанных с майлстоуном, что предоставляет наглядную демонстрацию рабочего процесса. С помощью этих графиков вы можете оценить вероятность выполнения работ в срок и внести необходимые изменения в работу.
По аналогии с проектными графиками выполнения задач, графики для групп учитывают как количество задач, так и их вес. Кроме того, групповые графики учитывают задачи, связанные с майлстоуном, для всех подгрупп соответствующей группы.
Документация по графикам выполнения задач
GitLab часто является ключевым элементом цикла поставки ПО, поэтому важно быть уверенным в его стабильной и корректной работе. В предыдущих релизах мы добавили метрики Prometheus для зависимостей Redis и Postgres, а также несколько экспериментальных метрик в версии 9.3. С тех пор мы покрыли метриками ещё некоторые части нашей кодовой базы, а также уменьшили негативное влияние сбора метрик на производительность. Теперь мы используем эти метрики для мониторинга сервиса GitLab.com.
Как следствие прошедших нововведений, мы выводим мониторинг Prometheus в общий доступ (GA, general availability) начиная с версии 10.8. Для всех новых установок GitLab мониторинг будет включен по умолчанию. Также мы выпустили пробную версию приборной панели Grafana для наглядной визуализации метрик.
Документация по мониторингу Prometheus в GitLab
GitLab готовится к внедрению GDPR и, как часть этого процесса, мы попросили наших пользователей просмотреть и подтвердить обновленные Условия Использования. Вместо того, чтобы использовать эту функциональность один раз и забыть про нее, мы решили добавить ее в GitLab, чтобы пользователи могли использовать эту фичу и в дальнейшем.
При включении этой фичи админом инстанса, пользователи будут обязаны просмотреть Условия Использования и согласиться с ними перед продолжением работы с GitLab. До тех пор, пока пользователь не подтвердит это сообщение, его доступ к GitLab через веб, API и Git будет заблокирован.
Сообщение с Условиями Использования может быть полностью изменено в настройках админа. Также, поскольку это сообщение создается на основе GitLab-flavored Markdown, в нем могут даже содержаться ссылки на другие страницы.
Все подтверждения от пользователей хранятся в базе данных, так что вы можете использовать эту информацию в дальнейшем.
Документация по подтверждению обновлений политики использования
Меню поиска и фильтрации — очень полезная часть интерфейса, хорошо знакомая пользователям и используемая по всему GitLab. Мы решили использовать эту функциональность для поиска и фильтрации эпиков дорожной карты (roadmap) при ее просмотре.
В этом релизе вы сможете фильтровать эпики по автору и метке в режиме просмотра дорожной карты. Кроме того, вы сможете искать эпики по названию и описанию. Это позволит пользователям находить релевантные им и их командам эпики и добавлять в закладки ссылки, чтобы сохранить настройки поиска.
Документация по дорожным картам
Обсуждения (ветки комментариев) появляются во многих частях веб-интерфейса GitLab: в задачах, мерж-реквестах, эпиках, сниппетах и коммитах. В этом релизе мы расширили возможности API, благодаря чему вы сможете получать доступ к обсуждениям и управлять ими прямо через API GitLab, что сделает ваши рабочие процессы еще более гибкими.
Документация об обсуждениях в API
Статическое тестирование безопасности приложений (SAST) эффективно только в тех случаях, когда ваш проект использует язык программирования, поддерживаемый одним из инструментов GitLab. Именно поэтому мы увеличиваем количество этих языков с каждым релизом, добавляя наиболее популярные из них.
В GitLab 10.8 проекты, написанные на PHP и Java с Gradle могут автоматически проверяться на уязвимости безопасности. Для этого даже не нужно определять язык — он определяется в рантайме автоматически.
Нередко возникает необходимость выполнить единичный запуск CI с одноразовыми значениями настроек, чтобы протестировать конкретный сценарий использования. Например, мы можем временно применить определенную стратегию развертывания или исключить конкретный шаг из процесса сборки приложения.
GitLab 10.8 предлагает возможность определять специальные одноразовые переменные при запуске конвейера вручную. Вам не нужно будет изменять переменные для всего проекта, чтобы выполнить один-единственный специфический запуск, благодаря чему выполнять нестандартные тесты с собственными настройками станет гораздо проще.
Документация о запуске конвейеров
Мы продолжаем работать над маленькими фичами GitLab, которые имеют большое значение при его использовании. Это изменение — хороший тому пример. Если вы используете мерж-коммиты в вашем проекте, ссылка на мерж-коммит будет появляться в виджете мерж-реквеста сразу после мержа. По этой ссылке вы сможете перейти непосредственно к мерж-коммиту.
Для многих рабочих процессов будет полезно иметь возможность переходить прямо к мерж-коммиту. Например, некоторые команды переносят эти мерж-коммиты в релизные ветки или отмечают их тегами для тестирования или развертывания на продакшн. С этим изменением вам будет легче узнать, является ли мерж-реквест частью ветки, которую вы собираетесь разворачивать.
Вес задачи позволяет сопоставить задаче GitLab определенное численное значение, указывающее на ее объем. В частности, команды используют веса задач для планирования разработки при работе по Agile или по другим методологиям, основанным на гибкой разработке. В этом релизе мы добавили системные заметки, появляющиеся каждый раз, когда вы добавляете или изменяете вес задачи. Это поможет членам команды отслеживать изменения для оценки работ, а также просто узнавать, когда была произведена первая оценка.
В этом релизе мы добавили в экспорт CSV вес задачи и статус ее блокировки. Это дает вам еще больше информации о задачах, чтобы вы могли провести любой тип анализа и рабочих процессов вне GitLab.
В этом релизе мы улучшили интеграцию с Jira Development Panel: теперь она включает мерж-реквесты GitLab. Это значит, что, если вы используете специальную интеграцию, в боковой панели связанной задачи Jira вдобавок к коммитам и веткам Gitlab будут отображаться еще и мерж-реквесты.
Обратите внимание, что в интерфейсе Jira мерж-реквесты называются «pull requests».
Документация по интеграции с GitLab Jira Development Panel
В предыдущем релизе мы представили треды комментариев для эпиков. В этом релизе мы сделали совместную работу над эпиками еще более похожей на остальные части GitLab — за счет добавления email уведомлений. Как и ранее в задачах и мерж-реквестах, вы будете получать уведомления на email (указанный вами в настройках GitLab) после соответствующей активности в эпике. Например, когда член команды упоминает вас в описании эпика или комментарии к нему, вы получите уведомление, если вы настроили свои уведомления для группы этого эпика на уровень Participate или выше.
Хорошее описание коммита, которое объясняет, почему было нужно изменение, помогает делать небольшие атомарные коммиты и упрощает чтение логов коммитов для остальных членов команды. Мы улучшили отображение длинных описаний, так что читать их стало еще проще!
Сниппеты полезны для обсуждения части кода. Теперь вы можете встраивать публичные сниппеты в ваш веб-сайт. Это очень помогает в документировании, дополнении поста в блоге примерами кода или на личном сайте. За эту возможность спасибо Haseeb.
Документация о поддержке встроенных сниппетов
С помощью нового API для языков вы сможете собирать статистику по языкам проекта. Это может быть полезно для отчетов или исследований — например, понять, какие языки программирования чаще всего используются в вашей организации или в проекте с открытым исходным кодом на GitLab.com. Спасибо, Roger, за твой вклад!
Документация по API для языков проекта
У GitLab Runner-ов есть два типа настройки: для целого инстанса (shared) или на уровне проекта (specific). Однако, иногда существует необходимость предоставить набор Runner-ов целой группе проектов, не предоставляя доступ к ним кому-либо извне. На GitLab.com, например, это хорошо работает за счет прямой связи между группами и организациями.
Начиная с GitLab 10.8 вы сможете соединять ваши GitLab Runner с конкретной группой — и каждый проект этой группы получит возможности CI/CD без каких-либо дополнительных настроек. А новые проекты будут получать все преимущества групповых Runner-ов сразу после создания. За эту фичу спасибо Alexis.
Документация по настройке GitLab Runners
До этого релиза Auto DevOps по умолчанию использовал модель непрерывного развертывания: пуш в production
происходил автоматически каждый раз после запуска конвейера в ветке master
. Это очень полезно, но иногда для завершенности приложения или доступности продакшн-окружения нужно использовать дополнительное тестовое окружение. Только после прохождения всех проверок на нем можно вручную запускать развертывание в продакшн.
В шаблоне Auto DevOps раньше уже поддерживалась такая возможность, но она не была включена по умолчанию. Если кто-то хотел воспользоваться прогоном через тестовое окружение, нужно было отдельно создать файл .gitlab-ci.yml
.
Начиная с GitLab 10.8, шаблоны Auto DevOps позволят пользователям включать staging
с помощью переменной окружения. Вы можете указать STAGING_ENABLED
для целой группы, для одного проекта или даже для конкретного запуска. Развертывание в production
нужно будет запускать вручную — и можно будет сделать это в нужное время.
Документация о политике развертывания Auto DevOps
В GitLab вы можете легко начать работу над проектом с определенным языком: просто используйте шаблоны. Это позволит вам быстро запустить новое приложение и затем настроить его под свои нужды.
GitLab 10.8 включает усовершенствованные версии шаблонов Rails, Spring и Express, так что при создании новых проектов вы можете использовать все возможности Auto DevOps. Используя эти улучшенные шаблоны, вы сможете пройти путь от идеи до производства за считанные минуты.
Документация о создании шаблонов, основанных на проектах
git pack-objects
), чтобы освободить место на диске. Также он будет регулярно выполнять сборку мусора (git gc
).git fsck
на каждом репозитории вторичного нода.Подробные release notes и инструкции по обновлению/установке можно прочитать в оригинальном англоязычном посте: GitLab 10.8 released with incremental rollouts, plus open source push mirroring.
Над переводом с английского работали @rishavant и @sgnl_05.