Вышел GitLab 10.7: Web IDE в открытом доступе и отчеты SAST для Go и C/C++

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

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

Web IDE теперь в общем доступе и с открытым исходным кодом

Мы в GitLab хотим, чтобы каждый участник мог вносить свой вклад в рабочий процесс независимо от того, является ли он начинающим пользователем, который только знакомится с git и работает над своим первым коммитом, или опытным разработчиком, проводящим ревью целого набора изменений. Локальное выполнение таких задач, как настройка среды разработки или переключение между ветками, может усложнить процесс разработки. При помощи нашего Web IDE вы можете вносить изменения в файлы, делать коммиты, проводить ревью изменений и предпросмотр Markdown напрямую из браузера. Вы даже можете открыть дифф мерж-реквеста с наглядным отображением изменений side by side. Web IDE выходит в общий доступ с версии 10.7, также мы открываем доступ к ее исходному коду.

Токены развертывания

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

Ранее существовало только два способа получения доступа к регистру и репозиторию. Одним из них является токен работы CI, который предоставляет временный доступ на время выполнения работы, а другим — токен личного доступа, который предоставляет конкретному пользователю доступ на неограниченное время. При использовании токена работы CI Kubernetes теряет доступ по завершению работы, так что такой вариант не подходит для повторяющихся событий, таких как перезапуски подов и масштабирование. У использования токенов личного доступа тоже есть минусы: либо доступ должен быть привязан к конкретному пользователю, либо требуется создание дополнительного аккаунта, на что требуется лицензия.

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

Управление потоком выполнения CI/CD на основе переменных

Сервис CI/CD является одним из основных движущих элементов процесса разработки ПО. Он выполняет множество задач: от базовых, вроде сборки, тестирования и развертывания, до более творческих. Учитывая диапазон выполняемых задач, пользователям важно иметь возможность запуска определенных работ только по определенному требованию. GitLab CI/CD уже предоставляет большой набор настроек для управления потоком выполнения, однако существовали некоторые сценарии, такие как ночные сборки, настроить которые было не так просто.

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

SAST для языков Go и C/C++

Частью проекта Complete DevOps является предоставление первоклассных инструментов безопасности. Система статического тестирования безопасности приложений (SAST) проводит анализ вашего исходного кода на наличие уязвимостей и выводит результат напрямую в окно мерж-реквеста. Однако для того, чтобы провести этот анализ, SAST требуется поддержка языка программирования, на котором вы пишете. По этой причине мы добавляем поддержку Go и C/C++ для SAST.

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

GitLab MVP badge

(MVP) этого месяца — Rob Watson

Rob добавил чекбокс, позволяющий перенаправлять соединения HTTP на HTTPS для GitLab Pages, что повышает безопасность контента.

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

