読者です 読者をやめる 読者になる 読者になる

HudsonからJenkinsにアップデートしてみたら見事に嵌まった件

Jenkins CI

オラクル嫌いの上司からJenkinsに変えろと脅迫されたのでぽちっと(ぽちっとじゃないな)Jenkinsに変えてみました。や、まぁ楽だったんだけどね。本体は。

マスターがRedHat, スレーブがCentOSのマシンにインストールしました。

If you've previously imported the key from Hudson, the "rpm --import" will fail because you already have a key. Please ignore that and move on.

とのことなので、そうするしかなかったんだよ。

Jenkinsのインストール

yumが使えなくなっている(これだからRHELはいやなんだ)のでさっくりrpmをダウンロードしてインストール。あと俺はいつもこういうときめんどくさいのでroot権限で作業しております。

# ちゃんと止めてからやりましょう
$ /etc/init.d/hudson stop
# rpmパッケージのインストール
$ rpm -ivh [パッケージ名]

でOK。/var/lib/jenkinsができているかどうかを確認する
hudsonはそのまま残ってたけど、設定などは全部コピーされた模様。簡単だしすごく楽。ありがたいねー。ユーザーも全部作成してくれてるし。

フォルダの権限を確認

たぶんよほどのことがない限り大丈夫だと思うけれど一応。

$ ls -la /var/lib/jenkins

でフォルダの権限がjenkinsになっていることを確認。なっていない場合は

$ chown -R jenkins:jenkins /var/lib/jenkins

で変更しておくこと。

起動

$ /etc/init.d/jenkins start

たまに忘れるんだよねーあるよねー(俺だけだよ

マスターはここまで。
次はスレーブの設定。

スレーブを設定している場合

サニティチェックを別のサーバーでやらせている(時間がかかるので)ので、こちらにも設定が必要だった。自動ではやってくれないそうです。まぁそうか。
スレーブの起動とコマンドの実行はマスターがトリガをかける設定。設定自体はいいんだけどね…SSHの設定し直したのにPermission deniedになっちゃって起動しないので困った。
答えはjenkinsアカウントがスレーブに存在していなかったためだった。そりゃ拒否されるわ。

アカウントを作成する

まずjenkinsというアカウントがないので作る。設定は元々のHudsonのにあわせるために使うシェルはbashで、ホームディレクトリは/var/lib/hudsonで。パスワードはユーザー名と同じ。

$ useradd -d /var/lib/hudson -s /bin/bash jenkins
$ usermod -p jenkins jenkins

一応確認のため

$ id -a jenkins
$ grep jenkins /etc/passwd

でuidが100番台、パスワードがjenkinsに設定されていればおそらくOK。

おもむろにディレクトリの権限を変更する

$ chown -R jenkins:jenkins /var/lib/hudson

ディレクトリ名はめんどいので変えてません。

SSHの設定(パスワードを入力しなくてもログインできるようにする)

公開鍵RSAの設定に関してはいろんなところに描いてあるけど、まぁ一応書いておくか。
http://www.geocities.jp/turtle_wide/tools/sshpass.html

# jenkinsになる。(パスワードはjenkins)
$ su jenkins
$ ssh-keygen
# このあといろいろ聞かれるけど全部なにも入力しないこと!
# Your public key has been saved in /home/foo/.ssh/id_rsa.pub.
# と表示される場所にRSA認証の公開鍵ができるのでこれをリモートの/var/lib/hudsonにコピーする
$ scp /home/foo/.ssh/id_rsa.pub jenkins@hostname(もしくはIP):/var/lib/hudson/.ssh/

# ここからはスレーブサーバーでの作業
$ ssh jenkins@hostname
$ cd /var/lib/hudson/.ssh
$ touch authorized_key2

# 必ず600に設定すること!
$ chmod 600 authorized_keys2

$ cat id_rsa.pub >> authorized_key2

たまにやると忘れてるんだよなーとか思いつつさくさくと。


なんか執事みたいなマークが出てくるからうける。


追記:

javaが入ってないサーバにインストールする場合

jdkORACLEからインストールする。/usr/bin/javaがないと起動時に怒られるのでシンボリックリンクをはっておけばおK。
とりあえず特に何も考えずにjdkをいれると/usr/local/jdkほにゃらら/bin/以下にjava, javacができるので

ln -s /usr/local/jdkほにゃらら/bin/java /usr/bin/java
ln -s /usr/local/jdkほにゃらら/bin/javac /usr/bin/javac

として

java -version
javac -version

でバージョン情報が表示されれば問題なし。

ファイアーウォールの設定

/etc/sysconfig/iptablesを編集して

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

と追加する。Rejectよりは前に書いとかないといけないらしいけどtcp acceptグループのところに書いとけばまぁ間違いないでしょう