пятница, 10 ноября 2017 г.

git jira

GIT


https://habrahabr.ru/post/336708/ - Как я использую git


Коммит - точка, в которой зафиксирован снимок файлов. Имеет свой номер (хеш), по которому его можно неоднозначно идентифициовать.
Репозиторий - хранилище файлов

  • git init - создание нового репозитория
  • git clone - клонирование удаленного репозитория
  • git fetch - получение информации о коммитах из сервера (удаленного репозитория) без получения фалов/кода
  • git pull - получение файлов из сервера
  • git push - загрузка файлов на сервер
  • git branch - создание новой ветки
  • git checkout - переход на ветку
  • git reset - перенос индексов на определенный коммит. Имеются 3 основных параметра soft, mixed, hard (также изменяет рабочую директорию)
  • git revert - создани нового коммита, который отменяет другой коммит
  • git merge - сливает одну ветку в другую

Вышеописанные команды используются наиболее часто и покрывают практически все потребности. Описание выше не является полным. Команд гораздо больше и возможности шире, нежели описано.
Git flow:
Git flow - способ (методология) работы с репозиторием на Git. При работе с Git обычо имеется 2 основные ветки: master (Основная ветка, которую всегда можно накатить на бой) и development (ветка для разработки). Особенность является в том, что для разработки нового функционала создается отдельная ветка (Обычно ветку называют номером задачи). При завершении работы над функционалом ветка сливается в development и удаляется (если надо). В итоге всегда имеется актуальная релизная версия, читая ветка development (в крайних случаях можно отменить один коммит, а не искать по всему репозиторию коммиты, которые относятся к функционалу), индивидуальные ветки для каждого разрабатываемого функционала (структурированность). Имеется много GUI клиентов для работы с Git, которые упращают работу. Они имеют меньше возможностей, но более удобный интерфейс, а также строят визуальное дерево разработки. В крайнем случае можно воспользоваться консолью Git.
Обычно ветка разработки функционала создается по шаблону - feature/<номер_задачи>, где
  • feature/ - дополнительная информация, что данная ветка создана для разработки (обычно добавляется автоматически)
  • <номер_задачи> - информация, которая позволяет неоднозначно определить задачу
Например, есть задача http://jira/browse/UFR-643 При начале разработки будет создана ветка feature/UFR-643.

Git hooks:

Hook (перехватчик) - механизм для совершения некоторых действий до или после выполнения команды git.
Основная проблема состоит в том, что для автоматического перемещения задач в JIRA Jenkins'ом последнему требуется каким-либо образом сообщить о необходимости произвести данные действия.
Учитывая, что в Git flow ветки для задач создаются локально, а после слияния удаляются, то нет адекватного способа отследить момент создания ветки (переместить задачу в колонку "В работе") и удаления (колонка "Завершено").
Наилучшим способом будет добавление перехватчика в локальный репозиторий разработчика.
Необходимые хуки и алгоритм:
  • Создание ветки для задачи
    • Получить имя ветки (номер задачи)
    • Сообщить Jenkis о необходимости изменить статус задачи
  • Добавление коммита в репозиторий
    • Получить комментарий к коммиту
    • Получить имя ветки (получить номер задачи)
    • Сообщить Jenkins о необходимости добавить в задачу комментарий из коммита
  • Удаление ветки или слияние ветки с веткой develop
    1. При получении информации о удалении ветки
      • Получить имя ветки (номер задачи)
      • Сообщить Jenkis о необходимости изменить статус задачи
    2. При получении информации о слиянии с веткой develop
      • Получить информацию о последнем коммите
      • Обнаружить название ветки, которая была слита
      • Сообщить Jenkis о необходимости изменить статус задачи
  • Клонирование репозитория (большая вероятность, что не удастся заставить корректно работать)
    • Получить информацию о том, что репозиторий склонировался
    • Перенести файлы с хуками из заранее заготовленной папки в папку .git\hooks
Перехватчики можно писать на любом языке (как заявлено в официальной документации), однако предпочтение отдается Ruby или Bash (рассматривается python), так как именно на них имеется большое количество примеров для написания хуков.

II. JENKINS

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

Для использования Jenkins его придется развернуть и настроить на сервере.
Потребется Java 8.

После установки и запуска потребуется установка дополнительных плагинов.

После необходимых действий требуется настроить задачу (Job).
В моем видении Jenkins каждые n минут будет мониторить репозиторий и в слчае изменений будет запускать билд.

Абрстрактный алгоритм:
  • Установка Jenkins
  • Установка необходимого ПО (git, .NET Core 2.0, NodeJS)
  • Установка плагинов (Git Plugin, Stash Webhook for Jenkins plugin)
  • Настройка:
    • Связывание с репозиторием
    • Настройка Job

 

 

Дополнительные ссылки:

GIT:

JENKINS:

(Из интернета)
Плагины:

JIRA:

(Из интернета)

ПРОЧЕЕ:

Комментариев нет:

Отправить комментарий

mlops

  . Почти вся информация по вопросу собрана в гитхабе  awesome-mlops , который курирует Лариса Висенгериева, главный эксперт сайта ml-ops.or...