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

Bitbucket Pipeline构建产物丢失问题求助

解决Bitbucket Pipeline部署Symfony到Azure App Service缺失vendor和Webpack文件的问题

问题根源

你的Pipeline配置里,第二步「Frontend assets」只把public/**作为artifacts传递给部署步骤,第一步生成的vendor目录没有被继续传递,导致部署环节根本没有vendor文件夹。另外,前端构建步骤直接执行yarn add --dev @symfony/webpack-encore不符合常规流程,应该先安装项目已定义的依赖。

具体修复步骤

1. 让vendor目录贯穿全流程

修改第二步的artifacts配置,同时包含vendor/**和public/**,确保第一步生成的vendor能传递到部署步骤:

- step:
    name: Frontend assets
    image: node:20.9.0
    caches:
    - node
    script:
      - yarn install # 先安装项目依赖,不要直接单独添加encore
      - yarn run encore production 
      - ls -l $BITBUCKET_CLONE_DIR
      - echo "Frontend assets build complete"
    artifacts:
      - vendor/** # 新增此行,传递vendor目录到下一步
      - public/**

2. 验证部署前的文件状态(关键排查步骤)

在部署步骤中添加两行ls命令,提前确认vendor和Webpack生成的文件存在后再打包,方便快速定位问题:

- step: &deploy-production
    name: Deployment
    deployment: Production
    script:
      - ls -l $BITBUCKET_CLONE_DIR
      - ls -l $BITBUCKET_CLONE_DIR/vendor # 检查vendor目录是否存在
      - ls -l $BITBUCKET_CLONE_DIR/public/build # 检查Webpack构建产物是否存在
      - sudo apt-get update
      - sudo apt-get install zip
      - zip -r bundle.zip . -x "*.git*" "*.yml" "*.env" # 给排除项加引号,避免空格解析问题
      - pipe: atlassian/azure-web-apps-deploy:1.1.0
        variables:
          AZURE_APP_ID: $AZURE_APP_ID
          AZURE_PASSWORD: $AZURE_PASSWORD
          AZURE_TENANT_ID: $AZURE_TENANT_ID
          AZURE_RESOURCE_GROUP: $AZURE_RESOURCE_GROUP
          AZURE_APP_NAME: 'my-app'
          ZIP_FILE: 'bundle.zip'

3. 优化Composer安装(可选)

如果你的Symfony项目需要运行安装脚本,可以去掉--no-scripts参数,确保依赖安装环节完整执行:

- composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev

修复后的完整Pipeline配置

pipelines:
  branches:
    main: 
      - step:
          name: Build
          image: composer:2.6
          script:
            - composer install --no-interaction --prefer-dist --optimize-autoloader --no-dev
            - ls -l $BITBUCKET_CLONE_DIR
            - echo "Installing composer dependencies complete"
          caches:
            - composer
          artifacts:
            - vendor/**
            - public/**
      - step:
          name: Frontend assets
          image: node:20.9.0
          caches:
          - node
          script:
            - yarn install
            - yarn run encore production 
            - ls -l $BITBUCKET_CLONE_DIR
            - echo "Frontend assets build complete"
          artifacts:
            - vendor/**
            - public/**

      - step: &deploy-production
          name: Deployment
          deployment: Production
          script:
            - ls -l $BITBUCKET_CLONE_DIR
            - ls -l $BITBUCKET_CLONE_DIR/vendor
            - ls -l $BITBUCKET_CLONE_DIR/public/build
            - sudo apt-get update
            - sudo apt-get install zip
            - zip -r bundle.zip . -x "*.git*" "*.yml" "*.env"
            - pipe: atlassian/azure-web-apps-deploy:1.1.0
              variables:
                AZURE_APP_ID: $AZURE_APP_ID
                AZURE_PASSWORD: $AZURE_PASSWORD
                AZURE_TENANT_ID: $AZURE_TENANT_ID
                AZURE_RESOURCE_GROUP: $AZURE_RESOURCE_GROUP
                AZURE_APP_NAME: 'my-app'
                ZIP_FILE: 'bundle.zip'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:39:55