スピーカー @ikikko from ヌーラボ
背景
プロジェクト概要(初期)
共通に利用するフレームワークの開発
10名前後/月
プロジェクト数 20前後
プロジェクト概要(現在)
フェーズ 業務ロジックを含んだアプリケーション開発
100名/月
プロジェクト数 108
問題点
20前後なら、頑張れば1つ1つベタに管理できる
100越えると無理ゲー
対策
多数のプロジェクトの管理
ライブラリの依存管理を自分でやりたくない(ものすごく複雑になってる)
多数のライブラリを管理できる
ライブラリのバージョン変更にも対応できる
内部のライブラリでころころ仕様が変わるやつのチェックも容易
Jenkinsとの連携
設定ファイルを基に、プロジェクトの上流下流を設定する
(xxxプロジェクトが反映されたら、次にyyyプロジェクトを反映する、という
使い方も可能)
バージョンも考慮して自動設定
プロジェクト間の成果物の転送
(普通はwgetとかを使うのかな…?)
ライブラリ管理機能を使えば、成果物はレポジトリ経由でやりとり出来る
関連ツール
Maven 標準のビルドライフサイクル
Ivy (Antベース)
Gradle (Groovyで記述可能)
SBT (Scalaで記述できる)
レポジトリ管理ツール
Webサーバ + WebDAVモジュール (mod_davで簡単に用意できる)
専用ツール Artifactory / Nexusなど
プロジェクトの一括変更
全プロジェクトを横断的に変更したい
プロジェクトを1つずつ変更するのは大変
スクリプトコンソールを使い、全プロジェクトの中身を一括変更する
(スクリプトを書いていると、Jenkinsの内部実装に詳しくもなれる)
Configuration Slicing Plugin
- 標準的な項目を、GUI上で一括編集出来る
- 古いビルドを破棄
Scriptler Plugin
- スクリプトの保存、再利用
- 用意されている外部のスクリプトを利用可能
- スクリプトの実行権限の管理
プロジェクトのお手軽コピー
Jenkinsの機能に、プロジェクトコピー機能がある。
コピー後に画面上から修正が必要。
レポジトリのパス
プロジェクト名を含んだ設定項目
プロジェクトを自前コピー
- 設定ファイルをコピー
- 依存箇所を修正
- 修正したものを基に、コピープロジェクトを新規作成
Remote Access API
プログラムから操作可能なAPI
プロジェクトの作成
プロジェクトの設定取得
Cloudbees Template Plugin
予めテンプレを作成して、そのテンプレを後から利用出来るようにする
100近くあるプロジェクトの管理コストをあのてこのて使って減らす
スロービルド対策
マシンのスケールアップ、アウトで対策
ビルド実行時間の計測、グラフ化
1クリックリリース
リリースプロジェクトの作成
環境ごとに設定を切り替える仕組み(プロファイル)
Jenkinsの拡張
スクリプトコンソール
ショートカットキーの割り当て
Ivyプラグイン
特定の場合にビルドさせないように
バグ報告は日本語も可