You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Laravel发布文件夹整体打包为GitLab CI制品?

解决步骤

1. 确认发布文件夹根路径

Laravel Envoy 标准零停机部署的目录结构固定,你可以通过以下两种方式直接拿到发布文件夹根路径:

  • 查看你的 Envoy.blade.php 配置,你定义的部署根目录(通常为$deployPath变量)下,current是指向最新生效release文件夹的软链,releases/目录下存放所有历史发布版本,当前发布版本的绝对路径就是 $deployPath/releases/本次发布的commit哈希/时间戳
  • 登录到你的 staging 服务器,执行 readlink 你的部署根目录/current 即可直接输出当前生效release文件夹的绝对路径

2. 同步远程发布文件夹到CI运行器(如适用)

如果你是用Envoy直接在远程服务器执行部署,发布文件夹生成在远程服务器上,需要先同步到GitLab CI运行器本地才能打包为制品,修改你.gitlab-ci.yml的script段:

script:
  - *init_ssh
  - envoy run deploy --on="staging" --commit="$CI_COMMIT_SHA"
  # 将远程服务器的最新发布文件夹同步到CI运行器当前工作目录,命名为release
  # 请将下方的服务器账号、IP、部署根目录替换为你自己的配置
  - rsync -avz 你的服务器账号@staging服务器IP:你的部署根目录/current/ ./release/

如果你的Envoy是直接在CI运行器本地生成发布文件夹,跳过本步骤,直接拿到本地生成的release文件夹路径即可。

3. 修改制品配置打包整个文件夹

直接把整个release文件夹路径写入artifacts.paths,GitLab CI会自动递归打包该目录下的所有内容:

artifacts:
  paths:
    - ./release/
  expire_in: 1 days
  when: on_success

调试小技巧

如果不确定路径是否正确,可以在script段加一行ls -la打印CI运行器当前工作目录的文件结构,或者在服务器上执行ls 你的部署根目录/releases查看生成的发布文件夹名称,确认路径后再配置即可。


内容的提问来源于stack exchange,提问作者Prospero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:12:02