侧边栏壁纸
博主头像
进击的码农博主等级

新年新气象,开搞开搞

  • 累计撰写 32 篇文章
  • 累计创建 11 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

DroneCI并行任务配置

wosperry
2023-03-10 / 0 评论 / 0 点赞 / 43 阅读 / 1846 字

并行执行

首先,使用 depends_on 参数指定当前任务所依赖的上一个任务,ForEach 插件可将数组中的每个元素当作独立步骤执行:

kind: pipeline
name: default

steps:
  - name: build
    image: golang
    commands:
      - go build
      
  - name: test
    image: golang
    depends_on: 
      - build
    commands:
      - go test

  - name: deploy
    image: plugins/deploy
    settings:
      host: ![img](file:///C:\Users\JJM\AppData\Roaming\Tencent\QQTempSys\%W@GJ$ACOF(TYDYECOKVDYB.png)production.example.com

  - name: parallel-step-1
    image: busybox
    depends_on:
      - deploy
    foreach:
      from:
        kind: config
        data:
          FOO: bar1
          BAZ: qux1
      action:
        image: alpine/git
        clone:
          disable_auth_config: true
          depth: 1
          url: ![img](file:///C:\Users\JJM\AppData\Roaming\Tencent\QQTempSys\[5UQ[BL(6~BS2JV6W}N6[%S.png)https://github.com/octocat/hello-world.git
        commands:
          - echo $(pwd)

  - name: parallel-step-2
    image: busybox
    depends_on:
      - deploy
    foreach:
      from:
        kind: config
        data:
          FOO: bar2
          BAZ: qux2
      action:
        image: alpine/git     
        clone:
          disable_auth_config: true        
          depth: 1       
          url: ![img](file:///C:\Users\JJM\AppData\Roaming\Tencent\QQTempSys\[5UQ[BL(6~BS2JV6W}N6[%S.png)https://github.com/octocat/hello-world.git   
        commands:
          - echo $(pwd)        

在最后两个步骤中,我们使用了 depends_on 进行了并行执行。其中 parallel-step-1parallel-step-2 步骤从 deploy 步骤继承依赖(需要等待前面步骤执行完),但是不等待彼此。也就是说,这两个步骤将同时启动,并行运行。此处参数 foreach 表示将数组中的所有元素分别当做一个新的独立步骤,并在多个副本之间进行进程通信和资源共享。

通过在 YAML 文件中明确定义这些步骤及其间的依赖关系,防止在相互依赖的任务之间产生死锁或循环错误。

0

评论区