Как установить зависимости после автоматического развертывания с GitLab CI / CD - PullRequest
1 голос
/ 29 марта 2019

Я пытаюсь выполнить автоматическое развертывание с использованием CI / CD GitLab.

Мой проект имеет пару зависимостей, управляемых через Composer, и я где-то читал, что эти зависимости (каталог vendor) в идеале должныдобавьте в файл .gitignore, чтобы они не загружались в репозиторий, и я так и сделал.

Когда я проверял автоматическое развертывание, измененные файлы загружались, но я получал ошибки, касающиеся отсутствующего поставщика.файлы, которые я ожидал - так что теперь вопрос в том, как мне установить эти зависимости в контексте удаленного сервера из среды GitLab CI / CD?

Мой .gitlab-ci.yml файл выглядит так:

staging:
  stage: staging
  before_script:
    - apt-get update -qq && apt-get install -y -qq lftp
  script:
    - lftp -c "set ftp:ssl-allow no; open -u $USERNAME,$PASSWORD $HOST; mirror -Rev . /public_html  --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
  environment:
    name: staging
    url: http://staging.example.com
  only:
    - staging

1 Ответ

1 голос
/ 30 марта 2019

Если вы посмотрите документацию GitLab для кэширования зависимостей PHP , вы заметите, что он устанавливает Composer через CI.Я думаю, что вы могли бы использовать это для загрузки зависимостей проекта, прежде чем загружать их через lftp.

staging:
  stage: staging
  before_script:
    # Install git since Composer usually requires this if installing from source
    - apt-get update -qq && apt-get install -y -qq git
    # Install lftp to upload files to remote server
    - apt-get update -qq && apt-get install -y -qq lftp
    # Install Composer
    - curl --show-error --silent https://getcomposer.org/installer | php
    # Install project dependencies through Composer (downloads the vendor directory)
    - php composer.phar install
  script:
    # Upload files including the vendor directory
    - lftp -c "set ftp:ssl-allow no; open -u $USERNAME,$PASSWORD $HOST; mirror -Rev . /public_html  --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
  environment:
    name: staging
    url: http://staging.example.com
  only:
    - staging
...