Bitbucket Pipelines并行子步骤未执行问题咨询
问题原因
你当前的流水线配置存在语法错误:Bitbucket Pipelines 中parallel是顶级流水线节点,不能嵌套在单个step内部。你把parallel放在了Second Step的属性里,这种写法不被系统解析,导致并行子步骤完全不会触发执行。
修正方案
根据你「先完成环境初始化,再并行执行子任务」的需求,提供两种可行的修正方式:
方式一:每个并行子步骤独立完成准备操作
如果每个并行任务都需要执行目录切换和依赖安装,可以把这些命令移到每个并行子步骤的脚本中:
image: python:3.9.16-alpine pipelines: default: - step: runs-on: - self.hosted - regressiontests name: First Step clone: enabled: false caches: - pip script: - apk add git - apk add openssh-client - git clone myrepository.git - pip install -r myrepository/requirements.txt - echo $ENV_FILE | base64 -d -i > myrepository/.env artifacts: - myrepository/** # 直接使用顶级parallel块,包含所有子步骤 - parallel: - step: runs-on: - self.hosted - regressiontests name: Step 2.1 clone: enabled: false caches: - pip script: - cd myrepository - pip install -r requirements.txt - python fancy command 1 - step: runs-on: - self.hosted - regressiontests name: Step 2.2 clone: enabled: false caches: - pip script: - cd myrepository - pip install -r requirements.txt - python fancy command 2 - step: runs-on: - self.hosted - regressiontests name: Step 2.3 clone: enabled: false caches: - pip script: - cd myrepository - pip install -r requirements.txt - python fancy command 3 - step: runs-on: - self.hosted - regressiontests name: Step 2.4 clone: enabled: false caches: - pip script: - cd myrepository - pip install -r requirements.txt - python fancy command 4
方式二:先统一执行准备步骤,再并行运行任务
如果希望只执行一次目录切换和依赖安装,再并行后续命令,可以把准备步骤拆成独立step,通过 artifacts 传递环境后启动并行任务:
image: python:3.9.16-alpine pipelines: default: - step: runs-on: - self.hosted - regressiontests name: First Step clone: enabled: false caches: - pip script: - apk add git - apk add openssh-client - git clone myrepository.git - pip install -r myrepository/requirements.txt - echo $ENV_FILE | base64 -d -i > myrepository/.env artifacts: - myrepository/** - step: runs-on: - self.hosted - regressiontests name: Pre-Parallel Setup clone: enabled: false caches: - pip script: - cd myrepository - pip install -r requirements.txt # 传递准备好的目录给并行步骤 artifacts: - myrepository/** - parallel: - step: runs-on: - self.hosted - regressiontests name: Step 2.1 clone: enabled: false script: - cd myrepository - python fancy command 1 - step: runs-on: - self.hosted - regressiontests name: Step 2.2 clone: enabled: false script: - cd myrepository - python fancy command 2 - step: runs-on: - self.hosted - regressiontests name: Step 2.3 clone: enabled: false script: - cd myrepository - python fancy command 3 - step: runs-on: - self.hosted - regressiontests name: Step 2.4 clone: enabled: false script: - cd myrepository - python fancy command 4
关键注意事项
- 所有步骤保持
clone: false,避免重复克隆代码 - 利用
artifacts在步骤间传递myrepository目录,确保环境一致性 - 所有步骤指定相同的
runs-on标签,保证在符合要求的自托管 runner 上执行
内容的提问来源于stack exchange,提问作者Arrstad
相关产品推荐
相关产品推荐

