Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Zuul と OpenStack で作る
気の利いた CI 環境
Akihiro Motoki
Jul 22, 2019
OpenStack Days Tokyo 2019
Who am I ?
● Akihiro Motoki / 元木 顕弘
○ NEC OSS推進センター
○ IRC: amotoki, Twitter: @ritchey98
○ 以前は IPルータ、広域Ethernet装置、迷惑メールフィルタ...
Zuul とは?
“Stop Merging Broken Code”
https://zuul-ci.org/index.html
● Project Gating ツール (CI ツール)
● コードの変更に対するテストを実行するためのイン...
Zuul の特徴
● Cross Project Testing (マージ時)
○ 複数のレポジトリが関係している場合、それぞれのレポジトリではテストが通っていても、組み合わ
せるとテストが失敗することがある
○ 関連があるレポジトリに関しては...
Zuul の特徴
● Cross Project Dependency
○ 複数のプロジェクトにまたがるパッチをマージ前にテスト可能
●
● 例えば、nova と neutron にまたがる機能を開発しているとする
● Nova のパッチは n...
ジョブ定義
● レポジトリ内でのジョブ定義
○ CI システムに各レポジトリのジョブ定義を書く必要がなく、ジョブの分散・自律管理が可能
○ https://opendev.org/openstack/neutron/src/branch/mas...
ジョブ定義の再利用
$ cat playbooks/base/post-logs.yaml
- hosts: localhost
gather_facts: False
roles:
- role: upload-logs
zuul_log_u...
ジョブ定義も比較的カンタン
Python プロジェクト test1 で “tox -e pep8” を実行したい場合
● tox-pep8 が、 tox 環境の準備を行って、
pep8 環境を実行してくれる
● base ジョブを継承しているの...
Zuul の構造
zuul-executor
zuul-scheduler
Test node
Test node
gerrit
github
ジョブ実行
nodepool
gearman
zookeeper
Test node 作成
Nodepool
● テストノードの管理を行う
○ 負荷に応じてテストノード数を増減
○ テストが終わったノードを削除
● 様々なバックエンドに対応
○ static
○ OpenStack
○ Kubernetes (namespace / ...
Nodepool の OpenStack との連携
● Nodepool 実行ノードに clouds.yaml (OpenStack 認証情報を書いたファイル) を
用意する。
○ 置き場所は以下のいずれか
■ ~/.config/openst...
Zuul のユーザー
● BMW
○ Zuul で CI/CD をまとめて運用。Zuul プロセスは OpenShift 上で動かすことで可用性を確保
● GoDaddy
● OpenLab
● OpenStack Foundation
○ O...
どんな場面で有効?
● 多くの類似ジョブが存在している CI 環境では有用
○ 成果の再利用、継承
● 複数の互いに関連するプロジェクトがあり、
それらにまたがる開発を行う場合
● Jenkins ジョブ定義で shell script をたく...
References
● Zuul Homepage https://zuul-ci.org
● Quick start and Tutorial https://zuul-ci.org/docs/zuul/admin/quick-start....
20190722 Building handy CI with zuul and OpenStack
Upcoming SlideShare
Loading in …5
×

20190722 Building handy CI with zuul and OpenStack

1,054 views

Published on

Presentation at OpenStack Days Tokyo 2019 (20min session)
Zuul introduction, features, basic job definitions and OpenStack integration are covered.

Published in: Engineering
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

20190722 Building handy CI with zuul and OpenStack

  1. 1. Zuul と OpenStack で作る 気の利いた CI 環境 Akihiro Motoki Jul 22, 2019 OpenStack Days Tokyo 2019
  2. 2. Who am I ? ● Akihiro Motoki / 元木 顕弘 ○ NEC OSS推進センター ○ IRC: amotoki, Twitter: @ritchey98 ○ 以前は IPルータ、広域Ethernet装置、迷惑メールフィルタ、 OpenFlow 関連技術などの研究開発 をしていました。 ● OpenStack Upstream Developer ○ Neutron: Core reviewer + drivers team ○ Core reviewer of Horizon, OpenStack Client (OSC), I18n ○ API-SIG, OpenStack SDK … ● OpenStack Operator (でした、ちょっと前まで) ● 日本OpenStackユーザー会 – 副会長、勉強会企画チーム
  3. 3. Zuul とは? “Stop Merging Broken Code” https://zuul-ci.org/index.html ● Project Gating ツール (CI ツール) ● コードの変更に対するテストを実行するためのインフラ ● もとは OpenStack 開発での CI を実現するために作られた ● 現在は汎用的な CI ツールになっている
  4. 4. Zuul の特徴 ● Cross Project Testing (マージ時) ○ 複数のレポジトリが関係している場合、それぞれのレポジトリではテストが通っていても、組み合わ せるとテストが失敗することがある ○ 関連があるレポジトリに関しては、マージが指示された順序で、すべての組み合わせを検証 → どの時点においても動作することを保証 nova neutron cinder 1 1 1 2 2 2 1 1 1 N マージ対象 2 3 1 並列実行 2 3 3 失敗したときは戻した組 み合わせで実行 2 2 3
  5. 5. Zuul の特徴 ● Cross Project Dependency ○ 複数のプロジェクトにまたがるパッチをマージ前にテスト可能 ● ● 例えば、nova と neutron にまたがる機能を開発しているとする ● Nova のパッチは neutron に実装中の機能に依存 ● Neutron のパッチをマージする前に nova との組み合わせが動作することを確認し たい Awesome network feature support Depends-On: https://review.example.com/3 Nova パッチのコミットメッセージ Neutron のパッチの URL
  6. 6. ジョブ定義 ● レポジトリ内でのジョブ定義 ○ CI システムに各レポジトリのジョブ定義を書く必要がなく、ジョブの分散・自律管理が可能 ○ https://opendev.org/openstack/neutron/src/branch/master/.zuul.yaml ● Ansible によるジョブ定義 ○ shell script で書く場合に比べるとモジュール化が行いやすい ● ジョブの再利用、継承 ○ CI を運用する上で必要となるジョブやロールがあらかじめ準備されている ■ https://opendev.org/zuul/zuul-jobs など外部の定義のインポートもできる ○ パッチのテスト環境への展開や実行ログの保存など ○ OpenStack CI での継承 : http://zuul.openstack.org/jobs ■ 例えば “neutron-functional” でフィルタしてみるとわかりやすい
  7. 7. ジョブ定義の再利用 $ cat playbooks/base/post-logs.yaml - hosts: localhost gather_facts: False roles: - role: upload-logs zuul_log_url: "http://localhost:8000" $ cat zuul.d/jobs.yaml - job: name: base parent: null pre-run: playbooks/base/pre.yaml post-run: - playbooks/base/post-ssh.yaml - playbooks/base/post-logs.yaml roles: - zuul: zuul/zuul-jobs $ cat playbooks/base/pre.yaml - hosts: all roles: - add-build-sshkey - prepare-workspace $ less .zuul.yaml - job: name: testjob parent: base run: playbooks/testjob.yaml 継承
  8. 8. ジョブ定義も比較的カンタン Python プロジェクト test1 で “tox -e pep8” を実行したい場合 ● tox-pep8 が、 tox 環境の準備を行って、 pep8 環境を実行してくれる ● base ジョブを継承しているので、 ログの保存なども行われる。 $ less test1/.zuul.yaml - project: check: jobs: - tox-pep8: vars: tox_install_siblings: false gate: jobs: - tox-pep8: vars: tox_install_siblings: false
  9. 9. Zuul の構造 zuul-executor zuul-scheduler Test node Test node gerrit github ジョブ実行 nodepool gearman zookeeper Test node 作成
  10. 10. Nodepool ● テストノードの管理を行う ○ 負荷に応じてテストノード数を増減 ○ テストが終わったノードを削除 ● 様々なバックエンドに対応 ○ static ○ OpenStack ○ Kubernetes (namespace / pod) ○ OpenShift ○ AWS
  11. 11. Nodepool の OpenStack との連携 ● Nodepool 実行ノードに clouds.yaml (OpenStack 認証情報を書いたファイル) を 用意する。 ○ 置き場所は以下のいずれか ■ ~/.config/openstack/clouds.yaml ■ /etc/openstack/clouds.yaml ○ https://docs.openstack.org/openstacksdk/latest/user/config/configuration.html ○ clouds.yaml の動作確認は OS_CLOUD 環境変数を設定して openstack コマンドを実行 ● Nodepool の設定ファイルにノード情報を記載 ○ http://paste.openstack.org/show/754613/ ● Nodepool を再起動すると OpenStack 側に VM が自動的に作成される ○ http://paste.openstack.org/show/754612/
  12. 12. Zuul のユーザー ● BMW ○ Zuul で CI/CD をまとめて運用。Zuul プロセスは OpenShift 上で動かすことで可用性を確保 ● GoDaddy ● OpenLab ● OpenStack Foundation ○ OpenStack, Airship, StarlingX など ● Ansible CI (openstack module + openstacksdk integration) ○ E.g. https://github.com/ansible/ansible/pull/59292 https://zuul-ci.org/users.html
  13. 13. どんな場面で有効? ● 多くの類似ジョブが存在している CI 環境では有用 ○ 成果の再利用、継承 ● 複数の互いに関連するプロジェクトがあり、 それらにまたがる開発を行う場合 ● Jenkins ジョブ定義で shell script をたくさん書いている場合 ● 単純な CI であれば SaaS の CI を利用する方が楽と思われる ○ CircleCI, TravisCI ● CD Foundation の下、Tekton や JenkinsX, Spinaker などの動向も見つつ、 使いやすいものを使っていくがよいと思われる
  14. 14. References ● Zuul Homepage https://zuul-ci.org ● Quick start and Tutorial https://zuul-ci.org/docs/zuul/admin/quick-start.html

×