GitLab 8.11: канбан-дошка та вирішення конфліктів одним кліком

Ця стаття — переклад релизной статті компанії GitLab. Релізи виходять кожен місяць 22 числа.
Якщо ви пропустили попередні, ось посилання: 8.10, 8.9, 8.8


В новому GitLab 8.11 стільки всього цікавого, що ми ледве стримуємо себе в рамках конструктивного оповідання!
Отже, в новій версії з'явилися:
  • принципово новий новий спосіб подання та роботи з тікетами (issues);
  • слеш-команди (
    /command
    ), для роботи з тікетами;
  • можливість створювати шаблони тікетів (в необмеженій кількості);
  • онлайн-середовище розробки;
  • можливість вирішувати конфлікти мержа не виходячи з GitLab;
  • налаштування прав на пуш в гілку для окремих учасників і груп (тільки ЇЇ);
  • … і багато інших фіч, про яких ми теж розповімо.
MVP цього місяця — Clement Ho. Спасибі йому за мерж-реквесты і чуйність у роботі над завданнями.
Дошка тікетів (Issue Board)
Тікети (issues) в GitLab — дуже гнучкий інструмент. Вони можуть містити посилання один на одного, можна визначити їх пріоритети, можна відсортувати за популярністю. Дошка тікетів додає новий спосіб роботи з ними.
Тепер можна налаштовувати робочі процеси (workflows) і швидко отримувати інформацію про стан тікетів. Все це доступно простий і приємною оку дошці, схожою на ті, що використовуються в Канбане або Скраме.
Дошка тікетів в GitLab 8.11
Дошка створюється для кожного проекту автоматично. За замовчуванням усі відкриті тікети формують список-бэклог (Backlog), а всі закриті з'являються в списку завершених (Done list).
Додаючи нові списки, ви створюєте нові робочі процеси. Приналежність тікета до списку визначається міткою. При додаванні тікета в список до неї додається відповідна мітка, при видаленні зі списку — мітка видаляється.
Якщо у вас раніше були теги на зразок
фронтенд
,
бекенд
та
дизайн
— саме час зробити з них списки. Тікети з'являться в них автоматично. І, звичайно, тікет може належати більш ніж одному списку.
Якщо хочете подивитися на цю фічу в дії, загляньте на дошку GitLab CE версії 8.12.
Документація по дошках тікетів
Дозвіл конфліктів при мерже
Мержи у великих і активно розроблюваних проектах зазвичай викликають багато проблем. Ми хочемо, щоб у вас був вбудований інструмент для вирішення конфліктів. Тому тепер можна це робити прямо в інтерфейсі GitLab.
Дозвіл конфліктів при мерже в GitLab 8.11
Коли мерж блокується конфліктом, можна просто натиснути кнопку "Resolve these conflicts" і перейти в інтерфейс дозволу. Там можна вибрати потрібні рядки і закоммитить отриманий результат.
Зрозуміло, що так вийде дозволити далеко не всі конфлікти. Але ми сподіваємося, що в більшості випадків цей інструмент допоможе вам прискорити проходження мерж-реквестов.
Документація з вирішення конфліктів
Дозволи на роботу з гілками для конкретних користувачів (тільки EE)
Тепер у Enterprise Edition можна налаштовувати дозволу на пуш або мерж в гілку не тільки для підгруп користувачів (як
developers
або
owners
), але і для конкретних користувачів.
Нові налаштування можна поєднувати з іншого функціональністю, у тому числі з дозволами для підгруп. Наприклад, можна дозволити пушити безпосередньо в гілку тільки тимлидам Петі і Маші, але підтверджувати мерж-реквесты в цю гілку — всім членам групи рівня
developer
і вище.
Дозволу на роботу з гілками в GitLab 8.11
Для кожної дії (пуш і мерж) можна налаштувати будь-яку кількість авторизованих користувачів.
Документація за дозволами на роботу з гілками
«Закриття» коментарів мерж-реквестах.
У мерж-реквестах бувають довгі гілки коментарів, в яких можна заплутатися. Але кожен з них важливий.
Ми додали можливість відзначити коментар або цілу гілку як оброблену і закрити її.
Закриття обговорень в GitLab 8.11
У мерж-реквестах тепер також є лічильник незакритих обговорень і зручна кнопка переходу до наступного відкритого обговорення.
Перехід до наступного відкритого обговорення в GitLab 8.11
Документація по закриттю обговорень в мерж-реквестах
Схеми конвеєрів.
Конвеєри в GitLab можуть мати досить складну структуру з безліччю послідовних і паралельних складок. Тепер можна подивитися на схему конкретного конвеєра, що відображає його будову і стан. Така схема наочно показує відбуваються в ньому процеси.
Схеми конвеєрів у GitLab 8.11
Просто натисніть на конвеєрі на сторінці мерж-реквеста або в списку конвеєрів. Ви побачите схему цього конвеєра з відображенням виконаних, провалених, активних і очікують збірок.
Шаблони тікетів і мерж-реквестов.
Можливість стандартизувати тікети і мерж-реквесты з допомогою шаблонів вже була в GitLab Enterprise Edition. Починаючи з GitLab 8.11 шаблонів може бути багато — наприклад, один для помилок, а інший для пропозицій. А сама можливість є у всіх версіях: GitLab.com, GitLab CE/EE.
Шаблони пишуться в розмітці Markdown і лежать у вашому сховищі відповідно в папках
.gitlab/issue_templates
та
.gitlab/merge_request
:
Шаблони тікетів і мерж-реквестов в GitLab 8.11
Мета цієї фічі — поліпшити зовнішній вигляд і повноту пропозицій, повідомлень про помилки і мерж-реквестов.
Документація по шаблонах
Слеш-команди
Тепер у GitLab є слеш-команди (
/command
) — так само, як в IRC, HipChat, Mattermost або Slack. Вони дозволяють змінювати мітки, призначати виконавців, підписуватися і відписуватись від тікетів і робити багато чого іншого — швидко і не відриваючи рук від клавіатури. Команди працюють в описі тікета або мерж-реквеста, а також у коментарях.
Як ними користуватися:
  1. Ви вводите текст, що містить команду (з клавіатури, з шаблону, через API, як завгодно).
  2. Підтверджуєте відправлення коментаря, збереження тікета або реквеста.
  3. Команди виконуються і більше не показуються в тексті. Якщо коментар складався тільки з команд, що він буде виконаний, але не опублікований.
