Dockerパイプライン
このチュートリアルは、単純なDockerパイプラインを作成して実行するのに役立ちます。詳細な使用方法については、パイプラインのドキュメントを参照してください。
ステップ1:認証する
まず、ブラウザでDroneサーバのURLに移動します。まだ認証されていない場合、DroneはログインするためにGitHubにリダイレクトします。
ログイン後、Droneダッシュボードにリダイレクトされます。Droneを初めて使用する場合、DroneがリポジトリリストをGitHubと同期している間、ダッシュボードは数秒間空になります。
ステップ2:リポジトリを有効にする
次に、リポジトリを検索して、[有効にする]ボタンをクリックします。有効化ボタンをクリックすると、リポジトリにウェブフックが追加され、コードをプッシュするたびにDroneに通知されます。有効にするには、リポジトリに対する管理者権限が必要であることに注意してください。
ステップ3:パイプラインを構成する
次に、gitリポジトリのルートに.drone.yml
ファイルを作成してパイプラインを構成する必要があります。このファイルでは、ウェブフックを受信するたびに実行される一連のステップを定義します。
1 kind: pipeline
2 type: docker
3 name: default
4
5 steps:
6 - name: greeting
7 image: alpine
8 commands:
9 - echo hello
10 - echo world
この例で使用されている変数の概要は次のとおりです。
- type
type属性は、パイプラインのタイプを定義します。この例では、各パイプラインステップがDockerコンテナ内で実行されるDockerパイプラインを定義します。Droneは、さまざまなタイプのパイプライン実行環境をサポートしています。
- name
name属性は、パイプラインの名前を定義します。プロジェクトに1つまたは複数のパイプラインを定義できます。
- steps
stepsセクションは、シリアルに実行されるパイプラインステップの配列を定義します。パイプラインのいずれかのステップが失敗した場合、パイプラインはすぐに終了します。- name
name属性は、パイプラインステップの名前を定義します。
- image
image属性は、シェルコマンドが実行されるDockerイメージを定義します。プライベートレジストリを含む任意のDockerレジストリから、パイプライン内の任意のDockerイメージを使用できます。
- commands
commands属性は、Dockerコンテナ内でコンテナエントリポイントとして実行されるシェルコマンドのリストを定義します。コマンドがゼロ以外の終了コードを返す場合、パイプラインステップは失敗します。
- name
構成オプションの完全なリストについては、パイプラインのドキュメントを参照してください。
その他の例
- パイプラインに複数のステップを追加できます。
1 kind: pipeline
2 type: docker
3 name: greeting
4
5 steps:
6 - name: en
7 image: alpine
8 commands:
9 - echo hello world
10
11 - name: fr
12 image: alpine
13 commands:
14 - echo bonjour monde
- ステップの実行を条件付きで制限できます。
1 kind: pipeline
2 type: docker
3 name: greeting
4
5 steps:
6 - name: en
7 image: alpine
8 commands:
9 - echo hello world
10
11 - name: fr
12 image: alpine
13 commands:
14 - echo bonjour monde
15 when:
16 branch:
17 - develop
- 複数のパイプラインを定義することもできます。
1 kind: pipeline
2 type: docker
3 name: en
4
5 steps:
6 - name: greeting
7 image: alpine
8 commands:
9 - echo hello world
10
11 ---
12 kind: pipeline
13 type: docker
14 name: fr
15
16 steps:
17 - name: greeting
18 image: alpine
19 commands:
20 - echo bonjour monde
- パイプラインの実行を条件付きで制限できます。
1 kind: pipeline
2 type: docker
3 name: en
4
5 steps:
6 - name: greeting
7 image: alpine
8 commands:
9 - echo hello world
10
11 trigger:
12 event:
13 - push
14
15 ---
16 kind: pipeline
17 type: docker
18 name: fr
19
20 steps:
21 - name: greeting
22 image: alpine
23 commands:
24 - echo bonjour monde
25
26 trigger:
27 event:
28 - pull_request
- 任意のDockerレジストリから任意のイメージを使用できます。
1 kind: pipeline
2 type: docker
3 name: default
4
5 steps:
6 - name: test
7 image: gcr.io/library/golang
8 commands:
9 - go build
10 - go test -v
- 統合テスト用のサービスコンテナを定義できます。
1 kind: pipeline
2 type: docker
3 name: default
4
5 steps:
6 - name: test
7 image: golang:1.13
8 commands:
9 - go build
10 - go test -v
11
12 services:
13 - name: redis
14 image: redis
- プラグインを使用してサードパーティシステムと統合し、ソフトウェアの通知、公開、展開などの一般的なタスクを実行できます。
1 kind: pipeline
2 type: docker
3 name: default
4
5 steps:
6 - name: test
7 image: golang:1.13
8 commands:
9 - go build
10 - go test -v
11
12 - name: notify
13 image: plugins/slack
14 settings:
15 channel: dev
16 webhook: https://hooks.slack.com/services/...
- シークレットから機密パラメータを取得することもできます。
1 kind: pipeline
2 type: docker
3 name: default
4
5 steps:
6 - name: test
7 image: golang:1.13
8 commands:
9 - go build
10 - go test -v
11
12 - name: notify
13 image: plugins/slack
14 settings:
15 channel: dev
16 webhook:
17 from_secret: endpoint
ステップ4:パイプラインを実行する
最後のステップは、 .drone.yml
をリポジトリにコミットし、変更をプッシュすることです。コードをプッシュすると、GitHubはウェブフックをDroneに送信し、Droneがパイプラインを実行します。