Открыт исходный код Web IDE (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

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

Изначально Web IDE был добавлен в GitLab Ultimate 10.4, а с данного релиза он выходит в общий доступ. Мы приняли решение сделать его исходный код открытым, поскольку мы верим в то, что только совместная работа позволяет создавать такую сложную и субъективную функциональность, как IDE. К тому же, это позволит большему количеству пользователей участвовать в работе над своими любимыми проектами.

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

Токены развертывания (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Бывают ситуации, в которых необходимо на продолжительное время предоставить доступ на чтение к репозиториям или образам Docker, загруженным в регистр контейнеров GitLab. Ранее для этого нужно было использовать токены личного доступа (Personal Access Tokens — PAT), однако такие токены привязаны к конкретному пользователю и его правам доступа.

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

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

Deploy Tokens

Поддержка переменных для ключевых слов ‘only’ и ‘except’ (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

GitLab CI/CD позволяет устанавливать условия для запуска определенной работы при помощи ключевых слов ‘only’ и ‘except’. Например, вы можете разрешить запуск работы развертывания только в ветке ‘master’.

В GitLab 10.7 мы расширили синтаксические возможности таких условий, что позволяет использовать выражения с переменными, в которых выполнение работы зависит от наличия определенной переменной окружения или ее значения. Например, вы можете указывать, какие работы должны запускаться, при помощи изменения значений переменных проекта. Или же вы можете ограничить запуск определенной работы только теми случаями, когда значение переменной GITLAB_USER_NAME совпадает с именем определенного пользователя.

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

Variables support in 'only' and 'except' keywords

SAST для Go и C/C++ (ULTIMATE, GOLD)

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

В GitLab 10.7 мы добавили поддержку Go и C/C++, так что теперь вы можете использовать автоматическую проверку уязвимостей для проектов, написанных на этих языках. Для подключения этой функциональности не требуется никаких дополнительных действий — язык определяется в рантайме автоматически.

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

SAST for Go and C/C++

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

Комментарии в эпиках (ULTIMATE, GOLD)

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

Эта функциональность также поддерживается API.

Эпики пока что не поддерживают todo и оповещения по почте, но мы работаем над этим.

Comments in epics

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

Массовое добавление текста во все почтовые сообщения (PREMIUM, ULTIMATE, SILVER, GOLD)

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

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

Custom additional text for all emails

Документация по добавлению текста в почтовые сообщения

Задачи подгрупп в групповых досках задач (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

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

Subgroup issues in Group Issue Board

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

Фильтрация и добавление меток для подгрупп (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

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

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

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

Такой подход к фильтрации также доступен в групповых досках задач, как в окне фильтра, так и в настройках доски.

Assigning and filtering by subgroup labels

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

Значки проектов (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Многие проекты, например, GitLab CI/CD и shields.io используют значки (badges) для отображения статуса сборки и качества кода. Как правило, значки добавляются в README проекта.

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

Project Badges

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

Разрешения на снятие защиты с веток (PREMIUM, ULTIMATE, SILVER, GOLD)

Функциональность защищенных (protected) веток ограничивает разрешения на пуш и мерж в определенные ветки, например, можно запретить пуш напрямую в master. Однако, пользователи с уровнем доступа Master могут снимать защиту с веток, что позволяет им обходить такие запреты. Новые ограничения на снятие защиты позволяют указывать, каким именно пользователям и группам можно снимать защиту с определенной ветки.

На данный момент такие ограничения можно устанавливать только через API; мы добавим поддержку интерфейса в следующем релизе. Также есть вероятность, что в последующих версиях мы уберем уровень доступа Admin (60) и добавим ограничения для уровня Owner в качестве альтернативы.

Документация о защищенных ветках

Вес задач на карточках досок задач (STARTER, PREMIUM, ULTIMATE, BRONZE, SILVER, GOLD)

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

Issue weight in Issue Board card

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

Плагины GitLab (CORE, STARTER, PREMIUM, ULTIMATE)

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

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

Документация о плагинах

Протокол Git HTTP(s) всегда доступен для работ CI/CD (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

В GitLab для доступа к репозиториям вы можете использовать или SSH, или HTTP(s). Иногда администраторы GitLab предпочитают блокировать доступ по HTTP(s) из соображений безопасности. К примеру, блокировка HTTP(s) не позволит пользователям раскрыть их данные входа при работе через небезопасные настройки клиента. Однако, блокировка HTTP(s) также мешает GitLab Runner клонировать репозиторий, из-за чего CI/CD работает не так, как ожидается.

Начиная с GitLab 10.7 у clone/fetch реквестов от GitLab Runner будет доступ к протоколу HTTP(s), даже если такой доступ запрещен пользователям. С точки зрения безопасности это не одно и то же, поскольку GitLab Runner всегда использует токены OTP, которые не могут быть использованы для выполнения атак.

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

Поддержка JSON Web Token OmniAuth (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

GitLab использует OmniAuth для того, чтобы пользователи могли войти в GitLab с помощью популярных сервисов, например, Twitter или Google, а также с помощью стандартных средств идентификации типа OAuth2. В Gitlab 10.7 в OmniAuth добавлена поддержка JSON Web Token (JWT).

JSON Web Token — это компактный автономный способ защищенной передачи информации, часто использующийся для идентификации между разными сервисами.

Документация по предоставлению JWT OmniAuth

Автоматическая фоновая проверка копий Geo (PREMIUM, ULTIMATE)

Автоматическая фоновая проверка копий теперь происходит во время работы Geo, чтобы удостовериться, что копия консистентна с исходником. Это важно при использовании Geo для аварийного восстановления: теперь при сбоях вы можете уверенно переходить на резервную копию — она такая же, как и основной инстанс GitLab.

С помощью heads и tags GitLab вычисляет контрольную сумму для каждого репозитория Git и проверяет, что контрольная сумма исходного инстанса совпадает с аналогичной для резервной копии. Проверка будет расширена в следующих релизах и будет также включать загрузки и keep-around ссылки.

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

Создание проектов в группах для Starter (STARTER, PREMIUM, ULTIMATE, BRONZE, SILVER, GOLD)

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

Раньше эта функциональность была доступна только пользователям плана GitLab Premium.

Документация о группах

Экспорт проектов включает объекты LFS (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Экспорт проектов позволяет вам с удобством перемещать проекты (вместе с задачами, мерж-реквестами, метками, вики-страницами и загрузками) между инстансами GitLab. Теперь в экспорт проектов входят и объекты LFS: вы сможете перемещать репозитории с LFS объектами с помощью обычного экспорта проектов.

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

Сканирование зависимостей стало независимой функциональностью (ULTIMATE, GOLD)

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

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

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

Специальные таймауты работ для runner (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

В данный момент GitLab определяет сроки выполнения работ CI/CD на уровне проекта. Если работа выполняется дольше, она автоматически остановится с отчетом об ошибке.

В GitLab 10.7 появилась новая настройка таймаута на runner, применяющаяся ко всем работам, которые он запускает. Это особенно полезно для общих runner в целях предотвращения потенциальных злоупотреблений, когда проект устанавливает длинные таймауты.

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

Легче узнать причину падения работы CI/CD (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Когда работа CI/CD падает, пользователи обычно хотят узнать, что случилось и сделать коммит исправления, после которого работа выполнится так, как ожидалось. До этого релиза для этого нужно было идти в детали работы и смотреть логи.

Чтобы сделать отладку проще и быстрее, GitLab 10.7 представляет новую возможность: причина падения указывается как часть статуса, который можно посмотреть целиком по наведению курсора.

Easily get failure reasons for CI/CD jobs

Документация по причинам падения работ CI/CD

Поддержка Ubuntu 18.04 Bionic (CORE, STARTER, PREMIUM, ULTIMATE)

26 апреля вышла новая версия Ubuntu — Ubuntu 18.04 Bionic. GitLab теперь доступен и для нее.

Установка GitLab на Ubuntu 18.04 Bionic

Улучшения восстановления бэкапов GitLab (CORE, STARTER, PREMIUM, ULTIMATE)

GitLab 10.7 поддерживает восстановление вложенных директорий пользователя. Например, если ваш регистр находился по адресу /var/mypath/gitlab/registry, восстановление сработает. Раньше процесс пытался переименовать существующую директорию в <name>.<timestamp>, на что не было разрешения. Теперь он будет создавать временную папку tmp в восстанавливаемой директории и перемещать все существующие файлы туда до восстановления резервной копии.

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

Автоматический редирект на HTTPS в GitLab Pages (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

GitLab Pages может предоставлять статические вебсайты через протоколы HTTP или HTTPS. HTTPS обычно предпочтительнее, так как шифрует весь трафик, защищая содержимое, пока оно передается по сети.

В случае, когда доступны оба варианта, в GitLab 10.7 пользователи могут настроить проекты так, чтобы HTTP запросы автоматически перенаправлялись на соответствующие URL с протоколом HTTPS. Это повысит безопасность и гарантирует, что данные не будут передаваться простым текстом.

Документация по автоматическому перенаправлению на HTTPS в GitLab Pages

Автоматическое обновление сертификата GitLab Let’s Encrypt (CORE, STARTER, PREMIUM, ULTIMATE)

В GitLab 10.5 мы упростили подключение HTTPS для инстансов GitLab с помощью интеграции с Let’s Encrypt.

С GitLab 10.7 мы делаем этот процесс еще проще. Мы автоматизировали процесс обновления и убрали необходимость держать Let’s Encrypt постоянно включенным. Все, что вам нужно сделать, чтобы подключить HTTPS — начать ваш external_url с https:// — и всё!

Документация по автоматическому обновлению Let’s Encrypt

Облачный чарт GitLab доступен для Core (альфа) (CORE, STARTER, PREMIUM, ULTIMATE)

С введением поддержки хранилища объектов в плане Core, альфа-версия облачного нативного чарта GitLab теперь доступна без лицензии. Этот чарт представляет более облачную собственную архитектуру с контейнером для каждого компонента GitLab и не требует общего хранилища. Эти изменения повлияют на повышение гибкости, масштабируемости и производительности GitLab на Kubernetes.

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

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

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

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

Improvements to the environment metrics dashboard

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

GitLab Runner 10.7 (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

С этим релизом также вышла новая версия GitLab Runner — 10.7. GitLab Runner — это проект с открытым исходным кодом, который используется для запуска и отсылки результатов ваших работ CI/CD обратно в GitLab.

Самые важные изменения:

Полный список изменений вы найдете в CHANGELOG GitLab Runner.

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

Улучшения Omnibus (CORE, STARTER, PREMIUM, ULTIMATE)

  • Версия GitLab Mattermost 4.8.1 включает несколько улучшений платформы. В том числе эндпоинты iOS, которые позволяют пользователям загружать файлы больше 20 Мб, — и многое другое.
  • Обновлен дефолтный список ssl_ciphers для NGINX, за исключением ECDHE-RSA-DES-CBC3-SHA и DES-CBC3-SHA для предотвращения Sweet32.
  • redis_exporter обновлен 0.17.1.

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

Улучшения производительности (CORE, STARTER, PREMIUM, ULTIMATE, FREE, BRONZE, SILVER, GOLD)

Среди всех улучшений производительности GitLab 10.7 отдельно хотим отметить:

Полный список изменений производительности в GitLab 10.7


Подробные release notes и инструкции по обновлению/установке можно прочитать в оригинальном англоязычном посте: GitLab 10.7 released with open source Web IDE and SAST for Go and C/C++.

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