2016-11-15 2 views
-1

Простой вопрос сценария оболочки. Настройка конвейеров в BB и одно из заданий, которые я переношу, заключается в том, чтобы увеличить версию bower с помощью некоторых команд grunt. Я разделил это на отдельные задания, чтобы он не запускался автоматически, потому что он ударяет пакет и возвращается к репо. Так что я пытаюсь сделать, когда запускаются задачи, запускает команду git log, проверяет последнее сообщение фиксации и, если оно соответствует предварительно определенному сообщению, тогда просто выйдите. В противном случае продолжайте. Как проверить последнее сообщение git commit и запустить if else check in bash?Проверить журнал git с помощью сценария оболочки

#! /bin/bash 

git log -1 

if git log -1 === "pre-defined message"; 
    then 
    echo "already pushed and bumped exiting" 
    exit 1 
    else 
    echo "not bumped -- continuing job" 
    ./setup-git.sh 
fi 
+0

В чем вопрос? – codeforester

+0

Это было, если я смог прочитать последнее сообщение о фиксации git log и запустить, а если else - в bash. Я был всего лишь моим разумом JavaScript, чтобы узнать больше о сценариях оболочки. :) –

ответ

0

Найдено решение, которое, кажется, удовлетворяет то, что мне нужно из трубопроводов, хотя мне нужно установить различные сценарии оболочки, чтобы не запустить НПМ устанавливает, если сообщение уже получено:

#! /bin/bash 

MESSAGE=$(git log -1 HEAD --pretty=format:%s) 

if [[ "$MESSAGE" == "This goes into next release" ]]; then 
    echo "already pushed run grunt and exit" 
    grunt build 
    echo "nothing to see here -- move along" 
else 
    echo "not bumped -- continuing job" 
    git config --global user.email "[email protected]" 
    git config --global user.name "Blah Blah" 
    git remote set-url origin https://user:[email protected]/myawesomegitrepo.git 
    grunt releaseme 
    git config --global push.default matching 
    git commit dist/destro -m "This goes into next release" 
    git push --tags 
fi 

Кредит Джеймс Nine для его ответ на эту тему: How to capture a git commit message and run an action

1

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

Я боролся с этим в Дженкинсе, файлы поддержки, используемые и модифицированные как часть сборки, будут вызывать сборку, когда они будут возвращены к репо, что приведет к бесконечному циклу сборки.

Мое решение состояло в том, чтобы разделить репо на источник в одном каталоге, поддерживающие файлы в другом, а затем добавить область исключений для Дженкинса, чтобы коммиты, сгенерированные сборкой, не вызывали следующий опрос, чтобы что-либо сделать (потому что зафиксированные файлы не имеют никакого отношения к фактическому строительству проекта). Немного тупо, но, похоже, работает.

И если это не то, о чем вы просили, на самом деле задайте вопрос, а затем у нас есть контекст для работы!

+0

Это была моя оригинальная идея и как я должен был справиться с этим в Bamboo изначально. Это должно работать на основе стратегии филиала/выпуска филиала, если все коммиты объединены через PR. Потребовалось некоторое время, чтобы понять это, но благодаря сообщению в моем решении выше, это сработало. Только проблема, с которой я столкнулась, теперь вызывает запуск другого сценария оболочки из первого, если оператор else возвращает true. –

Смежные вопросы