Рубрики
Uncategorized

Автоматизировать это — быть ленивым — часть I

Таким образом, основываясь на моей страсти как разработчик с открытым исходным кодом, в частности, для проекта Apache Maven. Я работаю джи … Теги с DevOps, Maven, Opensource, Git.

Так исходя из моей страсти как разработчик с открытым исходным кодом, в частности, для Apache Maven Project Отказ Я работаю Джира на основе Что помогает нам и себе организовать нашу работу, и, конечно, следовать зарегистрированным вопросам, запрос на функцию и т. Д.

Так что обычно я начинаю свою работу на основе конкретной проблемы в Джире и проходите через следующий процесс:

Процесс

  1. Создайте проблему для себя (если уже существующий переход на шаг 2)
  2. Создайте ветку в соответствующем проекте, основанном на выпуске
  3. Назначить проблему себе
  4. Мигрировать проблему в состояние В ХОДЕ ВЫПОЛНЕНИЯ
  5. Сделайте некоторые работы на ветке и совершаем
  6. Толкнуть ветвь к удаленному и пусть Дженкинс проверьте филиал Повторите с шагом 5, пока я не закончу свою работу.
  7. Rebase против мастера, если это необходимо
  8. Объедините созданную ветку в Master и удалите удаленный и локальный ветвь.
  9. Закройте соответствующую проблему JIRA со ссылкой на коммит в комментарии.

Давайте посмотрим на пример реальной жизни. Примерная проблема — Mclean-87 который был разработан и совершил подходящее сообщение, которое должно выглядеть следующее:

[JIRA-ISSUE] - Summary Text
Optional description

Так что реальная жизнь Commit выглядит так, как этот :

commit c6eed44352c9ab623836a9329b7645dbb61413bc (HEAD -> master, origin/master, m/master)
Author: Karl Heinz Marbaise 
Date:   Sat Jul 21 18:00:20 2018 +0200

    [MCLEAN-87] - Upgrade maven-plugins parent to version 32

Если вы посмотрите на список шагов процесса, это огромное количество шагов. К сожалению, многие шаги являются ручными шагами, которые занимают много времени и подвержены ошибкам.

Так что около четырех или пять месяцев назад я начал автоматизировать/упростить некоторые шаги вышеуказанного процесса.

Автоматизация шага 1.

В процессе этапа 6, в то время как я работал над веткой, я должен снова подтолкнуть текущее состояние филиала снова и снова до удаленного и позволить Jenkins проверить, все, что все пойдет хорошо. Кроме того, может быть, что мне нужно передать эту ветку от мастера, который должен сопровождаться Git push --force филиал Но а -Force это Очень опасно что означает, что я должен использовать Git push --force-с арендой веткой вместо. У меня уже есть завершенность Bash для Git Working, который заставляет много печатать, но я хотел бы сделать его более комфортно.

Поэтому я начал писать сценарий Bash, который содержит следующие шаги:

  1. Проверьте, есть ли мы на ветке, просто чтобы быть уверенным.
  2. Получить имя ветви
  3. Git Push Origin --Force-Slay

Так что это значит в конце концов я просто Позвоните в скрипте :

$ gitpushwithlease.sh

Первый шаг автоматизации достигнута, что означает немного улучшения, но недостаточно.

Автоматизация шага 2.

Поэтому через некоторое время, работая с этим, я подумал о процессе шага 8, который действительно нажимает и подвержен ошибкам. Позвольте мне суммировать шаги:

  1. Проверьте, есть ли мы на ветке
  2. Получите название ветви
  3. Оформление мастера
  4. объединить ветку только в том случае, если быстрый перемотанный возможен, потерпеть неудачу в противном случае
  5. Нажмите изменения в удаленный мастер
  6. Удалить удаленную ветвь
  7. Удалить локальную ветвь

Результатом был мой gitmergeandclean.sh Сценарий, который я использую как следующее:

$ gitmergeandclean.sh

Вывод выглядит так:

~/ws-git-maven/plugins/maven-clean-plugin (MCLEAN-87)$ gitmergeandclean.sh
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Updating 19b981e..c6eed44
Fast-forward
 pom.xml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Total 0 (delta 0), reused 0 (delta 0)
remote: Sending notification emails to: ['"commits@maven.apache.org" ']
remote: To git@github:apache/maven-clean-plugin.git
remote:    19b981e..c6eed44  c6eed44352c9ab623836a9329b7645dbb61413bc -> master
remote: Syncing refs/heads/master...
To https://gitbox.apache.org/repos/asf/maven-clean-plugin.git
   19b981e..c6eed44  master -> master
remote: Sending notification emails to: ['"commits@maven.apache.org" ']
remote: To git@github:apache/maven-clean-plugin.git
remote:  - [deleted]         MCLEAN-87
remote: Syncing refs/heads/MCLEAN-87 (FORCED)...
To https://gitbox.apache.org/repos/asf/maven-clean-plugin.git
 - [deleted]         MCLEAN-87
Deleted branch MCLEAN-87 (was c6eed44). 

Второй шаг автоматизации достигнут, что означает больше улучшения, но недостаточно.

Автоматизация шага 3.

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

Это можно сделать вручную и интерактивный через следующие шаги:

  1. Подсчитайте количество коммитов, которые вы хотели бы сквош
  2. Git Rebase -i Head ~ NumberofCommit
  3. Проходя через редактор и замените Выберите с S для сквоша.
  4. Безопасно и переписать сообщение Commit.

(Я предполагаю, что я что-то пропустил). Так что это было действительно громоздким. Поэтому я решил найти сценарный путь, чтобы справиться с этим. После некоторых экспериментов я нашел решение, что приводит к моему gitrebasebranch.sh script

$ gitrebasebranch.sh

А в редакторе я только переработал сообщение о коммите. Вот и все. После этого я могу сделать:

$ gitpushwithlease.sh

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

История будет продолжена в моем следующем посте.

Оригинал: «https://dev.to/khmarbaise/automate-it—be-lazy—part-i-2m0m»