Slide 1

Slide 1 text

Prowを試してみた わかったところまで共有します @bells17

Slide 2

Slide 2 text

Prowとは?

Slide 3

Slide 3 text

Prow ● Kubernetesを開発していくいために作られたCI/CDツール(元々はJenkinsを利用) ● Githubの各種イベントをハンドリングして動作する ● In-tree plugin + external pluginによるプラグイン形式を採用 ● Kubernetes関連リポジトリはだいたいProwでCI/CDが行われている ● Prow自体はKubernetes, Knative, Jenkinsなどのプラットホームで動作するよう ● より詳細な情報は https://github.com/kubernetes/test-infra/tree/master/prow を参照

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Kubernetesリポジトリでの利用例

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Prowを導入する上で考える必要があること

Slide 9

Slide 9 text

● Prowの実行環境の用意(Kubernetes, etc...) ● Prow実行環境のセキュリティ設定(e.g. Prowサーバーへのアクセス制御) ● Github Botアカウントの作成 ● Botアカウントの権限設定 ● Prow準拠のリポジトリ運用ルールの作成 ○ ラベルベースによる運用を行う ○ approveなどをProwのコマンドを使用する ○ mergeなどはすべてBotで行う ○ etc… ● In-treeプラグインで不足する部分についてはプラグインを自作する Prow導入に向けて

Slide 10

Slide 10 text

Prow環境の構築(できたとこまで)

Slide 11

Slide 11 text

● GKEクラスタを構築 ● Botアカウントを用意 ● Botアカウントのpersonal access tokenを生成 ● Prowテスト運用用のリポジトリを用意 ● Prow用のWebhookを設定 ● 手元にbazelとtackleを用意 ○ tackleは記載の方法では用意できなかったので git clone [email protected]:kubernetes/test-infra.git && cd test-infra/prow && make buildで生成 ● tackleコマンドを実行 ● Prowのプラグイン設定を行うplugins.yamlをProwにデプロイ Prow環境構築

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

とりあえずそれっぽく動く とこまではできた

Slide 14

Slide 14 text

● PR変更サイズに応じたサイズラベルを自動付与 ● /assignによる担当者アサイン ● /lgtmによるlgtmラベルの付与 できたこと ● /approveによるmerge ● /ok-to-testによるCIテストの実行 ● sig/docsなどの種類区分ラベルの付与 まだできてないこと

Slide 15

Slide 15 text

● 前ページのできてないことの検証 ● triggerプラグイン実行用のサーバーの用意 ● External pluginの実装&利用方法の調査 ● Prowの設計思想の理解 ● Prowを利用したCI/CDパイプラインの設計 ● organizationレベルでのProwに必要な権限周りの設計 Prow検証のための残タスク

Slide 16

Slide 16 text

Thank you!

Slide 17

Slide 17 text

● https://github.com/kubernetes/test-infra/tree/243bc1562d8d66094881a6d53225acb26d051 65e/prow ● https://github.com/kubernetes/test-infra/blob/243bc1562d8d66094881a6d53225acb26d05 165e/prow/getting_started_deploy.md ● https://github.com/kubernetes/test-infra/blob/243bc1562d8d66094881a6d53225acb26d05 165e/prow/plugins/README.md ● https://github.com/gkuga/prow-handson ● https://blog.soushi.me/entry/2019/01/08/123752/ 参考