为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕工程0101907 2022-11-04 16:24:37
我有一个带有 .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 minutesGitlab 中的日志显示所有软件包都已安装,但是当它尝试为作业上传工件时,这显示: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 操作。
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超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是应该在的目录,那么在项目的根目录下运行是没有问题的。

请记住,为了优化传输,您还可以在构建过程中添加额外的脚本行来压缩您的依赖项目录。


查看完整回答
反对 回复 2022-11-04
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号