Hello, Jenkins!

Jenkinsさんと出会ってみよう。

JDKをいれる

これからはOpenJDKの時代だよね、ということでOpenJDKにする。
CentOSだとyumで入る。

# yum install -y java-1.6.0-openjdk
# yum install -y java-1.6.0-openjdk-devel
# yum install -y java-1.6.0-openjdk-src
# yum install -y java-1.6.0-openjdk-javadoc

一番上だけいれればJREは入るけど、JDKとしていれるのであればdevelも必要。
srcとjavadocはなんとなくいれた。

mavenをいれる

Jenkinsでmavenビルドしたいので、Jenkinsを動かすサーバー上にmavenを入れる。
一旦2系の最新版を落としていれることにする。

# cd /usr/local/src
# wget http://ftp.riken.jp/net/apache//maven/binaries/apache-maven-2.2.1-bin.tar.gz
# tar xvzf apache-maven-2.2.1-bin.tar.gz
# mv apache-maven-2.2.1 ../
# cd ..
# ln -s apache-maven-2.2.1 mvn

これでOK. ディレクトリ名はなんとなく。
動作確認は、

# /usr/local/mvn/bin/mvn --version

たぶんJAVA_HOMEとか指定してないんで怒られたりするけどバージョンが表示されたらOK

Jenkinsをいれる

# cd /usr/local
# mkdir jenkins
# cd jenkins
# wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
# java -jar jenkins.war 

この起動だとコンソールにエラーとか出ちゃうけど一旦これで。

アクセスしてみる

http://centos01:8080/

はいアクセスできませんでした、と。

# /sbin/iptables -L --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            
2    ACCEPT     icmp --  anywhere             anywhere            icmp any 
3    ACCEPT     esp  --  anywhere             anywhere            
4    ACCEPT     ah   --  anywhere             anywhere            
5    ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns 
6    ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp 
7    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp 
8    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
9    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
10   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
11   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
12   REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

ですよね。8080ポートあけなきゃね。

8080ポートをあける

# /sbin/iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 8080 -j ACCEPT
# /sbin/iptables -L --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    RH-Firewall-1-INPUT  all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            
2    ACCEPT     icmp --  anywhere             anywhere            icmp any 
3    ACCEPT     esp  --  anywhere             anywhere            
4    ACCEPT     ah   --  anywhere             anywhere            
5    ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns 
6    ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp 
7    ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp 
8    ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
9    ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
10   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:webcache 
11   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http 
12   ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
13   REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

# /sbin/service iptables save
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[  OK  ]

Hello! Jenkins

http://centos01:8080/
今度こそ。

Jenkinsにmavenの情報などを伝える

Jenkinsのトップから、Jenkinsの管理>システムの設定 を開く。

JDKの設定

さっきいれたJDKを指定する。
名前は適当。
JAVA_HOMEは自分の環境のやつをwhich javaから辿れ。
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64
とかかな。

mavenの設定

名前は適当。
MAVEN_HOMEは/usr/local/mvn

ジョブを作成する

メニューから、新規ジョブを作成。
名前は適当に、Mavenプロジェクトのビルドを指定。

リポジトリの指定

svnを指定しよう。
今回実はsvnと同じサーバーにたててるのでリポジトリURLは
http://localhost/svn/repos/maven-sample02/trunk
本当はJenkinsのユーザーつくってsshがいいんだろうね。

ビルド

ルートPOM ->pom.xml
ゴール -> package
を指定。

ビルドしてみる

作ったジョブのページから、ビルド実行。
青くなれば成功。赤くなったらなんか間違ってるのでログとかみて頑張れ。

ビルド履歴をみてみる

成功したビルド履歴をクリックすると詳細にとぶ。
さらにモジュールビルドをクリックして表示したページにwarとかでてる。

おわり。

とりあえず動きました。
実際のデプロイだったりきり戻しだったりテストだったりそういうのをこれからやってきましょうかね。