LoginSignup
0
4

More than 5 years have passed since last update.

GitにコミットされたらJenkinsのJobが動くようにしてみる

Posted at

前回の続きです。
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作成"をクリック
キャプチャ.PNG
・名前設定
適当な名前を入力し、"フリースタイル・プロジェクトのビルド"を選択し次へ
キャプチャ1.PNG
・管理先リポジトリ
キャプチャ2.PNG
※認証情報などは前記事参照ください。
・ビルド・トリガ
"SC<をポーリング"を選択
キャプチャ3.PNG
・ビルド内容
"シェルの実行"を選択し、
ssh root@192.168.11.96 "cd /var/www/html/git-test; git pull origin master"
と入力
キャプチャ4.PNG

結果

・動作確認
コンソール出力を確認すると、"FAIRULE"と出ていた。。。
キャプチャ5.PNG
・原因調査
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ユーザーであることが発覚。。。
キャプチャ6.PNG
そのため、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ログインできるようになっている。

リトライ

・即時実行
"ビルド実行"をクリック
キャプチャ7.PNG

結果(2回目)

キャプチャ8.PNG
SECCESS!!

本番実行

Jobが稼働することを確認したので、実際にコミットしてみてpullされるかを確認する
・事前確認
キャプチャ9.PNG
・コミット

[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

・結果確認
キャプチャ10.PNG
しっかりとpullされた!

さいごに

今回、GitとJenkins共に初めて触りまして、どちらも理解できていないことを痛感しましたので、指摘あれば是非頂ければと思います。

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4