Prowを試してみた/Try Prow

3499a1d71fa70b8ee44816ca9e7329fe?s=47 bells17
December 24, 2019

Prowを試してみた/Try Prow

Prowを試してみてわかったことなどを会社の部活のLTで話しました
まじで軽く試してみてわかったこと/これから調べる必要がありそうなことをまとめただけなので、まじで触りだけの内容です

3499a1d71fa70b8ee44816ca9e7329fe?s=128

bells17

December 24, 2019
Tweet

Transcript

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

  2. Prowとは?

  3. 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 を参照
  4. None
  5. Kubernetesリポジトリでの利用例

  6. None
  7. None
  8. Prowを導入する上で考える必要があること

  9. • Prowの実行環境の用意(Kubernetes, etc...) • Prow実行環境のセキュリティ設定(e.g. Prowサーバーへのアクセス制御) • Github Botアカウントの作成 •

    Botアカウントの権限設定 • Prow準拠のリポジトリ運用ルールの作成 ◦ ラベルベースによる運用を行う ◦ approveなどをProwのコマンドを使用する ◦ mergeなどはすべてBotで行う ◦ etc… • In-treeプラグインで不足する部分についてはプラグインを自作する Prow導入に向けて
  10. Prow環境の構築(できたとこまで)

  11. • GKEクラスタを構築 • Botアカウントを用意 • Botアカウントのpersonal access tokenを生成 • Prowテスト運用用のリポジトリを用意

    • Prow用のWebhookを設定 • 手元にbazelとtackleを用意 ◦ tackleは記載の方法では用意できなかったので git clone git@github.com:kubernetes/test-infra.git && cd test-infra/prow && make buildで生成 • tackleコマンドを実行 • Prowのプラグイン設定を行うplugins.yamlをProwにデプロイ Prow環境構築
  12. None
  13. とりあえずそれっぽく動く とこまではできた

  14. • PR変更サイズに応じたサイズラベルを自動付与 • /assignによる担当者アサイン • /lgtmによるlgtmラベルの付与 できたこと • /approveによるmerge •

    /ok-to-testによるCIテストの実行 • sig/docsなどの種類区分ラベルの付与 まだできてないこと
  15. • 前ページのできてないことの検証 • triggerプラグイン実行用のサーバーの用意 • External pluginの実装&利用方法の調査 • Prowの設計思想の理解 •

    Prowを利用したCI/CDパイプラインの設計 • organizationレベルでのProwに必要な権限周りの設計 Prow検証のための残タスク
  16. Thank you!

  17. • 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/ 参考