Слеш-команди в коментарях GitLab 8.11
Можна використовувати слеш-команди навіть при створенні нового тікета або реквеста:
Слеш-команди при створенні тікета в GitLab 8.11
Якщо послідовно вказати кілька команд, то всі вони будуть виконані.
Кілька ідей, як можна використовувати слеш-команди:
  • У листі у відповідь на сповіщення з тікета або мерж-реквеста (текст листа стає коментарем).
  • В шаблоні тікета або мерж-реквеста.
  • За notes API.
Ми самі з нетерпінням чекаємо ваших розповідей про те, які ще способи використання ви винайдете.
Документація по слеш-командам
Інтеграція з Koding
Koding дозволяє запускати середовище розробки в хмарі, використовувати єдині налаштування середовища для всієї команди і навіть використовувати локальний редактор. Завдяки цьому не потрібно витрачати час на установку і налаштування стека для кожного нового комп'ютера і при будь-якій зміні.
Починаючи з версії 8.11 GitLab підтримує інтеграцію з Koding. Тепер одним натисканням кнопки можна викачати проект цілком або окремий мерж-реквест і відкрити його в повноцінній хмарної IDE. (зверніть увагу, що на GitLab.com інтеграція з Koding поки не додано).
Увімкніть підтримку Koding у Admin > Application settings
Koding, an integrated IDE in GitLab 8.11
Налаштуйте Koding для роботи з вашим проектом:
Koding, an integrated IDE in GitLab 8.11
Koding, an integrated IDE in GitLab 8.11
І все! Тепер ви можете швидко викачати будь мерж-реквест, гілку і отримати проекту в повноцінну IDE.
Koding, an integrated IDE in GitLab 8.11
Ми підготували невелике відео, що показує процес роботи зв'язки Koding + GitLab:
Для того, щоб більше дізнатися про Koding в GitLab, зверніться до документації.
Конвеєри в мерж-реквестах
Тепер конвеєри відображаються в мерж-реквестах:
Pipelines in merge requests in GitLab 8.11
Натисніть на конвеєр, щоб побачити його схему і білди, що відносяться до нього.
Відображення статусу розгортання для мерж-реквестов
Тепер ви можете вказати URL для своїх середовищ розгортання (environments):
Set the URL of any environment in GitLab 8.11
Завдяки цьому GitLab показує статус розгортання для мерж-реквестов у випадках, коли розгортання відбувається автоматично при мерже:
See deploy status in merge request in GitLab 8.11
Після успішного мержа GitLab покаже вам посилання на середу розгортання, що дозволяє побачити результат мерж-реквеста в один клік.
Веб-хуки для конвеєрів (pipelines)
Для спрощення інтеграції з конвеєрами GitLab ми додали веб-хуки для них. Вони спрацьовують при створенні, запуску або завершення роботи конвеєра.
Для того, щоб додати веб-хук, виберіть
Webhooks
в меню Settings вашого проекту.
Підсвічування і приховування коду
Тепер редактор GitLab підтримує підсвічування і дозволяє приховувати блоки коду.
Code highlighting in GitLab 8.11
Посилання на мерж-реквесты при пуше
Тепер, пуше на GitLab з'являються посилання на створення мерж-реквеста, а також на всі мерж-реквесты, що мають відношення до поточного.
Merge request links when pushing in GitLab 8.11
Значок покриття тестами (test coverage)
З'явилася можливість створювати значки, показують покриття тестами вашого проекту:
Coverage Badge in GitLab 8.11
Якщо ви не використовували відображення покриття в GitLab, підключіть його в налаштуваннях конвеєрів:
pipelines/settings
.
[Документація по значках покриття тестами]http://docs.gitlab.com/ce/ci/pipelines.html#sts=Test coverage report badge)
Тимчасові обмеження на доступ до проекту
При видачі доступу до проекту окремому користувачу, або групі, тепер можна встановити певну дату, після якої доступ до проекту буде для них закритий.
Це спрощує роботу з правами доступу для тимчасових членів команди.
Переміщення проектів між шардами (тільки EE)
У GitLab 8.10 були добавлены множинні точки монтування (mount points).
У GitLab 8.11 з'явилася можливість переміщувати проекти між шардами (shards) за допомогою команди rake. Ця функціональність не передбачається для частого використання, однак вона може виявитися корисною у випадках, коли ви хочете протестувати новий шард або перемістити часто використовуваний проект на сховище з швидким доступом.
Поліпшення продуктивності
У даному релізі було введено ряд змін, спрямованих на підвищення продуктивності — мерж-реквесты і їх диффы стали ще швидше! Нижче наведені графіки, що показують різницю в продуктивності після розгортання GitLab 8.11 RC2 на GitLab.com (падіння продуктивності потрапляє на розгортання).
Час завантаження диффов для мерж-реквестов:
Performance improvements in GitLab 8.11
Кількість виконаних SQL-запитів при відображенні диффов:
Performance improvements in GitLab 8.11
Час, витрачений на виконання SQL-запитів при відображенні диффов:
Performance improvements in GitLab 8.11
Також значно підвищилася продуктивність конвеєрів:
Performance improvements in GitLab 8.11
Нижче наведено детальний список проведених поліпшень і відповідних мерж-реквестов:
Поліпшення
  • Поліпшений процес перевірки на можливість користувачеві переглядати кілька тікетів: !5370
  • Покращено процес перевірки максимального рівня доступу користувача: !5412
  • Зменшено кількість SQL-запитів для відображення CI графіків: !5502
  • Додано поліпшення для роботи GitLab'а з Git, спрямовані на зменшення кількості використовуваних команд і більш швидке сортування номерів версій: !5536, !5375
  • Інформація про авторів комітів тепер кешується для кожної Sidekiq-транзакції щоб уникнути додаткових вибірок: !5537
  • Зменшено кількість запитів, які використовуються для відображення диффов мерж-реквестов: !5551
  • Покращено ітерація по наборам диффов: !5564
  • Підвищена продуктивність методів, залежать виключно від статистики диффов: !5568
  • Підвищена продуктивність створення диффов шляхом видалення зайвих перевірок на текстові блобы: !5575
  • Видалені непотрібні виклики методів при створенні диффов: !5591
  • Покращена перевірка на активність diff note: !5597
  • Поліпшений процес створення посилань на трекер тікетів: !5608
  • Підвищена продуктивність парсинга посилань у документах Markdown: !5629
  • Підвищена продуктивність синтаксичної підсвічування блоків коду в документах Markdown: !5643
  • Поліпшений процес генерації ключів кеша для документів Markdown: !5715
  • Поліпшений процес сортування тегів Git: !5723
  • Видалені триграммные індекси для таблиці
    ci_runners
    (тільки для PostgreSQL): !5755
  • Видалені вибірки комітів
    DiffHelper
    : !5756
  • Видалені 45 надлишкових індексів для баз даних: !5759
  • Назад додано кешування todo-лічильників: !5789
  • Зменшено кількість проектів, що використовуються в запитах на отримання списку todo: !5791
  • Більше не відображаються SVG-зображення розміром більше 2 мегабайт, завдяки чому зменшено час завантаження і використання пам'яті: !5794
  • Вирішена проблема з витоком пам'яті в sanitization-фільтрі Markdown: !5808
  • Змінене відображення випадаючого меню, що показує список проектів, які можна перемістити тікет — тепер використовується посторінковий висновок замість відображення повного списку: !5828, !5686
  • Видалені виклики методів, відповідальних за пошук непотрібних блобов Git: !5848
  • Додана асинхронне завантаження випадаючих меню для гілок в діалогах cherry pick і revert: !5607
  • Поліпшені запити, які використовуються для оцінки todo як завершених: !5832
  • Проведено апдейт gitlab_git до версії 10.4.7 для використання поліпшень, що з'явилися в цій версії бібліотеки: !5851
  • Поліпшені перевірки доступу Git в Enterprise Edition: !647
  • Видалений непотрібний індекс таблиці
    geo_nodes
    : !639
  • Ace Editor тепер завантажується тільки по необхідності, що зменшує розмір використовуваного JavaScript майже на 100 кілобайт: !4914
