Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jenkins のつらみを軽減した話

38483449b10e3eacb5bddad0f59a5541?s=47 Junki Kaneko
February 21, 2019

Jenkins のつらみを軽減した話

38483449b10e3eacb5bddad0f59a5541?s=128

Junki Kaneko

February 21, 2019
Tweet

Transcript

  1. のつらみを 軽減した話

  2. 自己紹介 金子淳貴 株式会社ディー・エヌ・エー - SWET.G - 言語 - Go, Ruby,

    Python
  3. アジェンダ • 背景 を使わざるを得ない理由 • のつらいところ • つらいところを改善した話し

  4. 背景 を使わざるを得ない理由

  5. 背景 社内全体の開発生産性向上と品質向上をミッションとしている横串組織 社内では事業や組織毎に を から作り直しているところが多く、 適切な構築運用を行われていないところが多かった 適切な構築運用を行うための調査、開発、啓蒙を で行った

  6. を使わざるを得ない理由 • ゲームをビルドする場合、ゲームアセットを大量に作る為、 ビルドに非常に長い時間が掛かる ◦ 高いスペックのマシンが複数台必要 • 現状は を提供しているクラウド は速度面などに問題があるので移行でき

    ていない
  7. のつらみ

  8. のつらみ • 構築運用に関して ◦ オンプレで構築する場合、構築と運用にコストが掛かる ▪ クラウドサービスを利用しないので当然発生する問題 ◦ 監視や可用性の確保を自分で行う必要がある ▪

    で監視したり、 の設定ファイルを定期的にバックアップとったり 色々面 倒くさい ◦ の管理 ▪ 複数の クラスターを管理していると どこに何の が入っているのかわからなくなったり ◦ マシン毎の環境差異を考えなければならない ▪ 別の で成功していたジョブを別の で動かしたら失敗した • 利用に関して ◦ ジョブの管理 ▪ でポチポチしないといけない •
  9. のつらみを改善

  10. のつらみ • 構築運用に関して ◦ 構築と運用にコストがかかる ◦ の管理 ◦ によって環境差異が発生する ◦

    監視や可用性 今回は触れません • 利用に関して ◦ ジョブの管理 構築自動化
  11. 構築自動化

  12. の構成 Jenkins Master (Linux) 構成 Jenkins Slave (Windows) Jenkins Slave

    (Mac) Jenkins Slave (Mac) ・ ・ ・
  13. 構築自動化 ノードにマシンパワーは必要ないので、 クラウド上のリソースを利用して に構築している。 • でクラウド上 のインスタンスを管理 • で のセットアップを自動化

  14. 構築自動化 はファイルへ指定フォーマットで記載してインストール可能としてお り、それを で実行している。 既存の にインストールされている 一覧を ファイルにダンプすることも可能。 https://github.com/Kuniwak/jenkins-plugin-fixator

  15. 構築自動化 を利用して のセットアップを自動化 ノード毎の設定値を で管理。 インストールする のバージョン一覧 インストールする のバージョン アカウント

    証明書 プロファイルの情報
  16. の検証基盤 • と を使って クリーンな環境へのインストールを試行可能にして を回している • や は で仮想化して

    に変換 詳細は ある エンジニアの開発プロセス改善最前線 の発表資料をご覧ください
  17. 環境毎の差異 を利用し、 ノードにインストールされているアプリケーションを自動検知し、 ノードにラベルを自動で割り当て、 ジョブ実行時に利用する を指定できるようにしている https://github.com/jenkinsci/app-detector-plugin 自動割り当て

  18. None
  19. から標準機能の一つとして が入っている。 ユーザーライクな設定 ソースコードと一緒に管理することが可能 の一連の流れを一括管理可能

  20. を ブロックでパイプラインを定義する 単純化された構文を利用する 自由度は低い 簡単に記述することができる を ブロックでパイプラインを定義する 構文で記述することが可能 自由度は高い 自由度が高すぎて可読性が低くなりがち

  21. スレーブの指定。 ステージ毎、もしくはステージ共通で定義できる のワークフローを 毎に定義していく 具体的な動作をここに定義していく ワークフローの終了結果毎に条件分岐して 後処理のハンドリングを行える

  22. 環境変数を定義できる credentials()を使うと 認証情報を扱うことができる 実行時のパラメータ を定義できる ステージ内に定義し、 そのステージを実行する条件 を定義できる

  23. 処理等を 化し、 複数の で再利用することができる の標準機能。 https://jenkins.io/doc/book/pipeline/shared-libraries/

  24. まとめ • 構築運用に関して ◦ 構築と運用にコストがかかる と で自動化 ◦ の管理 コードで管理できるように

    ◦ によって環境差異が発生する で自動化 ◦ 監視や可用性 今回は触れません • 利用に関して ◦ ジョブの管理 化してコードで管理
  25. 最後に も工夫すれば楽になる! けどクラウド で問題なければクラウド を使った方が良いと思います