Задать вопрос
@webdefvika
SMM специалист

Почему происходит ошибка rsync при выполнении job в gitlab pipeline?

У меня PHP проект, который развернут на локальной виртуальной машине CentOS7 под VirtualBox.
Я попробовала сделать CI/CD интеграцию моего локального проекта и репозитория на сервисе gitlab через gitlab runner.

На стороне сервиса gitlab создала gitlab runner, на локальном сервере добавила расширение для runne и указала пользователя под которым будет запускаться runner, зарегистрировала токен gitlab runner. который получила с gitlab.

На стороне сервера разместила файл .gitlab-ci.yml с последовательностью команд.
В блоке after_script на второй стадии происходит обращение к PHP и запустится автоматически миграция, обращение идет к файлу migrate.php

stages:      # List of stages for jobs, and their order of execution
  - first
  - second
  - third

first:       # This job runs in the build stage, which runs first.
  stage: first
  script:
    - echo "first"

second:   # This job runs in the test stage.
  stage: second    # It only starts when the job in the build stage completes successfully.
  script:
    - echo "second"
    - echo "$CI_PROJECT_DIR"
  after_script:
    - rsync -r "$CI_PROJECT_DIR"/ /home/laravel/www/
    - cd /home/laravel/www/
    - php migrate.php up

third:   # This job also runs in the test stage.
  stage: third    # It can run at the same time as unit-test-job (in parallel).
  script:
    - echo "third"


Каждый раз когда я делаю push на gitlab из своего локального репозитория расположенного на виртуальной машине в репозиторий на github происходит запуск gitlab runner, выполнятся pipeline. При выполнении gitlab runner должен выполнить команду rsync -r "$CI_PROJECT_DIR"/ /home/www/ после чего запустить скрипт который лежит в корне проекта.

Вначале все работало правильно, но сейчас запуск PHP скрипта не происходит,
gitlab пишет такое сообщение:

/usr/bin/bash: line 160: rsync: command not found
WARNING: after_script failed, but job will continue unaffected: exit code 1

Не понятно, проблема на стороне моего сервера на CentOS 7 или все таки на стороне gitlab Подскажите в чем может быть причина ошибки?
  • Вопрос задан
  • 27 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
SignFinder
@SignFinder
Wintel\Unix Engineer\DevOps
Проблема в том, что образ, запускаемый gitlab runner не содержит rsync\путь к rsync отсутствует в PATH.
Да и вообще смысла использовать здесь rsync нет, достаточно обычного cp
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
В скриптах лучше указывать полный путь к программам и файлам. Не факт, что в момент запуска скрипта, особенно внешней командой, будут установлены нужные переменные окружения, в частности PATH.
Попробуйте заменить rsync на /usr/bin/rsync, а php на /usr/bin/php. У вас они могут быть установлены в другие каталоги, посмотреть можно командой which rsync.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы