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

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

Сегодня мы с радостью объявляем о релизе GitLab 16.4 с настраиваемыми ролями, списком зависимостей для групп и подгрупп, локальному доступу к кластерам при помощи учётных данных GitLab, рабочими пространствами для приватных проектов и многими другими фичами!

Это лишь несколько из более 100 улучшений, добавленных в этом релизе. Читайте дальше, чтобы узнать обо всех основных изменениях.

Мы благодарны сообществу GitLab за 137 изменений, которые вы внесли в релиз 16.4! В GitLab каждый может сделать свой вклад, и ваш вклад в этот релиз неоценим!

Чтобы заранее узнать, что запланировано на следующий месяц, посмотрите страницу наших будущих релизов — на ней есть видео, посвящённое релизу 16.5.

Мы изменили дату ежемесячного релиза на третий четверг месяца, начиная с релиза 16.6.

GitLab MVP badge

Награда MVP этого месяца присуждается Kik

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

Kik — живой пример олицетворения ценностей GitLab: совместная работа, итерации и прозрачность!

Кик уже много лет является частью сообщества GitLab: его первый релиз состоялся более 7 лет назад. В последние несколько месяцев он стал более активным участником сообщества GitLab. Вот что сам Kik говорит о своём вкладе:

Хотелось бы отметить, что GitLab даёт невероятные возможности для разработчиков. Я ценю возможность работать с его исходным кодом, и то, что команда GitLab приветствует вклад сообщества, какими бы амбициозными ни были идеи :)

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

Спасибо Kik за помощь в развитии GitLab и вклад в наше невероятное сообщество! 🙌

Основные улучшения в GitLab 16.4

Настраиваемые роли

