gitlab CI if else на основе возврата «git status»

#git #gitlab-ci-runner

#git #gitlab-ci-runner

Вопрос:

Теперь мой код:

 stages:
  - status
git:
  stage: status
  before_script:
    - 'which ssh-agent'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")
    - mkdir -p ~/.ssh
    - echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config
  script:
    - sudo salt-ssh "$MINION_NAME" cmd.run "git --git-dir=/srv/salt/.git --work-tree=/srv/salt/salt status"
#    - sudo salt-ssh "$MINION_NAME" cmd.run "git --git-dir=/srv/salt/.git --work-tree=/srv/salt/salt pull"
  only:
    - master
  tags: 
    - Salt-ssh
 

Я хочу, чтобы команда git pull выполнялась только тогда, когда git status возвращает информацию о том, что репозиторий не был изменен локально

Кроме того, если git status обнаруживает локальные изменения, могу ли я получить сообщение об ошибке и показать на странице CI, что конвейер не удалось

PS — Я делаю это так, потому что у меня более 15 серверов, и я хочу посмотреть, есть ли локальные изменения, и если их нет, то синхронизируйте репозиторий с источником / мастером

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

1. soo if sudo .... ; then sudo ...; fi ?

2. @KamilCuk Как я могу это сделать?

3. ? Буквально if sudo salt-ssh "$MINION_NAME" cmd.run "git --git-dir=/srv/salt/.git --work-tree=/srv/salt/salt status" ; then sudo salt-ssh "$MINION_NAME" cmd.run "git --git-dir=/srv/salt/.git --work-tree=/srv/salt/salt pull"; fi