Upload
masayuki-igawa
View
139
Download
2
Embed Size (px)
Citation preview
OpenStack Upstream開発におけるCI品質向上施策
Masayuki [email protected]
masayukig on Freenode, Twitter, GitHub
July 7, 2016
github.com/masayukig/better-testing-through-statistics-ja
Agenda
I 自己紹介I 今日のゴールI OpenStack開発の概要
I OpenStack QAチームって何?I “OpenStackゲート”って何?
I 困ったことI 解決方法(利用・開発しているツール)I Keep/良かった点I Problem/改善点I Try/今後の活動I まとめI 質疑応答
1 / 28
自己紹介
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
今日のゴール
I OpenStackアップストリーム開発概要を理解するI 利用されているツール・手法を知るI (できれば)アップストリーム開発に興味を持つ
3 / 28
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
“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
OpenStackの“Gate”って何?
6 / 28
1つのパッチを投げると何が起こるのか?
7 / 28
8 / 28
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
Log ServerI Log Server: logs.openstack.orgI 全ジョブの生成物を~4ヶ月保持I ~8 TBの圧縮データ
10 / 28
困ったこと
I 大量のログの中から目的のものを見つける必要ありI 大量のテスト実行結果を俯瞰的に確認したい (パフォーマンス劣化・向上の
検出等)
11 / 28
GraphiteI graphite.openstack.orgI OpenStack Infra チームが提供I Include job resultsI Jobレベルのデータに限定I 個別のJobへのリンクはできない
12 / 28
GrafanaI grafana.openstack.orgI Graphiteに対するDashboard機能を提供 (簡単に視覚化できる)I 既にいくつかのダッシュボードが提供されているI 数プロジェクト(Neutron等)がJob失敗率視覚化に利用中
13 / 28
ELKI Elasticsearch, Logstash, KibanaI logstash.openstack.orgI 大量のログファイルを検索する機能を提供I 10日間のログデータに制限
14 / 28
Elastic Recheck
I 「このエラー前にも起きたよね?」を自動的に検出するI status.openstack.org/elastic-recheck
15 / 28
subunit2sql
I テスト結果データをSQLデータベースに保持する機能を提供I 対応DB: MySQL, PostgreSQL, SQLiteI DBに保持したデータに対するPython APIを提供I 6ヶ月間の実行結果を保持(ゲート環境)
16 / 28
subunit2sql in OpenStackインフラ
17 / 28
openstack-healthI status.openstack.org/openstack-healthI ゲートの実行結果データをアクセスできるダッシュボードとして開発開始I subunit2sqlとelastic recheckのデータと連携
18 / 28
OpenStack-Health Architecture
19 / 28
StackViz個々のCIビルド結果を視覚化するツール
I ソースコード:git.openstack.org/cgit/openstack/stackviz
20 / 28
21 / 28
22 / 28
Keep/良かった点I 全てのパッチに対してIntegrationテストを実行しており、破滅的な改変など
を防いでいるI Job実行結果を俯瞰的に視覚化するにより、パフォーマンス劣化・改善を確
認することができた
23 / 28
Problem/改善点
I 非常に多くの種類のデータ・制限があり、効果的な見せ方が難しいI GateとPeriodicジョブのデータしか保持していない
(subunit2sql/openstack-health)I インフラに起因するエラーが対象外 (subunit2sql/openstack-health)I 企業に所属する開発者のコントリビューションが得られにくい
24 / 28
Try/今後の活動
I openstack-health改善I 全てのデータを見られるようにI elastic recheckデータの更なる統合I zuulデータの統合I 単体テストカバレッジ推移
I 各種UIの改善I QAプロジェクトの宣伝
25 / 28
まとめ
I 活発な開発を維持するため、OpenStackアップストリーム開発ではCIが行われている
I CIを支える各種ツールが開発・導入され運用されているI graphite/grafanaI Zuul (Gate)I elastic-recheckI subunit2sqlI openstack-healthI stackviz, etc.
I OpenStack開発を支える、QAに興味がある開発者・支援者募集中!
26 / 28
Questions?
27 / 28
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