(Доступно в планах 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 без дополнительной настройки или аутентификации.

Create workspaces for private projects

Документация по личным токенам доступа и оригинальный эпик.

Локальный доступ к кластерам через учётную запись GitLab

(Доступно в планах 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

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

Group/sub-group level dependency list

Документация по списку зависимостей и оригинальный эпик.

Массовое обновление статуса уязвимостей

(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Govern

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

Vulnerability bulk status updates

Документация по отчёту об уязвимостях и оригинальный эпик.

Детализированные настройки безопасности

(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Govern

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

GitLab теперь позволяет пользователям создавать пользовательские роли на основе роли Reporter, но с добавленными разрешениями:

Мы планируем убрать возможность изменения статуса уязвимости для роли разработчика для всех планов в релизе 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.

Set `id_token` globally and eliminate configuration for individual jobs

Документация по id_token и оригинальный тикет.

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

Веб-хуки для эмодзи-реакций

(Доступно в планах SaaS:FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Manage

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

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

Документация по веб-хукам для эмодзи-реакций и оригинальный тикет.

Настройки таймаута распаковки архивных файлов при импорте

(Доступно в планах self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Manage

Недавно мы добавили администраторам GitLab с самоуправлением возможность настраивать некоторые ограничения импорта в соответствии с их потребностями.

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

Ранее этот таймаут был выставлен на 210 секунд. Мы оставили это ограничение в качестве значения по умолчанию на GitLab.com и для инстансов с самоуправлением, но администраторы смогут при необходимости изменить его.

Документация по настройке таймаута распаковки архивных файлов и оригинальный тикет.

Образ macOS 13 (Ventura) для обработчиков задач SaaS на macOS

(Доступно в планах SaaS: PREMIUM, ULTIMATE) Стадия цикла DevOps: Verify

Начиная с этого релиза вы сможете создавать, тестировать и разворачивать приложения для экосистемы Apple на macOS 13 в обработчике заданий GitLab SaaS.

Обработчики заданий SaaS на macOS повышают скорость работы команд разработки при сборке и развёртывании приложений для macOS в безопасном и работающем по запросу окружении для сборки, интегрированном с GitLab CI/CD.

Документация по поддерживаемым обработчикам заданий GitLab SaaS для macOS и оригинальный тикет.

Настраиваемый email для службы поддержки

(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Monitor

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

Это пока только бета-версия фичи. Мы рекомендуем пользователям попробовать эту бета-фичу и оставить обратную связь в тикете для фидбека.

Документация по настройке email для службы поддержки и оригинальный тикет.

Поддержка сканирования зависимостей и лицензий для файла блокировки pnpm версии 6.1

(Доступно в планах 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) и оригинальный тикет.

Экспорты SBOM стандарта CycloneDX для конвейеров CI

(Доступно в планах 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:

Если вы используете шаблон статического сканирования безопасности GitLab (SAST.gitlab-ci.yml) и версию GitLab 16.0 или выше, то вы автоматически получите эти обновления. Чтобы оставить определённую версию любого анализатора и предотвратить автоматические обновления, вы можете закрепить его версию.

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

Документация по анализаторам SAST и оригинальный тикет.

Уведомление по email об истечении срока действия доступа

(Доступно в планах 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) и оригинальный тикет.

Geo поддерживает унифицированные URL на облачных нативных гибридных сайтах

(Доступно в планах self-managed: PREMIUM, ULTIMATE) Направление: Системы

Geo теперь поддерживает унифицированные URL на облачных гибридных сайтах, что означает, что такие сайты могут использовать тот же единый внешний адрес, что и основной сайт. Таким образом удалённые команды получают удобный пользовательский интерфейс для GitLab и Git. Они используют единый адрес и автоматически перенаправляются на наиболее подходящий вторичный сайт Geo в зависимости от своего местоположения. Благодаря этому обновлению унифицированные адреса теперь поддерживаются во всех эталонных архитектурах GitLab.

Документация по настройке вторичных сайтов Geo и оригинальный эпик.

Создание названий и описаний кастомных ролей с помощью API

(Доступно в планах SaaS: ULTIMATE; self-managed: ULTIMATE) Стадия цикла DevOps: Manage

При создании пользовательской роли теперь можно использовать API ролей участников для добавления названия (обязательно) и описания (необязательно). Всем уже существующим пользовательским ролям было присвоено имя Custom, его можно изменить через API.

Документация по настройке ролей участников и оригинальный тикет.

Отправка уведомлений в Slack при упоминании групп

(Доступно в планах 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 «сопровождающий») в группе теперь могут просматривать сведения об обработчиках заданий этой группы. Это позволяет им быстро определить, какие обработчики доступны, или проверить, что автоматически созданные обработчики были успешно зарегистрированы в пространстве имён группы.

Users with the Maintainer role can view runner details

Документация по настройке прав доступа и оригинальный тикет.

Поддержка ключевого слова 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. Добавление поддержки окружений упрощает отслеживание развёртываний в разных проектах.

Документация по настройке нижестоящих конвейеров и оригинальный тикет.

Активная проверка DAST версии 22.1 на основе браузера включена по умолчанию

(Доступно в планах 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 и оригинальный тикет.

Улучшено отслеживание уязвимостей SAST

(Доступно в планах 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.

Allow users to define branch exceptions to enforced security policies

Документация по правилам запуска сканирований безопасности(https://docs.gitlab.com/ee/user/application_security/policies/) и оригинальный эпик.

Уведомления об истечении срока действия токенов доступа

(Доступно в планах SaaS: FREE, PREMIUM, ULTIMATE; self-managed: FREE, PREMIUM, ULTIMATE) Стадия цикла DevOps: Govern

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

Документация по использованию токенов и оригинальный тикет.

Geo проверяет хранилище объектов

(Доступно в планах self-managed: PREMIUM, ULTIMATE) Направление: Системы

Geo добавляет возможность проверки хранилища объектов, когда репликация хранилища управляется GitLab. Чтобы защитить данные хранилища объектов от повреждения, Geo сравнивает размер файла между основным и дополнительным сайтами. Если Geo — часть вашей стратегии аварийного восстановления, и вы включаете репликацию управляемого GitLab хранилища объектов, это защищает от потери данных. Кроме того, это также уменьшает необходимость копирования данных, которые могут уже присутствовать на вторичном сайте. Например, при добавлении старого основного сайта в качестве вторичного.

Документация по хранилищу объектов и оригинальный эпик.

Проверка целостности индекса Elasticsearch в общем доступе

(Доступно в планах 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.