Jenkins+Dockerを使用したCIサーバの作成
Last-modified: Fri, 08 Mar 2019 20:07:09 JST (1665d)
Top > Jenkins+Dockerを使用したCIサーバの作成
Docerをインストール
- Dockerを動作させるため、JenkinsスレーブサーバはCentOS7で構築しています。
- Dockerインストール
#curl -fsSL https://get.docker.com/
| sh #service docker start
- DockerはCentOS7のFirewalldでは動作しないので、Firewalldを殺して、IPTablesを有効化します。
# systemctl stop firewalld.service # systemctl disable firewalld.service # yum install iptables-services # systemctl start iptables.service # systemctl enable iptables.service
- Dockerは通常rootでないと動作しないため、実行するユーザをDockerグループに所属させます。ここではユーザjenkinsを追加します。
#usermod -aG docker jenkins
PHPUnitを動作させるDockerファイルとシェルの登録
- ここでは、CIサーバの例として、Gitにコミットしたら、Jenkinsが検知して、
Dockerファイルに基づきDockerコンテナを作成し、コンテナ内でPHPUnitを走らせ、結果をJenkinsに返すものを作成します。 - といっても、自分はプログラムを書けないので、ここではlaravelをチェックアウトし、付属のテストを実行します。
- PHPUnitを動作させるDockerfile
と、その中で実行するシェルスクリプト
を作成し、
チェックアウトしたプロジェクトのルートに配置します。 - Gitと連携させるためのプラグイン「GIT plugin」と、PHPカバレッジ率を表示するプラグイン「Clover PHP plugin」をJenkinsの管理ー>プラグインの管理からインストールします。
Jenkinsジョブの作成
- Jenkinsで新規ジョブを作成します。ジョブのスタイルはフリースタイル・プロジェクトです。
- プロジェクト名は適当に設定なのですが、ここではDockerのイメージ名として使用しているので、使える文字は"a-z0-9-_."だけです。
また、実行するノードを制限にチェックを入れ、ラベル式に先ほどDockerをインストールしたJenkinsスレーブサーバ名を指定します。 - ソースコード管理ではGitを選択します。ここはお好きなリポジトリ設定をしてください。
CentOSに付属のGitは古く、Jenkinsでエラーが出ます。ソースより最新のGitをインストールしてください参考 - コミットを監視するため、SCMをポーリングにチェックを入れます。
コミットするたびにJenkinsが動くと負荷的に困るので、ポーリング間隔をここでは10分間隔にしています。 - ビルド手順の追加からシェルの実行を選択。以下の内容を設定します。
IMAGE=$JOB_NAME docker build -t $IMAGE $WORKSPACE docker run --rm -v $WORKSPACE:/var/www/html/testapp --privileged -w /var/www/html/testapp $IMAGE /bin/bash -ex unittest.sh
コマンドラインに使用しているオプションについてはこのあたりを参照 - カバレッジ率レポートを作成するため、CloverXMLの設定をします。
- Junitの集計結果も出したい場合は設定します。
Counter: 4211,
today: 1,
yesterday: 3
このページの参照回数は、4211です。