29
OpenStack UpstreamにおけるCIMasayuki Igawa [email protected] masayukig on Freenode, Twitter, GitHub July 7, 2016 github.com/masayukig/better-testing-through-statistics-ja

OpenStack Upstream開発におけるCI品質向上施策

Embed Size (px)

Citation preview

Page 1: OpenStack Upstream開発におけるCI品質向上施策

OpenStack Upstream開発におけるCI品質向上施策

Masayuki [email protected]

masayukig on Freenode, Twitter, GitHub

July 7, 2016

github.com/masayukig/better-testing-through-statistics-ja

Page 2: OpenStack Upstream開発におけるCI品質向上施策

Agenda

I 自己紹介I 今日のゴールI OpenStack開発の概要

I OpenStack QAチームって何?I “OpenStackゲート”って何?

I 困ったことI 解決方法(利用・開発しているツール)I Keep/良かった点I Problem/改善点I Try/今後の活動I まとめI 質疑応答

1 / 28

Page 3: OpenStack Upstream開発におけるCI品質向上施策

自己紹介

I 所属企業:日本ヒューレット・パッカード株式会社I Hewlett Packard Enterprise/OpenStack アップストリーム開発チーム所属I メンバー数:20数名?I チームメンバー日本人は私だけ。日本にいるのも私だけ!

I 業務活動内容:OpenStack QA 領域でアップストリームを通じた開発I Tempest, OpenStack-Health, Subunit2SQL, Stackviz等のコアメンバ (≒コミッ

タ?)I stackalytics.com/?user_id=igawa

2 / 28

Page 4: OpenStack Upstream開発におけるCI品質向上施策

今日のゴール

I OpenStackアップストリーム開発概要を理解するI 利用されているツール・手法を知るI (できれば)アップストリーム開発に興味を持つ

3 / 28

Page 5: OpenStack Upstream開発におけるCI品質向上施策

OpenStack開発の概要

I 6ヶ月毎のリリース (. . . Liberty, Mitaka, Newton, Ocata,. . . )I Gate (gerrit.openstack.org, zuul/Jenkins. . . ) →詳細後述I 参考資料

I governance.openstack.org/reference/release-naming.htmlI docs.openstack.org/ja/upstream-training/01-release-cycle.html

4 / 28

Page 6: OpenStack Upstream開発におけるCI品質向上施策

“OpenStack QAチーム”って何?

I An official OpenStack project teamI Develop, maintain, and initiate tools and plans to ensure the upstream stability

and quality of OpenStack, and its release readiness at any point during the releasecycle. → CI/CDできるように整える役割

I 17リポジトリ (2016/7/7現在)I Tempest, DevStack, os-testr, openstack-health, stackviz, Grenade, Hacking,

Bashate, etc..

5 / 28

Page 7: OpenStack Upstream開発におけるCI品質向上施策

OpenStackの“Gate”って何?

6 / 28

Page 8: OpenStack Upstream開発におけるCI品質向上施策

1つのパッチを投げると何が起こるのか?

7 / 28

Page 9: OpenStack Upstream開発におけるCI品質向上施策

8 / 28

Page 10: OpenStack Upstream開発におけるCI品質向上施策

Gateの規模感

1つのパッチで行われること:I 5–25 DevstacksI ~10,000 integration tests

(約1.5k/devstack)I ~151 2ndレベルゲスト生成/devstackI ~1 GBログファイル (非圧縮時)/実

行毎合計すると:

I ~12,500 ジョブ (check or gate)実行/日

I ~0.01% 個別tempestテスト毎失敗率I ~.77% tempest 実行全体失敗率

Tempestテスト実行数/日 (GateQ):

9 / 28

Page 11: OpenStack Upstream開発におけるCI品質向上施策

Log ServerI Log Server: logs.openstack.orgI 全ジョブの生成物を~4ヶ月保持I ~8 TBの圧縮データ

10 / 28

Page 12: OpenStack Upstream開発におけるCI品質向上施策

困ったこと

I 大量のログの中から目的のものを見つける必要ありI 大量のテスト実行結果を俯瞰的に確認したい (パフォーマンス劣化・向上の

検出等)

11 / 28

Page 13: OpenStack Upstream開発におけるCI品質向上施策

