猿问

如何在使用 Gitlab CI 迁移到服务器之前使用 Composer 安装依赖项

我有一个带有 .php 文件的 Gitlab 存储库,它通过带有 Gitlab CI 的 rsync 命令部署:


- 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/*我们存储库的根在哪里。


现在我想在将存储库传输到我们的服务器之前添加一个安装 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

我希望作曲家将所有内容安装到vendor文件夹中,Gitlab 将其存储在它的工件中。在部署步骤中,我正在考虑添加另一个像上面那样的 rsync 行,并将源文件夹更改vendor/为$SERVER_USER@$SERVER_HOST/$SERVER_DOMAIN/1/src/vendor.


我无法弄清楚这哪里出错了。也许它与 artifact-vendor 文件夹也需要相对于有关1/src/,我想知道我是否真的需要部署脚本中的两条 rsync 行,而不是将作曲家包安装到 /builds/ 中的正确文件夹中.../project-name/ 文件夹,因此只需要一个 rsync 操作。


慕工程0101907
浏览 148回答 1
1回答

冉冉说

从 Gitlab 的文档页面:文件和目录的所有路径都相对于在构建期间克隆的存储库。并且artifacts:paths也相对于您的项目构建的根目录。在运行 composer in 时,将创建目录1/src,该目录是您希望从中上传资产的路径。vendor1/src/vendor您的工作配置将是:build_master:   # ...   script:     - composer install -d 1/src --ignore-platform-reqs   artifacts:     paths:       - 1/src/vendor也就是说,composer install如果它vendor是应该在的目录,那么在项目的根目录下运行是没有问题的。请记住,为了优化传输,您还可以在构建过程中添加额外的脚本行来压缩您的依赖项目录。
随时随地看视频慕课网APP
我要回答