構成

Updated 2 years ago by Admin

このドキュメントでは、.drone.yml構成ファイルの概要を説明します。構成ファイルはリポジトリのルートに配置され、1つ以上の継続的インテグレーションまたは継続的デリバリパイプラインを定義します。

パイプライン構成の例:

1   kind: pipeline
2 type: docker
3 name: default
4
5 steps:
6 - name: test
7 image: golang
8 commands:
9 - go build
10 - go test


オブジェクト

構成ファイルは、同じファイル内の1つまたは複数のオブジェクトを定義します。各オブジェクトは、個別のyamlドキュメントです。パイプラインは一種のオブジェクトです。署名オブジェクトとシークレットオブジェクトを定義することもできます。

  • パイプライン構成の例:
    kind: pipeline
    type: docker
    name: default

    steps:
    - name: test
    image: golang
    commands:
    - go build
    - go test
  • パイプラインと署名の構成例:
    ---
    kind: pipeline
    type: docker
    name: default

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

    ---
    kind: signature
    hmac: F10E2821BBBEA527EA02200352313BC059445190

各オブジェクトには、 kind属性を含める必要があります。 kind属性は、宣言されているオブジェクトの種類を識別し、あるオブジェクトを別のオブジェクトと区別するのに役立ちます。


パイプライン

Pipelineオブジェクトは、継続的インテグレーションと継続的デリバリーのパイプラインを定義します。type属性は、パイプラインの実行時に使用する必要があるランタイムを定義します。Droneは、さまざまなランタイムのサポートを提供します。

  • 分離されたDockerコンテナ内で各パイプラインステップを実行するDockerパイプラインの例。
    kind: pipeline
    type: docker
  • パイプラインステップをKubernetesポッド内のコンテナとして実行するKubernetesパイプラインの例。
    kind: pipeline
    type: kubernetes
  • パイプラインステップをホストマシン上で直接実行し、分離をゼロにするExecパイプラインの例。
    kind: pipeline
    type: exec

複数のパイプライン

同じ構成ファイルで複数のパイプラインオブジェクトを定義すると、パイプラインはランナー全体に分散され、並行して実行されます。次の例では、2つのパイプラインを並列に実行するように構成しています。全体的なビルドステータスは、両方のパイプラインが正常に完了したかどうかによって決まります。

パイプラインは状態を共有しないことに注意してください。 2つのパイプラインが同じ基になるファイルシステムまたは生成されたファイルにアクセスすることはできません。
1   kind: pipeline
2 type: docker
3 name: backend
4
5 steps:
6 - name: build
7 image: golang
8 commands:
9 - go build
10 - go test
11
12 ---
13 kind: pipeline
14 type: docker
15 name: frontend
16
17 steps:
18 - name: build
19 image: node
20 commands:
21 - npm install
22 - npm test

複数のプラットフォーム

複数のパイプラインの一般的な使用例の1つは、さまざまなプラットフォームのパイプラインを定義して実行することです。たとえば、x86で1つのパイプラインを実行し、armで別のパイプラインを実行します。

1   kind: pipeline
2 type: docker
3 name: amd64
4
5 platform:
6 arch: amd64
7
8 steps:
9 - name: build
10 image: golang
11 commands:
12 - go build
13 - go test
14
15 ---
16 kind: pipeline
17 type: docker
18 name: arm
19
20 platform:
21 arch: arm64
22
23 steps:
24 - name: build
25 image: golang
26 commands:
27 - go build
28 - go test

グラフの実行

Droneは、パイプラインを有向非巡回グラフとして記述することもサポートしています。以下の例では、最初の2つのパイプラインを並行して実行するためにファンアウトし、完了したら、最後のパイプラインを実行するためにファンアウトします。

1   kind: pipeline
2 type: docker
3 name: backend
4
5 steps:
6 - name: build
7 image: golang
8 commands:
9 - go build
10 - go test
11
12 ---
13 kind: pipeline
14 type: docker
15 name: frontend
16
17 steps:
18 - name: build
19 image: node
20 commands:
21 - npm install
22 - npm test
23
24 ---
25 kind: pipeline
26 name: after
27
28 steps:
29 - name: notify
30 image: plugins/slack
31 settings:
32 room: general
33 webhook: https://...
34
35 depends_on:
36 - backend
37 - frontend

スクリプティング

Droneは、yamlのより強力な代替手段が必要な場合に備えて、カスタム言語拡張をサポートしています。詳細については、 StarlarkおよびJsonnetのドキュメントを参照してください。独自の言語拡張機能を作成することもできます。


How did we do?