Ansible でCIサーバを構築する
2014-10-04 /
Ansible でCIサーバを構築する
ansibleでjenkinsをインストールすればいい。
本当にそれだけです。
それだけではない
重要なポイントがあります。
それは
Dockerのコンテナを使って各ビルド+テストプロセスを分離する
ということです。
そして
Jenkins自体もDockerコンテナとして動作させる
ということです。
必要な登場人物(コンテナ)の整理
Jenkins
Jenkins home (各Jobなどのvariableなものはこちら)
各Job用環境
ユースケース
自分の会社とかでホストしてるGitLab的なものがあるとする。
- gitプロジェクトを作る
- jenkinsにそのプロジェクト用のビルドjobを作る
- git push発生
- web hookでJenkinsのサービスに通知
- 更新のあったプロジェクトのjob起動
- docker run実行 ★
- テスト実行
- レポートをjenkinsのworkspaceに書き込み
- ビルド実行
- 成果物をjenkinsのworkspaceに書き込み
- docker run終了 exit codeがjenkinsに返りビルドの結果が判定される
ポイントは★のところです。
疑問が湧いてきます。
- A) jenkinsはコンテナなので、ホストOS側にインストールされたdockerコマンドは使えません。
- B) 走らせるdockerコンテナのイメージはどこからくるのでしょうか。
解決
の方法はまだ考え中です(ごめんなさい)。
問題Aはcontainer -> host の方向でdocker APIが呼べれば解決かもしれないと思っています。
あー、イメージの作成時にDockerfile渡すのとかも、このAPIでいけるのでしょうか。
ということでこれからDocker APIの可能性を調査してみます。
追記
ほかにもいろいろ解決するべき問題があるなー。
そもそもJenkinsのworkspaceにcloneされたソースをrun対象のコンテナに転送しないといけないし。