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

Bitbucket Pipeline标签阶段复用步骤未执行,需切换分支部署生产环境

问题原因

你的流水线中tags阶段的<<: *build_and_deploy未执行核心构建部署脚本,本质是YAML的键覆盖规则导致的:当同一个step节点中同时定义script字段和引用锚点时,本地的script会完全替换锚点中的script内容,而不是合并数组。因此tags阶段只执行了git checkout -b master,锚点里的构建命令被覆盖了。

解决方案

我们可以通过拆分锚点的方式,既复用通用配置(缓存、资源规格),又灵活组合不同阶段的脚本,同时保证每个部署环境对应唯一的部署项:

# Variables:
#     Repository:
#         - NETLIFY_AUTH_TOKEN
#     Deployments:
#         - NETLIFY_SITE_ID
image: node:14.21.3

definitions:
  # 抽离构建部署的核心脚本,方便复用
  - &core_deploy_scripts
    - npm install
    - npm run build
    - npm run deploy

  steps:
    # 基础步骤模板:包含通用配置(缓存、资源规格),不含脚本
    - step: &base_deploy_step
        caches:
          - node
        size: 2x

pipelines:
  branches:
    develop:
      - step:
          <<: *base_deploy_step
          name: Build and Deploy develop branch
          deployment: Development
          script: *core_deploy_scripts

  tags:
    "*.*.*":
      - step:
          <<: *base_deploy_step
          name: Build and Deploy master branch on tag
          deployment: Production
          script:
            - git checkout -b master
            - *core_deploy_scripts
方案说明
  1. 复用性:base_deploy_step锚点统一管理缓存、资源规格等通用配置,core_deploy_scripts锚点统一管理构建部署命令,避免重复代码。
  2. 部署项唯一性:develop分支对应Deployment: Development,tags阶段对应Deployment: Production,每个部署环境仅关联一个流水线步骤,符合你的要求。
  3. 脚本组合:tags阶段的script先执行分支切换命令,再引用核心部署脚本,确保所有步骤按顺序执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:43:11