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

Bitbucket部署Laravel至Azure Web App时pipeline成功但Artifacts未上传

Bitbucket 流水线部署Laravel到Azure时Artifacts上传失败问题修复

问题相关参考截图

  • 流水线配置代码截图:
    流水线配置代码截图
  • 流水线运行结果截图1:
    流水线运行结果截图1
  • 流水线运行结果截图2:
    流水线运行结果截图2

故障根因

从配置和运行日志判断,故障由3个典型配置错误导致:

  • 跨步骤文件未做留存配置
    Bitbucket Pipelines 每个步骤运行在独立的隔离Docker容器中,步骤间默认不共享文件系统。当前配置把构建、测试、Artifacts上传拆分为独立步骤,但没有在生成部署包的构建步骤下声明需要留存的产物路径,后续上传步骤根本无法读取到前序步骤生成的部署文件,最终出现0文件匹配的报错。
  • Artifacts路径匹配规则有误
    配置中使用了模糊的多层通配符匹配产物,且未考虑Linux运行环境的大小写敏感特性,路径、文件名只要出现大小写偏差就会直接匹配失败。
  • 产物生成逻辑无校验
    构建步骤执行完打包命令后没有做文件存在性校验,若打包命令因为权限、目录不存在等问题静默失败,后续上传步骤自然找不到对应文件。

修复步骤

  1. 调整Artifacts声明位置
    把Artifacts配置移动到生成部署包的构建步骤下,明确声明需要跨步骤留存的文件路径,参考配置:
    - step:
        name: 构建Laravel生产部署包
        script:
          # 安装生产依赖
          - composer install --no-dev --optimize-autoloader --no-interaction
          - npm ci
          - npm run build
          # 打包部署文件
          - zip -r laravel-azure-deploy.zip . -x "*.git*" "tests/*" "node_modules/*" ".env.example"
          # 校验文件是否生成
          - ls -la laravel-azure-deploy.zip
        # 必须在生成文件的步骤下声明artifacts,后续步骤才能访问
        artifacts:
          - laravel-azure-deploy.zip
    
  2. 简化路径匹配规则
    不要使用**/*.zip这类模糊通配符,直接写准确的产物相对路径,反复核对路径、文件名的大小写,和打包命令输出的文件完全一致。
  3. 调整测试步骤的依赖关系
    如果测试步骤不需要用到构建后的产物,可以把测试步骤放在构建步骤之前执行,减少不必要的文件传输;如果测试依赖构建产物,明确给测试步骤添加depends_on配置关联构建步骤。
  4. 校验Azure部署任务的路径配置
    后续调用Azure Web App部署任务时,指定的部署包路径要和留存的Artifacts路径完全一致,不要额外添加不存在的目录前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:21:41