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

Bitbucket流水线中能否为已定义步骤添加条件执行逻辑?

Bitbucket Monorepo流水线条件步骤复用问题

需求与场景

我有一个配置了Bitbucket流水线的Monorepo项目,需要实现:

  • 默认构建(代码推送触发)仅运行Monorepo中发生变更的项目对应的步骤,每个项目使用独立的预定义步骤
  • 特定环境的自定义构建需无条件运行所有项目的预定义步骤

已预定义以下步骤:

definitions:
  steps:
    - step: &ExampleProjectBuildStep
        name: Example Project Build Step
        script:
          - echo 'Example project build step'
    - step: &ExampleProjectBuildStep2
        name: Example Project Build Step 2
        script:
          - echo 'Example project build step 2'

期望的流水线配置(带条件的并行默认构建)如下,但不确定是否需要为有无条件场景分别定义步骤:

pipelines:
  default:
    - parallel
        - step: *ExampleProjectBuildStep
            condition:
              changesets:
                includePaths:
                  - "example_path/**"
        - step: *ExampleProjectBuildStep2
            condition:
              changesets:
                includePaths:
                  - "example_path_2/**"
  example_custom_pipeline:
    - step: *ExampleProjectBuildStep
    - step: *ExampleProjectBuildStep2

注:在另一个未预定义步骤的简单Monorepo中,并行条件步骤可正常运行。

解答

不需要为有无条件场景分别定义步骤,Bitbucket Pipelines支持在引用预定义步骤时附加条件,核心是使用YAML映射合并语法修正配置写法:

正确配置示例

definitions:
  steps:
    - step: &ExampleProjectBuildStep
        name: Example Project Build Step
        script:
          - echo 'Example project build step'
    - step: &ExampleProjectBuildStep2
        name: Example Project Build Step 2
        script:
          - echo 'Example project build step 2'

pipelines:
  default:
    - parallel:
        - step:
            <<: *ExampleProjectBuildStep
            condition:
              changesets:
                includePaths:
                  - "example_path/**"
        - step:
            <<: *ExampleProjectBuildStep2
            condition:
              changesets:
                includePaths:
                  - "example_path_2/**"
  example_custom_pipeline:
    - step: *ExampleProjectBuildStep
    - step: *ExampleProjectBuildStep2

关键说明

  1. YAML合并语法:使用<<: *锚点名称将预定义步骤的配置和新增的condition字段合并,这是实现复用+条件的核心,之前的写法因语法错误无法生效
  2. 缩进规范:确保parallel:后接冒号,子步骤正确缩进,符合YAML语法要求
  3. 条件逻辑:changesets条件会自动跳过无变更路径对应的步骤,满足默认构建只运行变更项目的需求
  4. 自定义流水线:直接引用预定义步骤即可,无需附加条件,实现无条件运行所有步骤的目标

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:48:23