Вышел GitLab 10.0 с Авто-DevOps, групповыми досками задач, новой навигацией и множеством других фич.
От формулировки идеи — до запуска и мониторинга на производстве. DevOps задаёт культуру и окружение, в которых разработка, тестирование и выпуск ПО происходят быстрее, чаще и надёжнее.
GitLab 10.0 помогает легче осваивать DevOps с помощью функциональности Авто-DevOps, которая позволит вашей команде легко внедрить и настроить современные практики разработки в ваш рабочий процесс. Кроме этого в GitLab обновилась навигация и появился новый способ взаимодействия между разными группами (командами)
Каждый месяц в очередной версии GitLab мы добавляем новые возможности и улучшаем старые. GitLab 10.0 — не исключение. Благодаря вкладу нашего opensource-сообщества в нем появилась возможность автоматически разрешать устаревшие обсуждения в мерж-реквестах, улучшились подгруппы, появился API для Wiki-страниц
Возможности управления задачами в GitLab улучшаются с каждым релизом. Фильтрация и поиск по задачам в различных группах значительно улучшились, обновленный интерфейс облегчает доступ к перемещению задач. Кроме этого, перемещение задач можно ускорить с помощью слеш-команд.
Если вы используете GitLab Enterprise Edition и JIRA, теперь вы сможете просматривать коммиты и ветки GitLab непосредственно из интерфейса JIRA.
Мы продолжаем улучшать безопасность и производительность GitLab. Теперь администратор может ограничить SSH-доступ по используемому алгоритму и длине ключа. Групповую синхронизацию LDAP (Group Sync) теперь можно автоматизировать с помощью API. Она также получила улучшения в регулировании доступа внешних пользователей. Быстродействие тоже улучшилось: выросла скорость загрузки страниц, создания проектов и обработки коммитов, а потребление оперативной памяти уменьшилось.
В этом месяце участники нашего сообщества снова предложили огромное количество улучшений. Это приносит существенную пользу GitLab и всем его пользователям и лишний раз показывает мощь opensource-сообщества.
Hiroyuki Sato предложил целый ряд фич в GitLab 10.0: улучшения производительности, поиска, фильтрации задач и возможностей мерж-реквестов. Наша любимая фича — фильтрация задач и мерж-реквестов по вашей реакции на них. С ней вы можете ещё раз посмотреть на всё, что вам понравилось (и что нет — тоже).
Мы благодарим за проделанную работу всех участников, и особенно — Hiroyuki Sato.
Авто-DevOps привносит в ваш проект лучшие практики разработки. Эта фича позволяет автоматически сконфигурировать сборку, тестирование, проверку качества кода, приложения для ревью, развертывание и мониторинг каждого отдельно взятого окружения. В GitLab 10.0 появились готовые шаблоны, с помощью которых вы сможете быстро настроить весь жизненный цикл приложения в стандартах DevOps. Эти шаблоны основаны на GitLab CI/CD.
GitLab предлагает единую среду, в которой изменение кода порождает не только сборку, но и развертывание вашего продукта в виде специального приложения для ревью. Оно позволит посмотреть на изменения, вносимые каждым мерж-реквестом, перед тем как принять его. Недавно в GitLab появилась возможность измерять качественные показатели кода. Благодаря этому вы сможете отслеживать их изменения при ревью кода.
После успешного ревью GitLab позволит вам выпустить «канареечный» или обычный релиз вашего приложения в боевое окружение. С помощью GitLab Auto Deploy вы сможете также настроить развертывание в Google Cloud. GitLab Auto Monitoring поможет собрать метрики использования системных ресурсов и производительности по каждой развернутой версии приложения.
Все эти процессы собраны воедино и автоматизированы в GitLab 10.0 с помощью Авто-DevOps. Всё это сделано для того, чтобы ваш путь от идеи до реализации стал как можно короче.
Авто-DevOps автоматически определяет, собирает, тестирует, разворачивает и мониторит приложения. Благодаря поддержке Herokuish эта фича работает со всеми языками и фреймворками, доступными в Heroku buildpacks: Ruby, Rails, Node, PHP, Python и Java. Вы также можете настраивать ваши собственные пакеты сборки. Прочитайте вводное руководство — оно поможет вам быстрее освоиться и начать работу.
Авто-DevOps сейчас выпущено в бета-версии. Мы рекомендуем подождать с использованием его в производстве.
Кстати, GitLab не аффилирован с Heroku или Glider Labs.
Обязательно прочитайте документацию по Авто-DevOps.
Многие команды разработчиков используют одну группу GitLab и работают над множеством проектов в этой группе. Например, многие компании внедряют или уже внедрили микросервисную архитектуру. Код каждого микросервиса хранится в отдельном репозитории, который размещен в отдельном проекте GitLab. Получается, что команда работает со связанными задачами в множестве проектов и репозиториев. Будет очень удобно управлять всеми этими задачами в одном месте.
В этом релизе мы с гордостью выпускаем фичу, которую вы давно хотели — групповые доски задач.
Теперь можно управлять задачами всех принадлежащих группе проектов на одном экране, используя общие для всей группы списки, метки и майлстоуны.
Чтобы узнать больше о групповых досках задач, прочитайте документацию.
В новой версии интерфейс GitLab полностью поменялся, чтобы навигация стала быстрее и проще.
В течение последних нескольких месяцев мы тестировали принципиально новые способы навигации по GitLab. Мы проводили тестирование на пользователях, изучали обратную связь и обнаружили, что существующий интерфейс доставлял ряд проблем с навигацией. Не всегда были очевидны группа и проект, которые пользователь просматривал. Было сложно переключаться между разными частями GitLab. Иерархия страниц бывала неконсистентной, что запутывало пользователей.
В новом GitLab 10.0 навигация стала более консистентной. Верхняя панель отражает все глобальные и персональные аспекты: ваши группы, проекты, задачи, мерж-реквесты, todo-задачи и персональную информацию. Левая панель зависит от контекста: от группы или проекта, которые вы просматриваете. Все меню в этой панели раскрываются при наведении курсора — теперь вам не придется ждать, пока грузится промежуточная страница, чтобы нажать ещё одну ссылку на ней.
Кстати, вы снова сможете выбрать цветовую схему по своему вкусу. Все-таки не все любят фиолетовый цвет так, как любим его мы.
Больше о навигации — в блоге GitLab
В конвейерах CI/CD бывают задачи, требующие повышенной безопасности. Например, при развертывании в боевом окружении используются учетные данные или настройки конфигурации, которые не должны утечь. Чтобы защитить их, вы можете отметить определенный обработчик (GitLab Runner) флагом “protected” (защищенный). Тогда на этом обработчике будут выполняться только конвейеры для коммитов из защищенных (protected) веток.
Используйте эту фичу вместе с обязательным подтверждением мерж-реквестов и выбором обработчика по тегу. Тогда вы будете уверены, что на защищенном обработчике выполняется только доверенный (trusted) код.
Более подробная информация есть в документации по защищенным обработчикам GitLab
Объектное хранилище для Git LFS (EEP)
Git LFS позволяет эффективно версионировать крупные файлы с помощью Git.
Но крупные файлы, что весьма неожиданно, занимают много места на диске. Чем их больше, тем сложнее становится их хранить.
Теперь GitLab Enterprise Edition Premium позволяет хранить файлы LFS в объектном хранилище, например в Minio или Amazon S3.
Чтобы больше узнать об этой фиче, прочитайте документацию.
Благодаря вкладу Corey Hinshaw администратор GitLab теперь может настроить требования к используемым SSH-ключам. Каждый из возможных алгоритмов шифрования можно:
Это позволит вам GitLab.
Теперь GitLab API можно использовать для работы с wiki-страницами. API позволит вам получить список вики-страниц и содержимое конкретной страницы, создать новую страницу, отредактировать или удалить её. Все это позволяет полноценно работать с wiki-страницами из программного кода.
Мы благодарим участника нашего сообщества Виталия Клачкова за этот вклад.
Документация об API для работы с wiki-страницами
Также вместе с GitLab 10.0 мы выпускаем GitLab Runner 10.0. GitLab Runner — это проект с открытым исходным кодом, используемый для того, чтобы запускать ваши задачи CI/CD и присылать результаты обратно в GitLab.
Полный лист изменений вы найдете в changelog GitLab Runner.
Читайте документацию о GitLab Runner
Во время первоначальной регистрации нового обработчика (GitLab Runner) вас спросят, хотите ли вы зарезервировать его для проекта (lock to the project), токен которого вы предоставляете. В предыдущих версиях по умолчанию было отмечено false
, но не было ясно, что это позволяет любому владельцу проекта использовать этот обработчик и для остальных проектов, что является серьезным риском по безопасности. Начиная с GitLab 10.0 по умолчанию выбрано true
, поэтому обработчик нельзя будет просто так внедрить в другие проекты.
Если нужно, это можно изменить позже в настройках обработчика. И, конечно же, отметить это вручную при регистрации через UI или с помощью опции --locked=false
через консоль.
Читайте документацию о процессе регистрации обработчика
Одна из отличительных особенностей GitLab — гранулярность прав доступа к возможностям проекта.
В GitLab 10.0 мы упростили пользовательский интерфейс, позволив вам еще проще контролировать область видимости вашего проекта, фичи и права доступа — и делать это в удобном интерфейсе.
Узнайте подробности в документации об упрощенных правах доступа для проектов
В GitLab 9.0 мы выпустили подгруппы, которые сделали более гибким процесс организации проектов и групп внутри GitLab. Если вы их еще не попробовали, вы можете узнать подробности о подгруппах в нашей документации.
В этом релизе мы добавили владельцам возможность позволять создавать подгруппы, даже если создание группы было запрещено. Это упростит управление структурой групп GitLab для тех пользователей, на которых делегировали эту обязанность.
Многие пользователи GitLab также используют JIRA. В этом релизе мы значительно улучшили интеграцию с JIRA и представляем коммиты и ветки GitLab связанные с задачами в панели разработки JIRA. Во время работы над задачей в JIRA вы можете быстро переключиться на связанные с этой задачей коммиты или ветки в GitLab — интеграция между ними стала еще теснее.
Подробности смотрите в документации об интеграции с панелью разработки JIRA
В функциональность экспорта существующих задач в CSV мы добавили возможность отслеживать время (оценочное и затраченное). Это позволяет тимлидам и менеджерам легко отслеживать информацию о времени при помощи таблиц.
Спасибо Bohdan V. за такую возможность.
Подробнее в документации об экспорте в CSV
Теперь при фильтрации в GitLab задач или мерж-реквестов вы сможете выбирать фильтр по реакциям, которые вы оставили. Это можно использовать в качестве обобщенных закладок. Просто прореагируйте на задачу или мерж-реквест, присвоив им разные эмодзи — и вы сможете быстро получать к ним доступ по такому фильтру.
За эту фичу спасибо Hiroyuki Sato.
Читайте документацию о поиске и фильтрации в GitLab
Чтобы еще больше ускорить ваш рабочий процесс, в GitLab появилась специальная слеш-команда для быстрого перемещения задачи. Теперь вы можете переместить задачу, пока пишете комментарий.
Спасибо тебе, Manolis, за твой вклад.
Читайте документацию о быстрых действиях
Мы продолжаем определять и выделять индивидуальный стиль GitLab. В этот раз мы сделали редизайн для иконок системных заметок.
Посмотрите на набор наших новых красивых иконок
Мы значительно улучшили доску мониторинга окружения, сделав удобнее ее внешний вид, а также добавив поддержку нескольких серий в одном графике. Это помогает глубже разбираться в эффективности производительности и дает возможность легко сравнивать. Например, пропускная способность приложения может быть разбита по кодам HTTP-ответов, и вы увидите один график и с удачными, и с проваленными запросами, а также потенциально отсутствующие страницы.
Больше информации о мониторинге окружений с помощью Prometheus в нашей документации
Синхронизация групп LDAP в GitLab теперь доступна с помощью API, позволяя вам программно запрашивать событие синхронизации. Это значит, что любая автоматизация группы, например, создание групп через API, может быть немедленно программно синхронизована с LDAP по одному небольшому запросу API.
API группы GitLab Enterprise Edition
Настройка LDAP verify_certificates
теперь активирована по умолчанию из соображений безопасности. Эта настройка появилась в 9.4.2, но по умолчанию была выключена для обеспечения обратной совместимости.
Существуют установки, которые используют start_tls
или simple_tls
для параметра шифрования, и в которых почему-то между сервером LDAP и сервером GitLab не настроен должным образом SSL протокол. Такие установки могут сломаться, если SSL сертификат сервера LDAP не будет принят сервером GitLab.
Читайте администраторскую документацию по LDAP
Установка GitLab теперь проще и быстрее, чем когда-либо раньше! GitLab 10 позволяет указать URL, по которому будет доступен GitLab, прямо во время установки пакета. После этого GitLab автоматически перенастроится на нужный URL и запустится, пропустив два шага из процесса установки.
Подробности в документации об Omnibus GitLab
Читайте документацию об Omnibus GitLab
GitLab 10.0 включает Mattermost 4.2, альтернативу Slack с открытым исходным кодом. В новом релизе появились интерактивные кнопки сообщений — для упрощения сложных рабочих процессов — и многое другое.
Эта версия включает обновления безопасности. Рекомендуем обновиться.
Документация о GitLab Mattermost
Аналитика цикла разработки измеряет время от идеи до производства для каждого вашего проекта. Это достигается не только указанием общего времени до достижения определенной точки — общее время разбивается на разные стадии, которые идея проходит до своего окончательного выпуска.
Благодаря участнику нашего сообщества, Mehdi Lahmam, теперь стало возможным обозревать ваши показатели за 7-дневный период, что особенно полезно командам с короткими итерациями разработки.
Полная документация о циклической аналитике
12 сентября 2017 мы перенесли GitLab Runner в новый репозиторий. Отныне Runner доступен на https://gitlab.com/gitlab-org/gitlab-runner.
Не забудьте обновить закладки!
При использовании конвейеров получается множество переменных окружения, которые GitLab устанавливает автоматически. Это дает вашим скриптам возможность получать важную информацию. В GitLab 10.0 появились 2 новые переменные, GITLAB_USER_NAME
и GITLAB_USER_LOGIN
, позволяющие получать полное имя и логин аккаунта, запустившего работу.
Читайте документацию о предопределенных переменных для CI
В GitLab 9.2 мы представили конвейеры по расписанию, а в следующих релизах мы добавляли API и поддержку переменных. В GitLab 10.0 мы заканчиваем цикл добавлением поддержки переменных также и к запросам API. Теперь автоматическое взаимодействие сторонних приложений с конвейерами по расписанию будет более гибким.
Прочитать поднобности вы можете в документации о переменных для API конвейеров по расписанию
GitLab предоставляет возможность расшаривать проекты между разными группами, что делает структуру проекта и разрешения более гибкими.
Блокировка доступа дает возможность защищать от расшаривания проекты в некоторых группах, чтобы обеспечить соблюдение политики безопасности компании.
Теперь блокировка доступа возможна также для подгрупп. Это дает подгруппам возможность наследовать или переопределять блокировку доступа от родительской группы, что делает контроль над распространением проектов более точным.
Подробнее в документации о блокировке доступа
Раньше, чтобы управлять задачами техподдержки, нужно было на странице задач проекта искать задачи, созданные специальным ботом. Теперь в навигации появилась отдельная страница, на которой все такие задачи собраны автоматически. Также на странице отображается email поддержки — это позволяет легко поделиться им с любым человеком, которому нужно послать запрос в техподдержку.
Подробнее в документации о техподдержке
Мы обновили страницу со списком мерж-реквестов и добавили на нее меню поиска и фильтрации в свежем дизайне. Это позволит вам быстро отсортировать список нужных мерж-реквестов по автору, исполнителю, майлстоуну, метке или весу — то же самое, что вы уже давно можете делать с задачами.
За это меню спасибо Hiroyuki Sato.
Узнайте подробности в документации о групповых мерж-реквестах
Функциональность перемещения задач переместилась в боковое меню задачи. Мы группируем другие важные действия и освобождаем основное пространство задачи — чтобы в этом пространстве было проще сосредоточиться на названии и описании задачи.
Подробности в документации о перемещении задач
Если вы используете майлстоуны и метки для ваших мерж-реквестов, вам наверняка часто приходится копировать их из задачи в ассоциированный с ней мерж-реквест. Теперь при создании мерж-реквеста из задачи с помощью соответствующей кнопки мерж-реквест автоматически унаследует майлстоун и метки.
Haseeb, спасибо тебе за твой вклад!
О создании новых мерж-реквестов из задач читайте в нашей документации
Для некоторых пользователей разрешить дискуссию мерж-реквеста — означает просто вставить новый код вместо кода в вопросе. Мы представляем настройку мерж-реквеста специально для этого. Если эта настройка включена, любые дискуссии диффа будут разрешены, если после очередного пуша эта секция диффа устареет. Заметим, что дискуссии в тех строчках, которые не меняются, а также верхнеуровневые дискуссии не будут разрешаться автоматически.
Спасибо Ashley Dumaine за эту фичу.
Читайте документацию о дискуссиях GitLab
Синхронизация группы LDAP доступна в GitLab Enterprise Edition и предоставляет отличный способ без проблем управлять разрешениями пользователя, изменяя систему существующей группы LDAP и разрешения.
GitLab также поддерживает управление разрешениями для внешних пользователей, что позволяет точнее контролировать проекты в каждом конкретном случае.
В GitLab 10.0 синхронизация внешних пользователей будет происходить при авторизации — дополнительно к существующей периодической синхронизации. Это значит, что любые изменения в разрешениях вашей системы LDAP будут доступны пользователю сразу после входа, настройки обновятся автоматически.
Подробности в документации о синхронизации группы LDAP
С подачи участника нашего сообщества Mehdi Lahmam (и снова спасибо тебе!) стало возможным так фильтровать страницу проектов, чтобы отображались только архивированные проекты.
Это может быть полезно при управлении проектами, чтобы посмотреть полный список всех архивированных проектов, и чтобы администраторы могли легко их удалять.
Читайте нашу документацию о поиске и фильтрации в GitLab
Мы продолжаем переводить GitLab на новые языки и на этот раз подготовили перевод страницы активностей проекта.
Мы недавно создали на CrowdIn сообщество переводчиков. Теперь любому пользователю будет легче помочь с переводом страниц GitLab. Если хотите подключиться, зарегистрируйтесь через сообщество.
Важные изменения, появившиеся в GitLab 10.0:
Читайте документацию по GitLab Geo
Наша цель — с каждым релизом делать GitLab быстрее, доступнее и стабильнее. Мы делаем это не только для того, чтобы ускорить отдельные инстансы GitLab, но и для того, чтобы повысить производительность всего GitLab.com, с которым работают более миллиона пользователей!
В GitLab 10.0 мы сделали двойной упор на это обязательство и устранили больше проблем с производительностью, чем в любом из предыдущих релизов.
Мы решаем проблемы задач с использованием большого количества памяти и делаем огромное количество страниц быстрее за счет повышения скорости создания проектов и выполнения коммитов.
Взгляните на улучшения производительности GitLab 10.0
С выходом релиза GitLab 10.0 22 сентября мы прекращаем поддержку Postgres 9.2 и удаляем его из пакета Omnibus GitLab. Если в вашем развертывании используется Postgres, для обновления до GitLab 10.0 нужно обновить базу данных до версии 9.6.
Если вы обновляете GitLab хотя бы с версии 9.0, ваша база данных уже работает на версии 9.6. Если вы используете более раннюю версию GitLab, пожалуйста, обновите вашу базу данных, чтобы подготовиться к обновлению до десятой версии.
PostgreSQL 9.2 заканчивает существование в сентябре, спустя пять лет после своего первого релиза.
До: 22 сентября 2017
В GitLab 8.17 мы объявили о прекращении поддержки API v3.
Мы все еще наблюдаем большое количество трафика с использованием запросов API v3 на GitLab.com.
Мы окончательно откажемся от API v3 в GitLab 11 и просто хотим убедиться, что разработчики переехали на API v4. Чтобы посмотреть изменения между этими двумя версиями API, обратитесь к нашей документации.
До: GitLab 11.0
Мы продолжаем улучшать в GitLab возможности встроенного редактирования, поэтому убираем интеграцию кода в GitLab.
Начиная с версии GitLab 10.0 больше не будет возможности активировать интеграцию кода. Существующие установки, которые уже используют эту функциональность, продолжат работать до версии 11.0 — в этой версии эта возможность отключится окончательно.
До: GitLab 11.0
GitLab 10 больше не поддерживает TLSv1 по умолчанию. Если вы хотите продолжить использовать соединения TLSv1, вы можете добавить их обратно в список поддерживаемых протоколов — для этого нужно отредактировать поле nginx['ssl_protocols']
в файле gitlab.rb
.
До: 22 сентября 2017
Начиная с версии GitLab 8.2, мы использовали Gitlab Workhorse для обработки HTTP-трафика Git. Ранние версии использовали HTTP-сервер GitLab Git и игнорировали настройки для него. С 10 версии мы будем удалять этот код, чтобы распознавать устаревшие параметры конфигурации HTTP-сервера GitLab Git. Если в вашем конфигурационном файле gitlab.rb
содержатся эти настройки, их нужно удалить, иначе реконфигурация GitLab завершится с ошибкой.
До: 22 сентября 2017
Приватные токены — механизм, позволяющий получить доступ к API с помощью уникального токена аккаунта пользователя.
Токены персонального доступа предоставляют более гранулярный доступ к GitLab через API, поэтому предпочтительнее для использования, чем приватные токены.
Поддержка приватных токенов будет прекращена в GitLab 10.2, поскольку мы считаем их менее безопасными, чем токены персонального доступа.
До: 22 сентября 2017
На данный момент пользователь Git может иметь на сервере GitLab настраиваемую конфигурацию SSH-клиента, расположенную в ~git/.ssh/config
.id_rsa
, и другие конфигурационные файлы также загрузятся автоматически.
Эта настраиваемая вручную конфигурация загружается автоматически и используется в нескольких местах. Однако, это довольно небезопасно, так как при использовании ключа нет элементов управления доступом «только для пользователя GitLab».
До: 22 сентября 2018
С выпуском GitLab 9.0 мы изменили настройку директории альтернативного хранилища Git, чтобы поддерживать множественные директории. Чтобы упростить процесс обновления, мы поддерживали обратную совместимость с более старыми форматами. В следующих релизах GitLab мы больше не будем поддерживать старые параметры конфигурации, поэтому пользователям нужно будет поправить файл gitlab.rb
, чтобы поддерживать текущий формат git_data_dirs
.
Например, если ваш gitlab.rb
содержит git_data_dirs({ "default" => "/var/opt/gitlab/git-data" })
, это нужно заменить на git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data" } })
.
До: 22 марта 2018
Ключевое слово types
, которое достаточно давно было заменено на stages
, устарело и в будущих релизах GitLab будет удалено.
До: 22 марта 2018
Старые бейджи для сборок уступили место бейджам конвейеров и будут удалены в следующих релизах GitLab.
До: 22 марта 2018
Автоматическое развертывание теперь стало частью автоматического DevOps и больше не нуждается в собственных шаблонах. С включением в автоматический DevOps в нем появились поддержка Helm Charts и постоянные инстансы базы данных, что делает развертывание еще более удобным для использования в производстве.
До: 22 ноября 2017
У триггеров с пометкой «устаревший» нет связанного с ними пользователя и есть доступ только к текущему проекту. Мы советуем вам взять на себя ответственность за любые устаревшие триггеры.
До: 22 января 2018
В первой итерации GitLab Code Quality мы захардкодили определение работы с помощью codeclimate
. Теперь мы официально ищем работы codequality
, даже в тех случаях, когда codeclimate
все еще работает.
До: 22 марта 2018
Два executor’a GitLab Runner — docker-ssh
и docker-ssh+machine
— теперь устарели. В грядущих релизах они будут удалены.
Вы можете узнать подробности этого решения в задаче.
До: 22 марта 2018
Также мы планируем отказаться от всех команд для обслуживания и управления обработчиком (stop
, start
, restart
, status
, install
, uninstall
). Они будут окончательно удалены в следующих релизах.
Об этом решении вы можете узнать подробнее в задаче.
До: 22 марта 2018
Подробные release notes и инструкции по обновлению/установке можно прочитать в оригинальном англоязычном посте: https://about.gitlab.com/2017/09/22/gitlab-10-0-released/
Перевод с английского выполнен переводческой артелью «Надмозг и партнеры», http://nadmosq.ru. Над переводом работали @rishavant и @nick_volynkin.