前回の続きです。
※GitとJenkinsをローカルサーバー(CentOS7)上に構築して連携してみる
GitとJenkinsの連携はできましたので、GitにコミットされたらJobが動作するようにしてみました。
期待する動作
①Gitにコミット
②JenkinsのJobが稼働
③コミットされたGitからpullして最新のモジュールを取得
#環境
・Jenkinsサーバー(192.168.11.95)
CentOS 7.6.1810
Jenkins 2.150.2
・Gitサーバー(192.168.11.96)
CentOS 7.6.1810
git 1.8.3.1
#Gitのpull先を作成
連携されているかが簡単に確認できるように、pull先をApacheのDocumentRoot配下にした。
・Apacheインストール
yum install -y httpd
systemctl start httpd
systemctl enable httpd
・コミットされたGitリポジトリからpullする先のリポジトリ作成
cd /var/www/html
mkdir git-test
cd git-test
git init
git remote add origin /root/local
git pull origin master
これで、/var/www/html/git-test配下に、/root/local配下と同様のファイルが配置される。
そして、
http://192.168.11.96/git-test
にて、配置されているファイルの一覧が確認できる。
#JenkinsでのJob作成
・設定画面へ進む
"新規Job作成"をクリック
・名前設定
適当な名前を入力し、"フリースタイル・プロジェクトのビルド"を選択し次へ
・管理先リポジトリ
※認証情報などは前記事参照ください。
・ビルド・トリガ
"SC<をポーリング"を選択
・ビルド内容
"シェルの実行"を選択し、
ssh root@192.168.11.96 "cd /var/www/html/git-test; git pull origin master"
と入力
#結果
・動作確認
コンソール出力を確認すると、"FAIRULE"と出ていた。。。
・原因調査
jenkinsサーバーにて念のためssh疎通を確認すると正常終了した。
[root@jenkins ~]# ssh root@192.168.11.96 "cd /var/www/html/git-test; git pull origin master"
From /root/local
* branch master -> FETCH_HEAD
Already up-to-date.
JenkinsのJobにて"シェルの実行"で実行ユーザーを確認してみると、jenkinsユーザーであることが発覚。。。
そのため、jenkinsユーザーからsshしてrootログインできるように変更。
#対処
楽にできそうな対応しました。
・jenkinsユーザーの設定変更
初期設定ではjenkinsユーザーにスイッチできないようになっているため、スイッチできるように変更
vi /etc/passwd
jenkins:x:996:994:Jenkins Automation Server:/var/lib/jenkins:/bin/false
↓
jenkins:x:996:994:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
※最後を"bash"にしただけ
・鍵の作成と配置
[root@jenkins etc]# su - jenkins
Last login: Wed Feb 6 21:27:30 JST 2019 on pts/0
-bash-4.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
※全部空欄でEnter
-bash-4.2$ ssh-copy-id root@192.168.11.96
これでjenkinsユーザーでrootログインできるようになっている。
#本番実行
Jobが稼働することを確認したので、実際にコミットしてみてpullされるかを確認する
・事前確認
・コミット
[root@git local]# pwd
/root/local
[root@git local]# touch test3.txt
[root@git local]# git add .
[root@git local]# git commit -m "Job test"
[master 216860f] Job test
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test3.txt
#さいごに
今回、GitとJenkins共に初めて触りまして、どちらも理解できていないことを痛感しましたので、指摘あれば是非頂ければと思います。