GraphiteI graphite.openstack.orgI OpenStack Infra チームが提供I Include job resultsI Jobレベルのデータに限定I 個別のJobへのリンクはできない

12 / 28

Page 14: OpenStack Upstream開発におけるCI品質向上施策

GrafanaI grafana.openstack.orgI Graphiteに対するDashboard機能を提供 (簡単に視覚化できる)I 既にいくつかのダッシュボードが提供されているI 数プロジェクト(Neutron等)がJob失敗率視覚化に利用中

13 / 28

Page 15: OpenStack Upstream開発におけるCI品質向上施策

ELKI Elasticsearch, Logstash, KibanaI logstash.openstack.orgI 大量のログファイルを検索する機能を提供I 10日間のログデータに制限

14 / 28

Page 16: OpenStack Upstream開発におけるCI品質向上施策

Elastic Recheck

I 「このエラー前にも起きたよね?」を自動的に検出するI status.openstack.org/elastic-recheck

15 / 28

Page 17: OpenStack Upstream開発におけるCI品質向上施策

subunit2sql

I テスト結果データをSQLデータベースに保持する機能を提供I 対応DB: MySQL, PostgreSQL, SQLiteI DBに保持したデータに対するPython APIを提供I 6ヶ月間の実行結果を保持(ゲート環境)

16 / 28

Page 18: OpenStack Upstream開発におけるCI品質向上施策

subunit2sql in OpenStackインフラ

17 / 28

Page 19: OpenStack Upstream開発におけるCI品質向上施策

openstack-healthI status.openstack.org/openstack-healthI ゲートの実行結果データをアクセスできるダッシュボードとして開発開始I subunit2sqlとelastic recheckのデータと連携

18 / 28

Page 20: OpenStack Upstream開発におけるCI品質向上施策

OpenStack-Health Architecture

19 / 28

Page 21: OpenStack Upstream開発におけるCI品質向上施策

StackViz個々のCIビルド結果を視覚化するツール

I ソースコード:git.openstack.org/cgit/openstack/stackviz

20 / 28

Page 22: OpenStack Upstream開発におけるCI品質向上施策

21 / 28

Page 23: OpenStack Upstream開発におけるCI品質向上施策

22 / 28

Page 24: OpenStack Upstream開発におけるCI品質向上施策

Keep/良かった点I 全てのパッチに対してIntegrationテストを実行しており、破滅的な改変など

を防いでいるI Job実行結果を俯瞰的に視覚化するにより、パフォーマンス劣化・改善を確

認することができた

23 / 28

Page 25: OpenStack Upstream開発におけるCI品質向上施策

Problem/改善点

I 非常に多くの種類のデータ・制限があり、効果的な見せ方が難しいI GateとPeriodicジョブのデータしか保持していない

(subunit2sql/openstack-health)I インフラに起因するエラーが対象外 (subunit2sql/openstack-health)I 企業に所属する開発者のコントリビューションが得られにくい

24 / 28

Page 26: OpenStack Upstream開発におけるCI品質向上施策

Try/今後の活動

I openstack-health改善I 全てのデータを見られるようにI elastic recheckデータの更なる統合I zuulデータの統合I 単体テストカバレッジ推移

I 各種UIの改善I QAプロジェクトの宣伝

25 / 28

Page 27: OpenStack Upstream開発におけるCI品質向上施策

まとめ

I 活発な開発を維持するため、OpenStackアップストリーム開発ではCIが行われている

I CIを支える各種ツールが開発・導入され運用されているI graphite/grafanaI Zuul (Gate)I elastic-recheckI subunit2sqlI openstack-healthI stackviz, etc.

I OpenStack開発を支える、QAに興味がある開発者・支援者募集中!

26 / 28

Page 28: OpenStack Upstream開発におけるCI品質向上施策

Questions?

27 / 28

Page 29: OpenStack Upstream開発におけるCI品質向上施策

Where to get more information

I openstack-dev ML [email protected] #openstack-qa on FreenodeI https://wiki.openstack.org/wiki/QAI http://git.openstack.org/cgit/openstack/openstack-health/I http://git.openstack.org/cgit/openstack/stackviz/I http://git.openstack.org/cgit/openstack-infra/subunit2sqlI http://git.openstack.org/cgit/openstack-infra/elastic-recheck/

28 / 28