我有一个带有 .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
,该目录是您希望从中上传资产的路径。vendor
1/src/vendor
您的工作配置将是:
build_master: # ... script: - composer install -d 1/src --ignore-platform-reqs artifacts: paths: - 1/src/vendor
也就是说,composer install
如果它vendor
是应该在的目录,那么在项目的根目录下运行是没有问题的。
请记住,为了优化传输,您还可以在构建过程中添加额外的脚本行来压缩您的依赖项目录。
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消