Удаленная регистрация в GitLab от Jenkins - PullRequest
0 голосов
/ 01 октября 2019

Требование: У меня есть Java-проект, который читает Excel и обновляет тот же Excel после проверки. На прогоне сборки все это происходит. Теперь я должен использовать GitLab и Jenkins для этого. Мой код на GitLab, на котором я настроил webhook для запуска сборки.

Проблема: После сборки Excel обновляется в рабочей области Jenkins, но я хочу отправить его вGitLab также. Если я делаю прямой толчок из оболочки, он всегда работает в цикле. Так что я не пишу идеальную оболочку для команд git. Можете ли вы помочь в редактировании.

Я пытался поместить команды git в разные условия, но ничего не помогло. Ниже моя оболочка

#!/bin/bash +x
echo =================== Starting Job =========================

git config user.name "Tarun"
git config user.email tarun.verma2710@gmail.com

state=`git status`
echo *******Status Start*********
echo ${state}
echo *******Status End*********

git pull origin master
git checkout master
git add .
git commit -m "Jenkins Checkin"

if [[ ${state} == *"no changes added to commit"* ]]; then
    echo "changes not present"
    #git pull origin master
else
    echo "changes present"
    git push -u --force origin master
fi

echo =================== Shutting Job ==========================

Фактический вывод:

=================== Starting Job =========================
    2019-10-01 15:20:59 INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
    *******Status Start*********
    # HEAD detached at a4c555f # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: spring-boot-automation-tool/excels/QuickActionImplExcel.xlsx # no changes added to commit (use "git add" and/or "git commit -a")
    *******Status End*********
    2019-10-01 15:20:59 INFO  com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.
    From gitlab.corp.amdocs.com:TARUNVE/crm-bpt-automation-tool
     * branch            master     -> FETCH_HEAD
    Already up-to-date.
    error: Your local changes to the following files would be overwritten by checkout:
        spring-boot-automation-tool/excels/QuickActionImplExcel.xlsx
    Please, commit your changes or stash them before you can switch branches.
    Aborting
    [detached HEAD 85e27cd] Jenkins Checkin
     1 file changed, 0 insertions(+), 0 deletions(-)
     rewrite spring-boot-automation-tool/excels/QuickActionImplExcel.xlsx (99%)
    changes not present
=================== Shutting Job ==========================

Ожидаемый результат: Я хочу пройти гладкую регистрацию, как только сборка будет завершена, онаобновляется и в GitLab. А также регистрация должна происходить с GitLab, только если изменения присутствуют в Excel.

1 Ответ

1 голос
/ 03 октября 2019

Ваше заявление if, кажется, полностью изменено. *"no changes added to commit"* означает, что в хранилище присутствуют изменения. Обратите внимание, что вы проверяете статус перед выполнением операций с хранилищем. Я бы решил эту проблему, изменив оператор if, обновив сравнение строк, чтобы определить ожидаемое имя файла и выполнить операции git, только если были обнаружены изменения.

#!/bin/bash +x
state=$(git status)

if [[ ${state} == *"modified:"*"QuickActionImplExcel.xlsx"* ]]; then
    echo "changes present"
    git add .
    git commit -m "Jenkins Checkin"
    git push -u --force origin master
else
    echo "changes not present"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...