В GitLab 10.5 мы добавили возможность легкого шифрования трафика GitLab и масштабирования управления конвейерами, улучшили безопасность приложений, а также многое другое.
Уменьшено время безопасного развертывания GitLab
Невозможно говорить об интернет-безопасности, не упомянув протокол HTTPS. Его использование обязательно в случаях, когда инстанс GitLab открыт для общего доступа. HTTPS предоставляет два ключевых преимущества. Во-первых, это шифрование входящего и исходящего трафика при взаимодействиях с сервером, благодаря чему идентификационные данные пользователей и другая важная информация защищены от перехвата. Во-вторых, это возможность подтверждения идентификации сайта. Без такой проверки существует вероятность случайного логина на неверный сайт.
Преимущества HTTPS играют особо важную роль для удаленного использования или для пользователей мобильных приложений, поскольку они зачастую используют незащищенное соединение по Wi-Fi, что повышает риск утечки данных или подключения к мошенническим сайтам.
Однако, несмотря на все вышеуказанные преимущества, настройка HTTPS и запрос сертификатов могут потребовать серьезных затрат времени и сил, связанных, в частности, с кредитными картами и управлением ключами. В GitLab 10.5 мы добавили интеграцию с Let’s Encrypt — автоматизированным, бесплатным и общедоступным центром сертификации. Теперь сертификаты SSL можно получать мгновенно с помощью одной опции. Подключение Let’s Encrypt для вашего инстанса GitLab гарантирует шифрование трафика и подтверждение идентификации вашего сайта. Интеграция с Let’s Encrypt доступна как в платной, так и в бесплатной версии GitLab.
Масштабирование управления конвейерами
В данном релизе мы добавляем в общем-то несложную функциональность с большим потенциалом.
Использованию DevOps в корпоративной среде сопутствуют определенные сложности. У многих из наших крупнейших клиентов команда DevOps отвечает за поставку CI/CD конвейеров большому количеству команд разработки по всей организации. Управлять такими процессами довольно трудоемко, поскольку ранее не существовало масштабируемого способа поставки конфигурации конвейеров. Из-за этого приходилось вручную копировать код между файлами .gitlab-ci.yml
различных проектов. Помимо излишних затрат сил, такой подход создавал вероятность появления ошибок. Кроме того, было невозможно отследить, что процессы тестирования и развертывания проводятся стабильно для каждого репозитория.
Начиная с GitLab 10.5 у вас появляется возможность включить внешние файлы в определение конвейера CI/CD. Эти файлы могут быть как локальными (содержаться в том же репозитории), так и удаленными (доступны по HTTP/HTTPS). Включение локальных файлов позволяет разбить громоздкий файл .gitlab-ci.yml
на модули, с которыми работать проще. Использование удаленных файлов позволяет распределять эти модули по тысячам (потенциально, и по миллионам) репозиториев. Теперь у вас есть простой и стабильный способ поставки конфигурации конвейеров.
Улучшение тестирования безопасности с использованием Gemnasium
Меньше месяца назад GitLab приобрел Gemnasium. Как мы и обещали, мы немедленно предоставляем нашим пользователям продвинутую функциональность Gemnasium для проверки зависимостей. Часто бывает, что после таких приобретений компании поставляют нововведения как отдельные аддоны. Однако философия GitLab заключается в архитектуре единого приложения, которое устроено таким образом, что команды разработки, тестирования, безопасности и операций могут параллельно работать с одними и теми же данными в одном и том же интерфейсе. Поэтому мы полностью интегрируем технологию Gemnasium в GitLab CI/CD, значительно улучшая функциональность тестирования.
Благодаря продвинутым алгоритмам и расширенной базе уязвимостей улучшены результаты в JavaScript, Ruby и Python. Также добавлена поддержка PHP и Java.
Не пропустите новые возможности
В данной статье речь идет о 26 улучшениях GitLab (18 из которых доступны в версии с открытым исходным кодом). Полный список улучшений можно посмотреть здесь. Далее в статье мы расскажем о ключевых нововведениях в версии 10.5
(MVP) этого месяца — Hiroyuki Sato
Hiroyuki вносит вклад в разработку GitLab с самых ранних дней существования проекта, и в этом месяце он становится MVP уже в третий раз (впервые это случилось аж в GitLab 5.1!). В версии 10.5 он добавил возможность просмотра мерж-реквеста для коммита, что облегчает отслеживание изменений и ускоряет процесс разработки.
Спасибо еще раз, Hiroyuki! Хоть мы и знаем, что включение в Зал Славы GitLab это лучшая награда, мы также высылаем Hiroyuki тануки ручной работы, носки и футболку GitLab.
Мгновенный SSL с Let's Encrypt для GitLab
Зачастую в GitLab хранится исходный код проекта — интеллектуальная собственность, приватность которой необходимо защищать. Основополагающим шагом для этого является использование HTTPS для шифрования идентификационных данных и поддверждения идентификации сайтов.
Ранее для подключения HTTPS в GitLab было необходимо выполнить целый ряд действий: создать запрос на сертификат, заплатить центру сертификаций, скопировать файлы на сервер GitLab и, наконец, настроить GitLab для их использования.
В 10.5 мы значительно упростили этот процесс за счет интеграции с Let’s Encrypt. Если ваш инстанс доступен по интернету через протокол HTTP, то все, что теперь нужно сделать для подключения HTTPS, это присвоить letsencrypt['enable'] = true
в файле gitlab.rb
и провести переконфигурацию. Готово, HTTPS подключен для главного домена GitLab!
В последующих релизах Let’s Encrypt будет включен по умолчанию, а также будет добавлена поддержка других элементов GitLab, таких как Registry, Pages и Mattermost.
Больше информации об интеграции с Let’s Encrypt здесь
Включение внешних файлов в определения конвейеров CI/CD
Конвейеры CI/CD определены в YML-файле, находящемся в репозитории проекта. Часто бывает, что одни и те же определения работ используются для множества различных проектов. Также нередки ситуации, когда существующие сниппеты просто копируются из документации и примеров.
В GitLab 10.5 стал возможен импорт внешних файлов в главную конфигурацию при помощи нового ключевого слова include
. Эти файлы могут быть как локальными (из того же репозитория), так и удаленными (находящимися в публичном доступе по HTTP/HTTPS). Хорошими примерами работ, которые могут быть переиспользованы таким образом, являются проверки безопасности и конфигурации развертывания.
Документация по включению внешних файлов
Проверки зависимостей Gemnasium
Недавно GitLab приобрел Gemnasium, и мы сразу же начали совместную работу по интеграции этой замечательной технологии в нашу функциональность тестирования.
Благодаря базам существующих уязвимостей и улучшенному обнаружению новых, в GitLab 10.5 стало возможным получение крайне точных отчетов по безопасности зависимостей вашего приложения на следующих языках:
- Ruby
- Java (Maven)
- Javascript (NPM)
- Python
- PHP
Если вы уже пользуетесь Auto DevOps, то вам не нужно ничего менять. Если вы скопировали описание работы в ваш конвейер, обновите его для доступа к новой функциональности. Больше информации на странице с примером.
Документация по поддерживаемым языкам и инструментам проверок безопасности
Отслеживание дополнительных метрик производительности в браузере
В GitLab 10.3 мы добавили тестирование производительности в браузере, с помощью которого можно быстро оценить влияние мерж-реквеста на производительность. В данном релизе мы проводим анализ трех дополнительных метрик: индекс скорости, размер трансфера и количество запросов.
Также мы добавили возможность сохранения всего отчета sitespeed.io целиком как артефакта, что предоставляет легкий доступ к большому объему данных производительности и отладки. Если вы используете Auto DevOps, такие отчеты будут сохраняться автоматически.
Больше информации о тестировании производительности в браузере здесь
Поддержка блокировки Git LFS 2
В Git LFS 2.0.0 была добавлена поддержка блокировки. Теперь эта функциональность поддерживается и в GitLab, благодаря чему можно блокировать файлы LFS при помощи клиента Git LFS. Заблокированные файлы легко опознать по соответствующей иконке.
Поддержка блокировки любого файла или директории была добавлена в GitLab Premium 8.9. С ее помощью можно блокировать файлы через интерфейс GitLab. В GitLab Premium 10.5 мы интегрировали блокировку Git LFS с блокировкой GitLab.
Больше информации об использовании Git LFS здесь
Другие улучшения в GitLab 10.5
Просмотр эпиков в режиме дорожной карты
В данном релизе мы вводим первую итерацию дорожных карт (roadmap). Дорожные карты позволяют одновременно просматривать сразу несколько эпиков одной группы (или даже подгруппы) с упорядочиванием по времени. Теперь можно легко посмотреть когда эпики начинаются и заканчиваются относительно друг друга.
Это нововведение упрощает планирование и отслеживание прогресса с течением времени, а также наглядно демонстрирует пересекающиеся рабочие процессы. Например, вы хотите запустить новую фичу вашего продукта во втором квартале 2018 года и планируете проведение соответствующей маркетинговой кампании. В таком случае вы создадите один эпик для работы над функциональностью и другой для маркетинга. В режиме дорожной карты оба этих эпика будут отображаться одновременно, что упростит контроль над временем их начала и завершения.
Документация по дорожным картам
Динамическое управление секретными переменными
Секретные переменные используются для настройки конвейеров CI/CD таким образом, чтобы чувствительная информация была скрыта от внешнего доступа. Пользователи с уровнем доступа Master могут определять их в меню CI/CD > Settings, однако при таком подходе можно определять переменные только по одной.
В GitLab 10.5 мы добавили динамическое управление секретными переменными с поддержкой добавления нескольких переменных одновременно, что упрощает работу с ними.
Документация по секретным переменным
Определение домена Auto DevOps на уровне инстанса
Auto DevOps может проводить автоматическое развертывание вашего приложения в кластер Kubernetes, однако для доступа к нему необходимо предоставить имя домена, связанного с публичным IP адресом этого кластера.
Начиная с GitLab 10.5 вы можете определить имя домена на уровне инстанса и использовать его для всей организации: оно будет использоваться автоматически для любого проекта, в котором имя домена не задано.
Документация по базовому домену Auto DevOps
Перенос групп GitLab
Теперь можно переносить группы GitLab целиком из одной в другую, что упрощает процесс структуризации групп и подгрупп.
Документация по группам GitLab
Объекты Ingress настроены для метрик Prometheus
Развернутые объекты Ingress теперь настроены для метрик Prometheus, что упрощает отслеживание следующих системных метрик: задержка, пропускная способность и частота появления ошибок.
Больше информации о развертывании Ingress на Kubernetes здесь
Дополнительные утверждения мерж-реквестов
Мы упростили логику утверждения мерж-реквестов: теперь настраивать и использовать разрешения стало еще проще.
В частности, теперь стало возможным утверждение мерж-реквеста, даже если необходимое количество утверждений уже набрано. Ревьюеры больше не зависят друг от друга и могут утверждать мерж-реквесты, когда им удобно. Такой подход поощряет большее количество пользователей участвовать в процессе код-ревью.
Однако, если того требует рабочий процесс, вы можете вручную установить количество необходимых утверждений в соответствии с выбранными вами ревьюерами.
Как и прежде, ранее выставленные утверждения можно удалять.
Документация по утверждению мерж-реквестов
Отображение задач всех подгрупп на странице задач группы
Теперь стало возможным отображение задач всех подгрупп на странице задач их общей группы. Это очень полезно в случаях, когда иерархия подгрупп образует дерево из нескольких уровней, а вам нужно просмотреть все его задачи в одном месте. Примерами таких ситуаций могут быть команды с микросервисами, распределенными по множеству проектов и групп, или организации со сложной структурой иерархии команд.
Точно такие же изменения внесены и для страницы мерж-реквеста.
Цветные иконки в GitLab Flavored Markdown
GitLab Flavored Markdown (GFM) теперь поддерживает цветные иконки. Просто введите соответствующий цветовой код в любом месте, где поддерживается GFM (например, описания и комментарии задач и мерж-реквестов), и GitLab создаст в этом месте цветную иконку. Это нововведение будет особенно полезным для дизайнеров и фронтэнд разработчиков, поскольку оно упростит совместную работу над дизайнами, содержащими различные цвета, без необходимости покидать GitLab.
Спасибо @thetonyrom и @raviolicode за их вклад!
Документация по GitLab Flavored Markdown
Пуш для создания проекта
Теперь при пуше репозитория в проект с несуществующим именем (в вашем персональном пространстве имен) будет автоматически создан приватный проект с таким именем. Благодаря этому создание проектов станет еще быстрее!
Больше информации о создании проектов здесь
Аварийное восстановление с единственной вторичной базой теперь в общем доступе
Функциональность аварийного восстановления использует репликацию Geo для быстрого перехода на другой сайт с минимальными усилиями в случае аварийной ситуации. Аварийный переход в конфигурациях с единственной вторичной базой теперь является общедоступным.
Документация по аварийному восстановлению
Меню поиска и фильтрации эпиков
В этом релизе мы добавили на страницу эпиков меню поиска и фильтрации. Это тот же поиск, который используется по всему GitLab для задач и мерж-реквестов. В этом релизе появилась возможность фильтровать эпики по автору, а также осуществлять поиск по заголовкам и описаниям эпиков. Дополнительно доступна сортировка эпиков по дате создания или последнего обновления.
Это дает возможность пользоваться преимуществами списков, к которым вы уже наверняка привыкли при работе с задачами и мерж-реквестами. С помощью поиска и фильтрации вам будет легче управлять именно теми эпиками, которые вам нужны. В будущем мы планируем добавить дополнительные фильтры — и начнем с фильтрации по меткам.
Устойчивое развертывание публичных проектов
Auto DevOps (доступный пока в бета-версии) может автоматически разворачивать ваше приложение на кластере Kubernetes. Однако этот процесс может остановиться, если кластеру понадобится перезапустить поды — например, если их кто-то переместил, и исходный образ не получается найти в кэше.
Начиная с GitLab 10.5 публичные проекты автоматически настраивают кластер так, чтобы у него был доступ к GitLab Container Registry даже после окончания работы конвейера развертывания, что сделает окружение ваших приложений более стабильным.
Подробнее о бета-версии Auto DevOps
Возможность для разработчиков создавать проекты в группах
С каждым релизом мы улучшаем гибкость модели доступа GitLab: администраторам группы или сервера теперь доступна настройка, которая позволит пользователям с ролью Developer создавать проекты.
Подробнее в документации об уровнях доступа для создания проекта
Легкая интеграция Prometheus в Kubernetes
В GitLab 10.4 мы добавили возможность одним кликом разворачивать Prometheus в соединенный с ним кластер Kubernetes. В этом релизе мы продвинулись дальше: мы сделали интеграцию проекта с Prometheus автоматической.
GitLab использует Kubernetes API для запросов к развернутому серверу Prometheus, при этом этот сервер не обязан быть открытым для доступа извне кластера.
Больше информации о контроле приложений с помощью Prometheus
API глобального поиска
Мы добавили в GitLab API поддержку глобального поиска. По сути, это тот же глобальный поиск из веб-интерфейса GitLab, только завернутый в API — чтобы позволить внешним системам пользоваться преимуществами данной функциональности.
Это позволит командам создавать настраиваемые рабочие процессы — например, искать что-то в файлах и отправлять статистику по полученным результатам.
API работает вне зависимости от наличия у вас Elasticsearch (доступного только для GitLab Starter и выше).
Подробнее в документации об API глобального поиска
Редизайн страницы списка меток
Мы упростили дизайн страницы списка меток, и теперь вам станет проще разбираться в метках и управлять каждой из них. Также мы привели иконки в соответствие с нашим новым дизайном и перегруппировали ссылки на задачи и мерж-реквесты для каждой конкретной метки — они теперь занимают меньше места в ширину, что упрощает работу с ними.
Подробнее в документации о метках
Переход к связанным мерж-реквестам со страницы коммита
Ссылки на связанные с коммитом мерж-реквесты теперь отображаются непосредственно на странице коммита. Это полезно, когда вы просматриваете историю коммитов репозитория и хотите узнать общее назначение и технический контекст коммита. Теперь вы сможете легко переходить к мерж-реквесту, породившему коммит прямо со страницы этого коммита. Из мерж-реквеста, в свою очередь, вы увидите все предыдущие обсуждения; а если с ним была связана задача (например, с помощью механизма закрытия задач, вы даже сможете перейти обратно к ней, чтобы посмотреть ее назначение.
За эту фичу спасибо @hiroponz.
Документация о переходе к связанным мерж-реквестам со страницы коммита
Улучшения локализации
Мы продолжаем работать над локализацией GitLab: в этой версии мы экстернализировали строки в меню задач и мерж-реквестов, на странице графиков репозиториев и диаграмм репозиториев. Возможность доступна любому члену нашего сообщества переводчиков. Если вы хотите присоединиться к переводу GitLab, мы будем вам рады.
Подробнее о локализации GitLab
Бета-версия хэшированного хранилища
Хэшированное хранилище — это новый тип поведения хранилища, появившийся в версии 10.0. Вместо связывания URL проекта со структурой папки, в которой репозиторий будет храниться на диске, мы связываем хэш, основанный на идентификаторе проекта. Это делает структуру папки неизменной, что помогает избавиться от дополнительных требований по синхронизации состояния между URL и структурой диска. Это значит, что переименовать группу, пользователя или проект можно одной транзацкией в базе данных — мгновенно.
Узнайте подробности в документации о хэшированном хранилище
Улучшения Omnibus
- В GitLab Mattermost 4.6 уменьшилась скорость загрузки канала, и улушено соостветствие секции 508 (Section 508)
- Chef обновлен до 12.21.31
- Chef Omnibus обновлен до 5.6.3.
- Добавлены правила SELinux, чтобы быстрее осуществлять поиск ключей SSH.
Подробнее в документации об Omnibus GitLab
GitLab Runner 10.5
Также в этом релизе мы выпускаем следующую версию GitLab Runner — 10.5. GitLab Runner — это проект с открытым исходным кодом, используемый для запуска работ CI/CD и пересылки результатов обратно в GitLab.
Самые важные изменения::
- Исправили совместимость с Git версии 1.7.1
- При оценке соединений TLS теперь всегда загружается пул сертификатов операционной системы
- Не добавляется /cache тома, если пользователь уже его предоставил в регистре gitlab-runner
Полный список изменений — в CHANGELOG GitLab Runner.
Подробности в документации о GitLab Runner
Улучшения производительности
Несколько улучшений производительности в GitLab 10.5, которые просто нельзя не упомянуть:
- Глобальный поиск ограничен 1000 результатов, чтобы предотвратить простои базы данных
- Результаты поиска по коду больше не устаревают, если среди них встречается длинная строка
- Быстрее обновляется виджет мерж-реквеста
- Значительно повысила производительность новая настройка, исключающая статистику коммита из ответа API коммита
Полный список улучшений производительности этой версии вы можете посмотреть в документации
Подробные release notes и инструкции по обновлению/установке можно прочитать в оригинальном англоязычном посте: GitLab 10.5 released with Let's Encrypt integration, Gemnasium dependency checks, and CI/CD external files.
Комментарии (10)
ivanych
07.03.2018 21:30>В частности, теперь стало возможным утверждение мерж-реквеста, даже если необходимое количество утверждений уже набрано. Ревьюеры больше не зависят друг от друга и могут утверждать мерж-реквесты, когда им удобно.
Не понял этот момент. Вроде и сейчас ровно так же всё устроено — наличие необходимого количества утверждений никак не мешает поставить еще одно утверждение. Что именилось?
voe
Так много для платной версии и так мало для бесплатной версии, печаль.
Sleuthhound
Берем исходники, собираем, получаем EE версию или нет? что-то изменилось?
voe
Разве в исходниках лежит EE версия?
Sleuthhound
Во времена версии 7.x я из исходников собирал и ставил Gitlab ради поддержки MySQL, в то время она была только в EE, да и сейчас вроде тоже только в EE.
Помнится даже обновлялся с 7.12.2 до 8.2.x в несколько ступеней (с 7.12.2 до 7.13.5, с 7.13.5 до 7.14.3, 7.14.3 до 8.0.5, с 8.0.5 до 8.1.3 и т.д.) и оно работало и работало, но потом MySQL стало не сильно актуально и мигрировали на пакетную версию Gitlab CE для Debian.
voe
Не нашёл EE версии в исходниках, покраснел мере актуальных. В инструкции по сборки из исходников прописан ce репозиторий.
aionin Автор
Нашел репозиторий с исходниками EE
В инструкции по сборке и установке действительно упоминается CE версия. Однако, сама инструкция очень подробная.
iSage
Не путайте. В CE всегда была поддержка MySQL. Это просто Omnibus-пакеты были собраны с постгрей.
EE никогда не было в открытом доступе.
aionin Автор
Ничего не изменилось. GitLab — open source. Можно скачать исходники, собрать и работать.
Собственно потенциальных сложностей две:
1) судя по инструкции путь предстоит неблизкий. Все компоненты ставим отдельно, отдельно настраиваем, запускаем и интегрируем.
2) с каждым обновлением (раз в месяц) можно начинать все сначала :)