Как установить зависимости с Composer перед переходом на сервер с Gitlab CI - PullRequest
0 голосов
/ 18 марта 2020

У меня есть репозиторий Gitlab с php -файлами, который развертывается с помощью этой команды rsyn c с Gitlab CI:

- rsync -avz -e "ssh -i ~/.ssh/id_rsa -p $SERVER_PORT" /builds/account-name/group-name/project-name/* $SERVER_USER@$SERVER_HOST/$SERVER_DOMAIN

Где /builds/account-name/group-name/project-name/* - это root нашего репозитория.

Теперь я хочу добавить шаг, который устанавливает Composer зависимостей перед переносом репозитория на наш сервер, но я не могу понять, как добраться до установленных зависимостей на этапе развертывания , Файл composer. json находится в /1/src/:

Шаг build, который я добавил до работы сценария развертывания, выглядит следующим образом:

build_master:
  image: composer
  stage: build
  only:
    - dev
  script:
    - composer install -d /builds/account-name/group-name/project-name/1/src/ --ignore-platform-reqs
  artifacts:
    paths:
      - vendor/
    expire_in: 30 minutes

Журналы в Gitlab показывают, что все пакеты устанавливаются, но когда он пытается загрузить артефакты для задания, это показывает:

Uploading artifacts for successful job
 Uploading artifacts...
 WARNING: vendor/: no matching files                
 ERROR: No files to upload                          
 Job succeeded

Я надеялся, что composer установит все в vendor папка, в которой Gitlab хранит свои артефакты. На этапе развертывания я думал о добавлении еще одной строки rsyn c, подобной приведенной выше, и изменении исходной папки на vendor/ и назначения на $SERVER_USER@$SERVER_HOST/$SERVER_DOMAIN/1/src/vendor.

Я не могу понять, где это идет не так. Возможно, это как-то связано с папкой artifact-vendor, которая также должна относиться к 1/src/, и мне было интересно, нужны ли мне две строки rsyn c в сценарии развертывания вместо установки пакетов composer в нужная папка в папке /builds/.../project-name/ напрямую, так что требуется только одно действие rsyn c.

1 Ответ

1 голос
/ 25 апреля 2020

Из документации Gitlab page :

Все пути к файлам и каталогам относятся к хранилищу, которое было клонировано во время сборки.

И artifacts:paths также относятся к root вашей сборки проектов.

При запуске composer в 1/src каталог vendor будет создан в 1/src/vendor, который является путем, который вы хотите, чтобы активы были выгружены из.

Ваша конфигурация работы будет выглядеть следующим образом:

build_master:
  # ...
  script:
    - composer install -d 1/src --ignore-platform-reqs
  artifacts:
    paths:
      - 1/src/vendor

Тем не менее, нет проблем с запуском composer install на root вашего проекта, если он каталог, в котором vendor должен быть.

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

...