В последнем релизе уходящего года мы завершаем наш Мастер-план и хотим показать вам кое-что интересное из того, над чем мы работали.



В GitLab 8.15 появилась фича Auto Deploy – автоматизированная настройка развертывания и приложений для ревью (Review Apps). Для проекта на Ruby on Rails такая настройка займёт меньше минуты. Посмотрите, как это работает, в видео на 1:42.


Вдобавок, доступ к вашим средам (environments) стал быстрее и проще: через терминал непосредственно в GitLab (там же на 5:18)


Мы хотим дать каждому возможность использовать всю мощь контейнеров (containers), непрерывной интеграции и развертывания (continuous integration and deployment, сокращенно CD/CI), приложений для ревью (review apps) и планировщиков контейнеров (container schedulers). В GitLab 8.15 мы взяли на себя всю сложную работу по настройке, и вся она происходит совершенно прозрачно. В демонстрационном видео мы настраиваем и разворачиваем Ruby-приложение с review apps, несколькими средами и чатопсом (chatops, управление инфраструктурой через интеграцию с чатом) на кластер Kubernetes примерно за 12 минут. Без GitLab такая задача обычно занимает дни, если не недели.


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



Дед Мороз MVP месяца — Michael Munch, который интегрировал в GitLab красивое отображение математических формул (LaTeX). Michael работал над этой функциональностью больше полугода в нескольких мерж-реквестах (merge requests) с более чем тремя сотнями комментариев.


Мы также хотим поблагодарить Warren Postma за его помощь в нашем трекере задач и на форуме сообщества и в целом за популяризацию GitLab.


Ещё одна благодарность — Elan Ruusamae и Dirk Horner за их вклад в технический дизайн и реализацию фич, которые значительно усилили git-хуки (git hooks) в GitLab.


Спасибо вам, Warren, Michael, Elan, и Dirk!


Автоматическое развертывание (Auto Deploy)


Мы хотим, чтобы настройка полнофункционального конвейера CI/CI (CI/CD pipeline) с развертыванием через планировщик контейнеров (container scheduler) была доступна каждому. Она должна быть легкой в освоении, но при этом масштабируемой и прозрачной.


Auto Deploy дает возможность такой настройки. В вашем проекте появится новая кнопка, по нажатию на которую будет создан мерж-реквест (merge request, он же pull request) с шаблоном файла .gitlab-ci.yml, содержащим сценарий развертывания в используемый вами планировщик контейнеров с помощью Docker. Также в этом шаблоне присутствует настройка Review Apps, поэтому на работу новой фичи можно будет посмотреть сразу — еще до того, как вы примете мерж-реквест.


Auto deploy in GitLab 8.15


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


Настройка Auto Deploy в GitLab 8.15 показывается в видео на 1:42.


Это первая итерация, и пока что доступен только шаблон для развертывания на внешний (external) кластер OpenShift. Мы используем Herokuish и Heroku Buildpacks, чтобы упаковать ваше приложение в докер-образ (docker image) и развернуть его в Kubernetes на OpenShift. В будущем мы планируем добавить поддержку других планировщиков контейнеров и облачных платформ (таких как обычный кластер Kubernetes, Mesos и Docker Swarm). Мы будем рады вашему вкладу в коллекцию шаблонов.


За подробной информацией обращайтесь к документации по Auto deploy.

Веб-терминал


Представьте себе ситуацию: в вашем GitLab настроены и работают несколько динамических сред, созданных по запросу из того или иного проекта. Это могут быть приложения для ревью, staging или production-среды. Обычно для получения прямого доступа к ним нужно прикладывать лишние усилия. Это досадное ограничение: бывает полезно сделать что-то своими руками ради эксперимента или для отладки.


С веб-терминалом (web-terminal) эта задача сильно упрощается. Достаточно зайти на страницу сред вашего проекта и нажать на кнопку терминала. GitLab сам установит SSH-соединение с нужным хостом и предоставит вам полноценную консоль в окне браузера.


Web Terminal in GitLab 8.15


В демонстрационном видео работа веб-терминала показана на 5:18. Мы с нетерпением ждем отзывов о том, как эта фича помогла вам ускорить работу.


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

Улучшенный импорт из Bitbucket


