如何从GitLab CI / CD自动部署后安装依赖项

问题描述 投票:1回答:1

我正在尝试使用GitLab的CI / CD进行自动部署。

我的项目有一些通过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
continuous-integration gitlab dependency-management continuous-deployment continuous-delivery
1个回答
1
投票

如果你看一下GitLab的documentation for caching PHP dependencies,你会发现它通过CI安装了Composer。我认为你可以利用它来下载项目依赖项,然后再通过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
© www.soinside.com 2019 - 2024. All rights reserved.