drone.io で1つのagentで複数のビルドを同時に実行する

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

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

github.com

droneのビルドの同時実行数はバージョンが上がるたびに様々に変化してきました。

v0.3

drone.toml の worker に好きなだけ docker.sock を設定します。

[worker]
nodes=[
  "unix:///var/run/docker.sock",
  "unix:///var/run/docker.sock",
]

v0.4

Web UIから管理者アカウントで「Nodes」から好きなだけ設定します。

v0.5

agentに環境変数DOCKER_MAX_PROCSで設定します。デフォルトは2です。

  drone-agent:
    image: drone/agent:0.8.0
    command: agent
    restart: always
    ports:
      - 3000:3000
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=drone-server:9000
      - DRONE_SECRET=00e40bfb287a0a553c80297a
      - DRONE_HEALTHCHECK=true
      - DOCKER_MAX_PROCS=4

v0.7 以上

どのバージョンからかわからないのですが、 DOCKER_MAX_PROCSDRONE_MAX_PROCS になっています。デフォルトは1と、これも変更になっています。 実はこの変数はドキュメントにありません。1つのホストに複数のAgentを立てていた人はこの設定値を使うようにするほうが良いでしょう。