Импорт из Bitbucket стал еще более гибким.
В GitLab 8.15 мы добавили импорт пулл-реквестов вместе с комментариями в мерж-реквесты GitLab, а также импорт milestone’ов (метки больших этапов разработки, которыми отмечаются обычные задачи) и вики-страниц.
Итого, получается следующий список импортируемых объектов:


  • Описание репозитория
  • Сам репозиторий git
  • Задачи и комментарии к ним
  • Пулл-реквесты и комментарии к ним
  • Milestone’ы
  • Вики

При импорте сохраняются все ссылки на пулл-реквесты и задачи, а также уровни доступа (публичный или приватный)


Подробнее об импорте из Bitbucket – в документации


Глобальные git-хуки


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


С добавлением глобальных хуков стало возможным создавать git-хуки, которые будут применяться для каждого проекта в инстансе GitLab. Это должно упростить применение единых правил для всего нового кода.


Создавайте хуки в директории hooks/<hook_name>.d/ или укажите GitLab Shell путь до директорий с ними.


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


Упорядоченные кастомные git-хуки


При создании кастомных git-хуков может иметь значение порядок их применения: если определенный хук не выполняется, нет никакого смысла пытаться выполнить последующие. Упорядоченные хуки выполняются в лексическом порядке и прекращают выполнение при неудаче любого из них.


К примеру, при создании хуков 1-hook.sh и 2-hook.sh, 1 всегда будет выполняться перед 2.


Данное нововведение усиливает функциональность хуков и добавляет возможности для кастомизации обработки входящих коммитов.


Больше информации на эту тему содержится в документации по git-хукам.


Спасибо Elan Ruusamae и Dirk Horner за помощь в разработке и имплементации данной функциональности, а также глобальных git-хуков!


Переопределение уровней доступа пользователей для LDAP групп (EE)


В GitLab EE существует возможность синхронизации LDAP групп с группами GitLab, таким образом назначая всем пользователям группы определенный уровень доступа. К примеру, можно назначить всем пользователям в LDAP группе developers уровень доступа Developer. Таким образом, при добавлении новых разработчиков в LDAP группу, им будет автоматически выдаваться соответствующий уровень доступа.


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


Override LDAP permissions in GitLab 8.15 EE


Slack Chatops


В версии 8.14 мы добавили Chatops в GitLab через интеграцию с Mattermost, а теперь делаем то же самое для Slack! То есть теперь вы сможете создавать, показывать и искать задачи прямо из Slack, что позволяет с легкостью переходить от обсуждения задачи к оформлению ее в трекере.


К тому же, теперь можно проводить развертывание в/из любой среды. Например, при вводе


/awesome-website deploy from staging to production

GitLab проведет развертывание последнего коммита из staging в master.


Slack Chatops in GitLab 8.15


Chatops для Slack можно настроить в свойствах проекта. Как всегда, мы рады вкладу пользователей в развитие интеграции чатов с GitLab.


Настройка Mattermost одним кликом


Сильно упрощена интеграция GitLab с Mattermost. Теперь это делается одним кликом, как показано в этом видео на 3:16.


Super easy Mattermost configuration in GitLab 8.15


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


Документация по интеграции Chatops с Mattermost

Диффы в письмах с нотификациями


Как вам известно, когда кто-то комментирует ваш дифф, вам отправляется письмо с нотификацией. Теперь в такие письма добавляется часть этого диффа, чтобы у вас сразу был контекст перед глазами.


Diffs in Notification emails in GitLab 8.15


Улучшения интерфейса


Мы с вами приложили серьезные усилия для упрощения работы пользователей с GitLab. Как следствие, в данном релизе содержится множество изменений, делающих работу с GitLab еще более приятной.


Обновление шрифтов


С целью улучшения читабельности и поддержки различных ОС/браузеров GitLab теперь использует системные шрифты. Эти шрифты оптимизированы под определенные платформы, благодаря чему работать с GitLab одинаково комфортно, независимо от того, откуда вы это делаете.


Для наглядности можно ознакомиться с оригинальным мерж-реквестом.


Уменьшенная пиксельная ширина интерфейса


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


Уникальный вид меток


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


Unique Labels in GitLab 8.15


Улучшенная прокрутка и загрузка сборок


Прокрутка и загрузка сборок теперь лучше работает и выглядит:


