notebook

都内でWEB系エンジニアやってます。

jenkinsを導入してCIをまわす

いまさら感が半端ないですがやっと古くからあるプロジェクトでテストコードを書くようになってきたのでそろそろCIを回していく必要があるよねということで導入してみました

とりあえず導入からslack通知まで

まずは、テストがいつ壊れたかわかるようにするというところが目的

※CentOS6系で環境作ってます

javaのインストール

java1.7以上が必要らしいのでインストールする

yum install java-1.8.0-openjdk-devel.x86_64

リポジトリのインストール

cd /etc/yum.repos.d/
curl -OL http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

インストール

yum install jenkins

設定、起動

  • /etc/sysconfig/jenkins

一台でWEBとかと併用する場合はここの設定をいじる必要があるかも

今回は特に修正しない

JENKINS_PORT="8080" # ポート番号
JENKINS_ARGS="--prefix=/jenkins" # パス
  • 起動
/etc/init.d/jenkins start
  • デフォルトは8080番でWebにアクセスできる

Webから設定

ソースコード管理

ビルド・トリガ

  • SCMをポーリング
    • 一定感覚でソースをチェックアウトするよう設定
    • 就業時間中に設定
0 10,11,12,13,14,15,16,17,18,19,20,21 * * *
  • 定期的に実行

ビルドを定期的に実行する

10 10,11,12,13,14,15,16,17,18,19,20,21 * * *
  • ビルド
    • シェルスクリプトの実行」にビルドの内容を書いていく
    • とりあえずproveのみ実行するように記述
prove -Ilib -It/lib -lvr $WORKSPACE/t

perl実行環境を整える

プロジェクトのテストを回せるように設定していく

本当はCartonとか使うのがいいはずなんですが、、、とりあえず動かすのを最優先としたので直接サーバに入って温かみのある環境構築を行います

コマンドラインから

シェルの実行が出来ない状態だったので一旦出来る状態にした

# grep jenkins /etc/passwd
jenkins:x:493:493:Jenkins Continuous Integration Server:/var/lib/jenkins:/bin/false
# usermod -s /bin/bash jenkins

これでjenkinsユーザーでログイン出来るのでperlのアプリケーション実行環境を作る

  • perlbrew

サービスで使っているバージョンが5.16.3なのでそれにあわせてインストールする

curl -kL http://install.perlbrew.pl | bash
source ~/perl5/perlbrew/etc/bashrc
perlbrew available
perlbrew install 5.16.3
perlbrew list
perlbrew swich 5.16.3
perlbrew install-cpanm
  • モジュールのインストール

cpanfileはあるのでinstalldepsでインストール

cpanm --installdeps . 

一部インストール出来ないモジュールを再度インストールして、proveが実行できるところまで

ビルド

Webに戻ってビルドを実行する

コンソール出力を見てテストが実行できていることを確認

Slack連携

ビルド結果をSlackに流す

Slack Plugin

Jenkinsおじさんビルド結果Slackに通知して

ここの手順と同じ

slackのintegrationで発行されるドメインとkeyを入力してslackへ通知が行くように設定

f:id:swfz:20160331051032p:plain

ためしにビルドを実行してみる

f:id:swfz:20160331051049p:plain

通知を出せた

一旦ここまで、これでビルドごとに通知が行くようになるのでいつ失敗したかがわかるようになる