drone.io でビルドを並列実行する

この記事は drone.io Advent Calendar 2017 - Adventar の15日目の記事です。

drone.io は Goで作られたオープンソースのCD (Continuous Delivery)環境です。

github.com

通常 pipeline に書いたビルドは上から順番にシリアルに実行されていきますが、 group の指定を追加することで好きなステップを並列に実行することができます。

pipeline:
  backend:
   group: build
    image: golang
    commands:
      - go build
      - go test
  frontend:
   group: build
    image: node
    commands:
      - npm install
      - npm run test
      - npm run build
  publish:
    image: plugins/docker
    repo: octocat/hello-world

group: build を指定した箇所は並列で実行され、publish ステップは group: build が終わってから実行されます。 groupの指定をする場合は間に他のステップを入れてはいけません。 またこの並列実行は同一agent(ホスト)上での実行となるため、他のホストにまたがって実行されるわけではありません。リソースの競合には気をつけたほうがいいでしょう。

さて並列に実行すると言えば matrix ビルド機能がありますが、これと組み合わせて並列実行させることはできません。ざんねん。