Improved Build Scrolling and Loading in GitLab 8.15


Меньший размер страниц


Сделав системные шрифты и улучшив автодополнения, мы существенно уменьшили размер всех страниц в GitLab. Данный мерж-реквест в проекте GitLab CE вместо 1800 Кбайт теперь занимает 718 Кбайт!


Улучшенные подсказки для пустых страниц


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


Even empty is beautiful in GitLab 8.15


Другие изменения и поправки


  • Улучшили доступность: добавили состояние фокуса в выпадающие опции
  • Добавили действия при наведении в нашу основную навигацию и табы по всему сайту
  • Улучшили действие при наведении, фокус и активное состояние для кнопок !7797
  • Добавили действие при наведении для элементов, совмещенных с меню тикетов или мерж-реквестов !7777

Поддержка математики для Markdown и AsciiDoc с помощью KaTeX


В комментариях и файлах репозитория теперь можно аккуратно оформлять математические данные, используя библиотеку KaTeX от Khan Academy.


Чтобы оформить внутристрочные математические формулы, используйте знаки доллара вокруг кода строки: $`a^2+b^2=c^2`$


Чтобы оформить многострочные математические выражения, используйте язык math для блока кода:


```math
a^2+b^2=c^2
```

Это работает не только с Markdown, но и с документами AsciiDoc. Прочитать документацию о поддержке математики


Beautifully rendered math in GitLab 8.15


За эту фичу спасибо Michael Munch.


Сообщения коммитов мержей стали чище


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


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


Merge branch '$SOURCE_BRANCH' into '$TARGET_BRANCH'

$TITLE

Closes $CLOSING_ISSUE_REFERENCES # only present if the MR closes issues

See merge request $MERGE_REQUEST_REFERENCE

Предыдущее дефолтное сообщение доступно в настройках сообщения коммита мержа.


Спасибо Gabriel Gizotti!


Краткие кросс-проектные ссылки в GitLab Flavored Markdown


Раньше ссылки на что-либо в другом проекте всегда включали пространство имен, даже если проект был в том же пространстве имен.


Теперь доступны краткие ссылки. Внутри проекта
gitlab-org/gitlab-ce вы теперь сможете обратиться к задаче под номером 1 в GitLab Workhorse,
написав gitlab-workhorse#1 вместо gitlab-org/gitlab-workhorse#1,
сэкономив драгоценное время на нажатиях клавиш!


Больше информации в специальной секции о ссылках GitLab в нашей документации о Markdown.


Спасибо Oswaldo Ferreira!


Создание тикета из нерешенного обсуждения в мерж-реквесте


В версии 8.14 мы добавили возможность блокировать мерж, когда имеются нерешенные обсуждения.


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


Спасибо Bob van Landuyt!


Ручные действия из схемы конвейера (CI)


Ручные действия позволяют вам запрашивать ручное взаимодействие до перехода на конкретную задачу в CI. Весь ваш конвейер может работать автоматически, но непосредственно для развертывания в production нужно сделать клик.


Сделать это можно прямо из схемы конвейера. Нужно только кликнуть на кнопку «Play», чтобы запустить конкретную задачу.


Manual actions on the pipeline graph


API действий пользователя


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


Узнайте больше в документации


Сортировка участников проекта или группы


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


Easily find people in projects and groups in GitLab 8.15




Подробные release notes и инструкции по обновлению/установке можно прочитать в оригинальном англоязычном посте: https://about.gitlab.com/2016/12/22/gitlab-8-15-released/


Перевод с английского выполнен переводческой артелью «Надмозг и партнеры», http://nadmosq.ru. Над переводом работали nick_volynkin, rishavant и sgnl_05.

Поделиться с друзьями
-->