Нові фічі
  • Sidekiq тепер кешує деякі об'єкти транзакцій. Ця опція включена за замовчуванням, її можна відключити через змінну оточення: !5054
  • Тепер GitLab може використовувати ruby-prof при обробці запитів, зберігаючи дані профилировки на диск для подальшого перегляду. Для використання цієї фічі потрібно визначити токен в заголовку: !5281
  • Додана можливість відстеження кастомних подій з допомогою GitLab Performance Monitoring. Наприклад, кількість пушей, форков проектів і т. д.: !5830
Инструментирование
  • Проведено инструментирование Nokogiri: !5470
  • Зменшена непотрібне навантаження на инструментирование викликів методів: !5550
  • Проведено инструментирование класу
    Repository
    : !5621
  • Проведено инструментирование
    Gitlab::Highlight
    : !5644
  • Проведено повторне интсрументирование
    Project.visible_to_user
    : !5793
GitLab Mattermost 3.3
GitLab 8.11 поставляється з Mattermost 3.3, відкритим аналогом Slack.
У Mattermost 3.3 додані локалізації на китайський, корейський та голландська мови, бот на Go
можливість позначати (flag) пости, згадки виду
@here
та багато іншого.
Крім того, у цієї версію Mattermost увійшли кілька security updates, тому ми настійно рекомендуємо оновитися на неї.
Підтримка Redis Sentinel
У GitLab тепер еть експериментальна підтримка Redis Sentinel.
Всі подробиці у документації
Інші зміни
Цей реліз включає в себе і багато інші поліпшення, включаючи різні security fixes. Повний список змін доступний Changelog.
Upgrade-барометр
Оновлення до GitLab 8.11 зажадає даунтайма з-за міграцій баз даних
Даунтайм для сайту GitLab.com (найбільший з відомих нам инстансов GitLab) склав 15-30 хвилин. В залежності від кількості даних на вашому инстансе ваш даунтайм може бути менше.
Одна з міграцій видаляє кілька стовпців в кількох таблицях (і інстанси GitLab потрібно згорнути, щоб ці дані не пропали в процесі доступу до них).
Дві інші міграції створюють нові таблиці і наповнюють їх інформацією на основі вже наявних у системі даних: в цьому випадку даунтайм потрібен, щоб потрібні дані не змінилися в процесі роботи міграції (і залишалися незмінними, поки розгортання 8.11 не завершено повністю).
Нарешті, ще одна міграція додає два зовнішніх ключа (foreign keys), і тут даунтайм потрібен для гарантії відсутності одночасного доступу до змінюваним даними.
Старіння (deprecation) Ruby 2.1
З цим релізом ми оновили Ruby до версії 2.3.
Для ручних установок ми настійно рекомендуємо вам оновити Ruby до 2.3. Встановлення GitLab, зроблені через Omnibus, автоматично будуть використовувати Ruby 2.3.
Підтримка Ruby 2.1 і 2.2 буде повністю припинена у GitLab версії 8.13.
Для тих, хто оновився раніше інших
Якщо ви оновилися до 8.11 відразу після релізу і в процесі reconfigure отримали помилку
undefined method merge! for nil:NilClass
, то скачайте новий пакет з молодшою версією .1
8.11.0-ce.1
.
Просто запустіть
apt-get update
and
apt-get install gitlab-ce
/
apt-get install gitlab-ee
, і все повинно прислухатися до розпоряджень саме.
Форсована двофакторна аутентифікація при использоваии GitLab API і Git поверх HTTP
Якщо у вас включена двофакторна аутентифікація і ви намагаєтеся отримати API-токен через метод
/sessions
або Resource Owner Password Credentials flow provided в OAuth2, то ви не зможете залогінитися. Для успішного логіна у цих випадках вам потрібно буде використовувати Personal Access Token.
Детальніше про personal access tokens
Реиндексирование Elasticsearch (тільки для EE)
Ми змінили структуру індексів Elasticsearch і тепер вони використовують взаємини типу «батько-дитина». Це підвищує продуктивність, але вимагає повної перебудови всіх індексів Elasticsearch. Після оновлення до 8.11 вам треба буде вручну видалити старі індекси і побудувати нові.
Для видалення старих індексів зробіть ось такий запит до Elasticsearch:
curl -XDELETE 'http://localhost:9200/_all/'

