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

如何在Bitbucket Pipelines跨步骤传参到trigger-pipeline触发其他仓库流水线

解决Bitbucket Pipelines跨步骤传递变量到trigger-pipeline的方案

根本原因

Bitbucket Pipelines 每个步骤都运行在独立的隔离容器环境中,单步内通过export声明的环境变量仅在当前步骤的shell生命周期内有效,无法直接被后续步骤读取。同时你提到的「trigger-pipeline执行前无法运行自定义脚本」是误区,pipe本质是script段内的可执行命令,完全可以在调用pipe前插入任意自定义脚本做参数预处理。

解决方法

通过Bitbucket内置的**产物(artifacts)**能力传递变量文件,在触发流水线的步骤中先读取变量再调用pipe即可,修改后的流水线配置如下:

- step:
    name: upload to test
    image: 
      name: ci:latest
    script:
      - bin=`ls  | grep .bin`
      - export VERSION=${bin%.*}
      # 将变量写入文件,用于跨步骤传递
      - echo "export VERSION=$VERSION" > build.env
      - aws s3 sync . s3://somebacketname/test/
    # 声明build.env为产物,会自动传递给后续所有步骤
    artifacts:
      - build.env
          
- step:
    name: testing 
    trigger: manual
    script:
      # 先读取上一步传递的变量文件,导入到当前步骤环境
      - source build.env
      - pipe: atlassian/trigger-pipeline:4.1.5
        variables:
          BITBUCKET_USERNAME: $USER
          BITBUCKET_APP_PASSWORD: $PASSWORD
          REPOSITORY: 'test'
          BRANCH_NAME: 'master'
          CUSTOM_PIPELINE_NAME: 'critical-test'
          WAIT: 'true'
          PIPELINE_VARIABLES: >
                [{
                  "key": "DESIRED_VERSION",
                  "value": "$VERSION"
                },
                {
                  "key": "DURATION",
                  "value": "15"
                }]

验证逻辑

配置修改后运行流水线,第一个步骤生成的VERSION值会被写入build.env并作为产物保留,第二个手动触发的步骤拉取产物后先导入变量,再调用trigger-pipeline时就能正常读取到$VERSION的值,传递到目标仓库的流水线中。

内容的提问来源于stack exchange,提问作者And.Dzh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:00