Комментарии (9)


  1. eyeofhell
    03.01.2017 11:18
    +3

    Покопался немного на праздниках, докладываю как работает «web terminal» и «auto deployment». И то и другое — интерфейсы к Kubernetes. У вас где-то есть настроенный Kubernetes (например, готовый от Google Cloud или настроенный на AWS). Вы в настройках проекта выбираете «интегрировать с Kubernetes», вбиваете параметры доступа. После чего у волшебной палочки появляются два новых режима:

    1. «Audo Deployment» — это всего лишь wizard, который генерирует правильный CI конфигурационный файл для деплоя в Kubernetes. Правильный еще и в том плане, что проставляет нужные теги для работы web terminal.
    2. «Web Terminal»: если для проекта настроена интеграция с Kubernetes, то по клику на «web terminal» Gitlab попробует сделать SSH-из-браузера (как у Amazon Lightsail) на нужный Docker контейнер, куда приложение было раскатано. Чтобы магия работало, для контейнера должен быть проставлен правильный тег. Как раз его и проставляет скрипт деплоя, сгенерированный в шаге №1.


    3. Подводя итоги: работает только на Kubernetes, скрипт деплоя нужно писать самому, чтобы работал web terminal скрипт должен правильно все протегировать. Есть визард. Environment'ы сами по себе ничего не делают, просто связки имя-url, которые в интерфейсе обрастают кучей кнопочек вида «деплоить сюда», «web terminal сюда», «зайти на url» и так далее.

      Поправьте меня, пожалуйста, если я что неправильно выкопал. Ну и, традиционно, с наступившим!


    1. nick_volynkin
      03.01.2017 16:21

      Спасибо, отличное дополнение!


      Auto Deployment прошел всего одну итерацию разработки и там пока что только для Kubernetes/OpenShift есть шаблон, но в будущем должны появиться и другие. Предполагаю, что и терминал должен заработать с любым хостом, куда у GitLab есть доступ (а он и так есть, если настроен деплой).


      скрипт деплоя нужно писать самому

      К моменту настройки деплоя через GitLab CI хоть какой-то скрипт деплоя уже наверняка есть (bash/ansible/etc.). Нужно только дать GitLab права на его запуск (credentials в секретные переменные положить). Или вы имели в виду что-то иное?


      1. eyeofhell
        03.01.2017 18:14
        +1

        К моменту настройки деплоя через GitLab CI хоть какой-то скрипт деплоя уже наверняка есть (bash/ansible/etc.). Нужно только дать GitLab права на его запуск (credentials в секретные переменные положить). Или вы имели в виду что-то иное?


        Из анонсов и документации можно сделать неправильный вывод, что «auto deploy» — это какая-то магия, которой указываешь пальцем на голую машину с SSH, и оно волшебным образом туда что-то «деплоит», а потом еще и ssh-из-веба. На практике деплой как писался ручками, так и пишется, «auto deploy» предлагает простенький скелет, чтобы развернуть такое же простенькое веб приложение в kubernetes контейнер.

        Обратите внимание на ретроспективное когнитивное искажение, после прочтения комментариев вы обнаруживаете, что всегда об этом знали ^_^


      1. VolCh
        03.01.2017 20:29

        Насчёт какого-то скрипта далеко не факт. Деплоишь ручками, читаешь про чудеса CI/CD, решаешь попробовать что-то популярное и понимаешь что нужно кучу вещей писать руками, что и останавливалось от разработки баш-скриптов.


    1. nick_volynkin
      03.01.2017 16:25

      Кстати, говоря о теге для контейнера вы вот этот блок имеете в виду?


        environment:
          name: review/$CI_BUILD_REF_NAME
          url: http://$CI_ENVIRONMENT_SLUG.$KUBE_DOMAIN
          on_stop: stop_review


      1. eyeofhell
        03.01.2017 18:09

        https://docs.gitlab.com/ce/project_services/kubernetes.html


  1. umputun
    04.01.2017 22:50

    Я нежно люблю и активно исползьую gitlab и этот релиз мне нравится, однако приоритеты разработчиков иногда вводят в ступор. В 8.14 поломали совместимость со всеми текущими версиями git (точнее это git поломал, но результат от этого не меняется) и месяц было невозможно никому пушить в protected branch. Починка там была почти тривиальная, но по непостижимым для меня причинам она ждала 8.15, хотя просто просилась и кричала войти в скорейший, минорный релиз 8.14.х

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


    1. nick_volynkin
      08.01.2017 06:27

      А этот баг с registry уже отмечен в трекере? Если да, дайте ссылку, чтобы хабровчане пришли и наплюсовали его, авось совместными усилиями повысим приоритет.


      1. umputun
        08.01.2017 06:55

        это не баг, но отсутствие очевидной фичи — https://gitlab.com/gitlab-org/gitlab-ce/issues/17801