Для перебудови індексів виконайте дії, описані в документації щодо інтеграції з Elasticsearch
Увага Описане вище застосовно тільки якщо ви оновлюйтеся з попередньої версії (8.10). Якщо ви оновлюйтеся з більш ранніх версій, перевірте розділи «Upgrade-барометр» для всіх проміжних версій.
Якщо ви оновлюйтеся з версії GitLab, меншою, ніж 8.0 і при цьому у вас включений CI, вам потрібно спочатку оновитися до 8.0.
За замовчуванням в процесі оновлення всі пакети Omnibus будуть зупинені, потім будуть прогнаны всі їх міграції, і тільки потім вони будуть запущені знову. Це поведінка не залежить від «розміру» оновлення. Змінити цю поведінку можна, створивши файл /etc/gitlab/skip-auto-migrations.
Установка
Якщо ви встановлюєте GitLab з «нуля», прочитайте відповідний розділ: https://about.gitlab.com/installation/
Оновлення
Інструкції з оновлення: https://about.gitlab.com/update/
Enterprise Edition
GitLab Enterprise Edition включає в себе додаткові функції типу підтримки LDAP-груп. Детальну інформацію можна подивитися у описі GitLab EE.
GitLab EE доступний тільки за передплатою, подробиці і ціни можна подивитися ось тут.
Не вистачає часу на установку і настройку нового інструменту? У вартість передплати входять послуги з встановлення та оновлення GitLab на ваших серверах.
P. S. Якщо будете оновлюватися, оновлюйтеся відразу на 8.11.2
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.