GIT
https://habrahabr.ru/company/intel/blog/344962/ 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/ - дополнительная информация, что данная ветка создана для разработки (обычно добавляется автоматически)
- <номер_задачи> - информация, которая позволяет неоднозначно определить задачу
Git hooks:
Hook (перехватчик) - механизм для совершения некоторых действий до или после выполнения команды git.Основная проблема состоит в том, что для автоматического перемещения задач в JIRA Jenkins'ом последнему требуется каким-либо образом сообщить о необходимости произвести данные действия.
Учитывая, что в Git flow ветки для задач создаются локально, а после слияния удаляются, то нет адекватного способа отследить момент создания ветки (переместить задачу в колонку "В работе") и удаления (колонка "Завершено").
Наилучшим способом будет добавление перехватчика в локальный репозиторий разработчика.
Необходимые хуки и алгоритм:
- Создание ветки для задачи
- Получить имя ветки (номер задачи)
- Сообщить Jenkis о необходимости изменить статус задачи
- Добавление коммита в репозиторий
- Получить комментарий к коммиту
- Получить имя ветки (получить номер задачи)
- Сообщить Jenkins о необходимости добавить в задачу комментарий из коммита
- Удаление ветки или слияние ветки с веткой develop
- При получении информации о удалении ветки
- Получить имя ветки (номер задачи)
- Сообщить Jenkis о необходимости изменить статус задачи
- При получении информации о слиянии с веткой develop
- Получить информацию о последнем коммите
- Обнаружить название ветки, которая была слита
- Сообщить Jenkis о необходимости изменить статус задачи
- При получении информации о удалении ветки
- Клонирование репозитория (большая вероятность, что не удастся заставить корректно работать)
- Получить информацию о том, что репозиторий склонировался
- Перенести файлы с хуками из заранее заготовленной папки в папку .git\hooks
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:
- Документация по Git http://confluence/display/DPR/Git
- Подробная документация по работе с Git http://confluence/display/ALBO/Git
- Основные команды для работы с Git http://confluence/display/AUTOTEST/Git
- Дополнительно (методичка) для Git http://confluence/pages/viewpage.action?pageId=141528253
JENKINS:
- Pipeline http://confluence/display/EP/Pipeline+for+dummies
- Дополнительная информация http://confluence/display/UP4ALL/Jenkins
- Много информации по PipeLine http://confluence/display/UFR/Jenkins+pipeline
(Из интернета)
- Официальная документация https://jenkins.io/doc/
- Краткая инструкция по разворачиванию https://community.vscale.io/hc/ru/community/posts/208799669
- Еще одна из интрукций по настройке https://habrahabr.ru/post/132521/
- Интеграция Stash и Jenkins (Webhook) https://blog.mikesir87.io/2013/04/continuous-integration-with-stash-and-jenkins/
Плагины:
JIRA:
- Небольшое описание работы с задачами http://confluence/display/SFAONPEGA/JIRA
(Из интернета)
- Начало работы http://www.a1qa.ru/blog/5-shagov-k-agile-s-instrumentami-jira/
- Интеграция Jira и Stash:
ПРОЧЕЕ:
Настройка .NET Core и Nginx https://docs.microsoft.com/ru-ru/aspnet/core/publishing/linuxproduction?tabs=aspnetcore2x
https://archive.codeplex.com/?p=vsarbranchingguide - стратегии версионирования
https://archive.codeplex.com/?p=vsarbranchingguide - стратегии версионирования
Комментариев нет:
Отправить комментарий