Сегодня мы с радостью объявляем о релизе GitLab 16.4 с настраиваемыми ролями, списком зависимостей для групп и подгрупп, локальному доступу к кластерам при помощи учётных данных GitLab, рабочими пространствами для приватных проектов и многими другими фичами!
Это лишь несколько из более 100 улучшений, добавленных в этом релизе. Читайте дальше, чтобы узнать обо всех основных изменениях.
Мы благодарны сообществу GitLab за 137 изменений, которые вы внесли в релиз 16.4! В GitLab каждый может сделать свой вклад, и ваш вклад в этот релиз неоценим!
Чтобы заранее узнать, что запланировано на следующий месяц, посмотрите страницу наших будущих релизов — на ней есть видео, посвящённое релизу 16.5.
Мы изменили дату ежемесячного релиза на третий четверг месяца, начиная с релиза 16.6.
Kik внёс большой вклад в дизайн и начальную реализацию поддержки ActivityPub в GitLab. Его детальный план архитектуры поддержала наша продуктовая команда, и теперь этот план превратился в эпик в проекте GitLab. Недавно был добавлен первый мерж-реквест, а также документация для этой фичи.
Kik — живой пример олицетворения ценностей GitLab: совместная работа, итерации и прозрачность!
Кик уже много лет является частью сообщества GitLab: его первый релиз состоялся более 7 лет назад. В последние несколько месяцев он стал более активным участником сообщества GitLab. Вот что сам Kik говорит о своём вкладе:
Хотелось бы отметить, что GitLab даёт невероятные возможности для разработчиков. Я ценю возможность работать с его исходным кодом, и то, что команда GitLab приветствует вклад сообщества, какими бы амбициозными ни были идеи :)
Он также решил поддержать наши усилия по обеспечению устойчивого развития, выбрав вместо мерча опцию посадить деревья. ????
Спасибо Kik за помощь в развитии GitLab и вклад в наше невероятное сообщество! ????
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Govern
Владельцы групп и администраторы теперь могут создавать и удалять кастомные роли через пользовательский интерфейс GitLab в меню Роли и разрешения (Roles and Permissions). Чтобы создать новую роль, вы добавляете разрешения поверх существующей базовой роли. В настоящее время к базовой роли можно добавить ограниченное количество разрешений, включая детализированные настройки безопасности, возможность утверждать мерж-реквесты (в русской локализации GitLab «запросы на слияние») и просматривать код. На каждом этапе будут выпускаться новые разрешения, которые затем можно будет добавлять к существующим разрешениям для создания кастомных ролей.
Документация по созданию кастомных ролей и оригинальный тикет.
(Доступно в планах SaaS: PREMIUM, ULTIMATE; self-managed: PREMIUM, ULTIMATE) Стадия цикла DevOps: Create
Раньше в GitLab было невозможно создать рабочее пространство для приватного проекта. А при клонировании приватного проекта, вы могли пройти аутентификацию только после создания рабочего пространства.
В GitLab 16.4 вы сможете создать рабочее пространство для любого публичного или приватного проекта. При создании рабочего пространства вы получаете личный токен доступа, с помощью которого вы сможете клонировать приватные проекты и выполнять операции Git без дополнительной настройки или аутентификации.
Документация по личным токенам доступа и оригинальный эпик.
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Deploy
Для предоставления разработчикам доступа к кластерам Kubernetes требуются либо облачные учётные записи разработчиков, либо сторонние инструменты аутентификации. Это увеличивает сложность облачной идентификации и управления доступом. Теперь вы можете предоставить разработчикам доступ к кластерам Kubernetes, используя только их данные учётной записи GitLab и агент для Kubernetes. Используйте традиционный Kubernetes RBAC для управления авторизацией внутри вашего кластера.
Вместе с механизмом облачной аутентификации OIDC в конвейерах (в русской локализации GitLab «сборочные линии») GitLab эти функции позволяют пользователям GitLab получать доступ к облачным ресурсам без специально выделенных облачных учётных записей, при этом не ставя под угрозу безопасность и соответствие требованиям.
В первой итерации этой фичи вам придётся выполнять настройку Kubernetes вручную. В эпике 11455 предлагается упрощение настройки за счёт добавления в GitLab CLI новых команд.
Документация по доступу к кластеру через API Kubernetes и оригинальный эпик.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Govern
При просмотре списка зависимостей важно иметь возможность получить общее представление о зависимостях группы или подгруппы. Управление зависимостями на уровне проекта проблематично для крупных организаций, которые хотят проверять свои зависимости во всех своих проектах. Начиная с этого релиза, вы можете видеть все зависимости на уровне проекта или группы, включая подгруппы. Эта функция теперь доступна по умолчанию.
Документация по списку зависимостей и оригинальный эпик.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Govern
Некоторые уязвимости необходимо устранять массово. Даже если они сработали ложно или больше не обнаруживаются, важно свести к минимуму лишние и легко сортировать список уязвимостей. Начиная с этого релиза, вы сможете изменять статус многих уязвимостей сразу и оставлять комментарий для нескольких уязвимостей из отчёта об уязвимостях группы или проекта.
Документация по отчёту об уязвимостях и оригинальный эпик.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Govern
Некоторым организациям нужна возможность давать своим службам безопасности минимальный необходимый объём доступа, чтобы они могли соблюдать принцип наименьших привилегий. У команд безопасности не должно быть доступа для изменения кода, но они должны иметь возможность утверждать мерж-реквесты, просматривать уязвимости и обновлять статус уязвимостей.
GitLab теперь позволяет пользователям создавать пользовательские роли на основе роли Reporter, но с добавленными разрешениями:
read_dependenty
)read_vulnerability
)admin_merge_request
)admin_vulnerability
)Мы планируем убрать возможность изменения статуса уязвимости для роли разработчика для всех планов в релизе 17.0, как отмечено в журнале устаревших фич. Вы можете поделиться своим мнением о предложенном изменении в тикете 424688.
Документация по настраиваемым ролям и оригинальный эпик.
id_token
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Verify
В GitLab 15.9 мы объявили о прекращении поддержки старых версий веб-токенов JSON в пользу id_token
. К сожалению, для использования этого изменения приходилось вручную настраивать задания конвейера. Чтобы обеспечить более плавный переход к id_token
, начиная с GitLab 16.4 вы можете установить id_token
в качестве глобального значения по умолчанию в файле .gitlab-ci.yml
. Эта фича автоматически устанавливает конфигурацию id_token
для каждого задания. Задания, использующие аутентификацию OpenID Connect (OIDC), больше не требуют настройки отдельного id_token
.
Используйте id_token
и OIDC для аутентификации в сторонних сервисах. Обязательное ключевое слово aud
используется для настройки утверждения aud
для JWT.
Документация по id_token
и оригинальный тикет.
(Доступно в планах SaaS:FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Manage
Для удобства автоматизации и интеграции со сторонними системами мы добавили поддержку создания веб-хуков, которые срабатывают, когда пользователь добавляет или отменяет эмодзи-реакцию.
Вы можете использовать новый веб-хук, например, для отправки электронного письма, когда пользователи реагируют на тикеты (в русской локализации GitLab «обсуждения») или мерж-реквесты с помощью смайликов.
Документация по веб-хукам для эмодзи-реакций и оригинальный тикет.
(Доступно в планах self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Manage
Недавно мы добавили администраторам GitLab с самоуправлением возможность настраивать некоторые ограничения импорта в соответствии с их потребностями.
В этом релизе мы также добавили таймаут для распаковки архивных файлов в качестве одного из настраиваемых параметров приложения.
Ранее этот таймаут был выставлен на 210 секунд. Мы оставили это ограничение в качестве значения по умолчанию на GitLab.com и для инстансов с самоуправлением, но администраторы смогут при необходимости изменить его.
Документация по настройке таймаута распаковки архивных файлов и оригинальный тикет.
(Доступно в планах SaaS: PREMIUM, ULTIMATE) Стадия цикла DevOps: Verify
Начиная с этого релиза вы сможете создавать, тестировать и разворачивать приложения для экосистемы Apple на macOS 13 в обработчике заданий GitLab SaaS.
Обработчики заданий SaaS на macOS повышают скорость работы команд разработки при сборке и развёртывании приложений для macOS в безопасном и работающем по запросу окружении для сборки, интегрированном с GitLab CI/CD.
Документация по поддерживаемым обработчикам заданий GitLab SaaS для macOS и оригинальный тикет.
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Monitor
Служба поддержки — это одно из наиболее важных связующих звеньев между вашим бизнесом и клиентами. Теперь для отправки и получения электронных писем службы поддержки вы сможете использовать свой email. Это поможет вам поддерживать идентичность бренда, а клиентам будет проще убедиться в том, что они общаются с нужной организацией.
Это пока только бета-версия фичи. Мы рекомендуем пользователям попробовать эту бета-фичу и оставить обратную связь в тикете для фидбека.
Документация по настройке email для службы поддержки и оригинальный тикет.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Secure
Благодаря вкладу сообщества от Weyert de Boer сканирование зависимостей и лицензий в GitLab теперь поддерживает анализ проектов pnpm, использующих формат файла блокировки версии 6.1.
Документация по получению информации о зависимостях из файлов блокировки(https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#obtaining-dependency-information-by-parsing-lockfiles) и оригинальный тикет.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Secure
Мы добавили API, позволяющий вам загрузить CycloneDX SBOM, в котором перечислены все компоненты, обнаруженные в конвейере CI. Это включает в себя зависимости на уровне как приложения, так и системы.
Документация по экспорту списка зависимостей и оригинальный тикет.
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Secure
Статическое сканирование безопасности GitLab включает множество анализаторов, которые команда статического анализа GitLab активно поддерживает и обновляет. Мы опубликовали следующие обновления в релизе 16.4:
Security.Misc.IncludeMismatch
. Посмотрите подробности в списке изменений.Если вы используете шаблон статического сканирования безопасности GitLab (SAST.gitlab-ci.yml
) и версию GitLab 16.0 или выше, то вы автоматически получите эти обновления. Чтобы оставить определённую версию любого анализатора и предотвратить автоматические обновления, вы можете закрепить его версию.
Список прошлых изменений можно посмотреть в обновлениях за предыдущий месяц.
Документация по анализаторам SAST и оригинальный тикет.
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Govern
За семь дней до истечения срока действия доступа к группе или проекту пользователь получит уведомление по email. Это происходит только в том случае, если установлена дата окончания срока действия доступа. Ранее таких уведомлений не было. Заблаговременное уведомление позволяет связаться с администратором GitLab, чтобы обеспечить непрерывный доступ.
Документация по работе с группой(https://docs.gitlab.com/ee/user/group/#add-users-to-a-group) и оригинальный тикет.
(Доступно в планах self-managed: PREMIUM, ULTIMATE) Направление: Системы
Geo теперь поддерживает унифицированные URL на облачных гибридных сайтах, что означает, что такие сайты могут использовать тот же единый внешний адрес, что и основной сайт. Таким образом удалённые команды получают удобный пользовательский интерфейс для GitLab и Git. Они используют единый адрес и автоматически перенаправляются на наиболее подходящий вторичный сайт Geo в зависимости от своего местоположения. Благодаря этому обновлению унифицированные адреса теперь поддерживаются во всех эталонных архитектурах GitLab.
Документация по настройке вторичных сайтов Geo и оригинальный эпик.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Manage
При создании пользовательской роли теперь можно использовать API ролей участников для добавления названия (обязательно) и описания (необязательно). Всем уже существующим пользовательским ролям было присвоено имя Custom
, его можно изменить через API.
Документация по настройке ролей участников и оригинальный тикет.
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Manage
GitLab может отправлять сообщения в каналы рабочего пространства Slack для определённых событий GitLab. В этом релизе появилась возможность отправлять Slack-уведомления для упоминаний группы в публичном и приватном контекстах в:
Документация по настройке Slack-уведомлений об упоминаниях группы и оригинальный тикет.
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Verify
Пользователи с ролью мейнтейнера (в русской локализации GitLab «сопровождающий») в группе теперь могут просматривать сведения об обработчиках заданий этой группы. Это позволяет им быстро определить, какие обработчики доступны, или проверить, что автоматически созданные обработчики были успешно зарегистрированы в пространстве имён группы.
Документация по настройке прав доступа и оригинальный тикет.
environment
в нижестоящих конвейерах(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Deploy
Чтобы запустить нижестоящий конвейер из задания конвейера CI/CD, можно использовать ключевое слово trigger
. Чтобы улучшить управление развёртыванием, теперь можно при использовании trigger
указывать окружение с помощью ключевого слова environment
. Например, для ветки main
в проекте /web-app
можно запустить конвейер с именем окружения dev
и указанным URL окружения.
Ранее, когда вы запускали отдельные конвейеры для CI и CD и использовали ключевое слово trigger
для запуска конвейера CD, было невозможно указать детали окружения. Это затрудняло отслеживание развёртываний из проекта CI. Добавление поддержки окружений упрощает отслеживание развёртываний в разных проектах.
Документация по настройке нижестоящих конвейеров и оригинальный тикет.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Secure
Теперь активная браузерная проверка DAST версии 22.1 включена по умолчанию. Она заменяет отключённую проверку ZAP 6. Проверка версии 22.1 идентифицирует уязвимость «Неправильное ограничение пути к директории с ограниченным доступом (обход пути)» (“Improper limitation of a pathname to a restricted directory (Path traversal)”), которую злоумышленник мог использовать, чтобы читать произвольные файлы, вставив соответствующую «полезную нагрузку» в параметр конечной точки адреса.
Документация по настройке DAST и оригинальный тикет.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Secure
Расширенное отслеживание уязвимостей в GitLab SAST делает сортировку более эффективной, отслеживая результаты по мере перемещения кода.
В GitLab 16.4 мы включили расширенное отслеживание уязвимостей для новых языков и анализаторов. В дополнение к существующему покрытию теперь доступно расширенное отслеживание для:
Это всё основано на предыдущих расширениях и улучшениях из релиза GitLab 16.3. Мы планируем дальнейшие улучшения в эпике 5144.
Эти изменения включены в обновлённые версии анализаторов SAST для GitLab. Результаты поиска уязвимостей вашего проекта обновляются новыми сигнатурами отслеживания после сканирования проекта обновлёнными анализаторами. Всё обновится автоматически, если только вы не закрепили определённую версию анализаторов SAST.
Документация по расширенному отслеживанию уязвимостей в SAST(https://docs.gitlab.com/ee/user/application_security/sast/#advanced-vulnerability-tracking) и оригинальный тикет.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Secure
Фича Оперативное сканирование контейнеров (OCS) теперь может получать доступ к образам из частных реестров контейнеров и сканировать их. OCS использует секретные ключи, используемые для получения образа, для доступа к контейнерам в частном реестре.
Документация по сканированию частных образов и оригинальный тикет.
(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Govern
Правила безопасности требуют запуска сканеров в проектах GitLab, а также обеспечивают проверку или утверждение мерж-реквестов для обеспечения безопасности и соответствия требованиям. Исключая ветки, можно более детально применять правила и убирать их принудительное применение для любой конкретной ветки, для которой это на самом деле не нужно. Если разработчик создаёт ветку разработки или тестирования, которая внезапно попадает под действие жёстких правил, он может работать с командами безопасности, чтобы убрать ограничения на этой ветке.
Для правил выполнения сканирования можно настроить исключения для типов правил сканирования конвейеров или для запланированных сканирований. Для правил результатов сканирования можно определить ветки, к которым не применяются типы правил scan_finding или license_finding.
Документация по правилам запуска сканирований безопасности(https://docs.gitlab.com/ee/user/application_security/policies/) и оригинальный эпик.
(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Govern
Токены доступа к группам и проектам часто используются для автоматизации. Чтобы избежать перебоев в работе, важно, чтобы администраторы и владельцы групп получали уведомления, когда срок действия одного из этих токенов подходит к концу. Администраторы и владельцы групп теперь получают уведомление по email, когда срок действия токена истекает через семь дней или раньше. Они также могут подписаться на веб-хуки, чтобы получать эти уведомления.
Документация по использованию токенов и оригинальный тикет.
(Доступно в планах self-managed: PREMIUM, ULTIMATE) Направление: Системы
Geo добавляет возможность проверки хранилища объектов, когда репликация хранилища управляется GitLab. Чтобы защитить данные хранилища объектов от повреждения, Geo сравнивает размер файла между основным и дополнительным сайтами. Если Geo — часть вашей стратегии аварийного восстановления, и вы включаете репликацию управляемого GitLab хранилища объектов, это защищает от потери данных. Кроме того, это также уменьшает необходимость копирования данных, которые могут уже присутствовать на вторичном сайте. Например, при добавлении старого основного сайта в качестве вторичного.
Документация по хранилищу объектов и оригинальный эпик.
(Доступно в планах SaaS: PREMIUM, ULTIMATE; self-managed: PREMIUM, ULTIMATE) Направление: Хранение данных
С GitLab 16.4 фича «целостность индекса Elasticsearch» вышла в общий доступ, то есть стала доступна для всех пользователей GitLab. Целостность индекса помогает обнаруживать и исправлять недостающие данные в хранилище. Эта фича автоматически используется, когда поиск по коду, ограниченный группой или проектом, не даёт результатов.
Документация по целостности индекса Elasticsearch и оригинальный тикет.
Полный текст релиза и инструкции по обновлению и установке вы можете найти в оригинальном англоязычном посте GitLab 16.4 released with customizable roles and group-level dependency list.
Над переводом с английского работали @maryartkey, @ainoneko, @cattidourden и @rishavant.