01. Jenkins 概要#
-
公式サイト:jenkins.io
-
Jenkins はオープンソースのプロジェクトで、Java ベースの継続的インテグレーション(CI)ツールである。繰り返しの作業を監視し、オープンで使いやすいソフトウェアプラットフォームを提供し、ソフトウェアの CI を可能にする。
02. Jenkins のデプロイ#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
I. 環境準備
1、OS:CentOS 7.9
2、メモリ:実験用 2G、本番用 6G 以上
3、ファイアウォールを無効化し、SELinux を無効にする
4、JDK17
II. JDK をインストール
RPM パッケージをアップロード
[root@jenkins ~]#ll
total 178212
-rw-r--r-- 1 root root 182486159 Oct 1 19:04 jdk-17_linux-x64_bin.rpm
[root@jenkins ~]#rpm -ivh jdk-17_linux-x64_bin.rpm
warning: jdk-17_linux-x64_bin.rpm: Header V3 RSA/SHA256 Signature, key ID ad986da3: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jdk-17-2000:17.0.11-7 ################################# [100%]
インストールが成功したか確認:
[root@jenkins ~]# rpm -qa|grep jdk
jdk-17-17.0.11-7.x86_64
II. Jenkins をインストール
Jenkins パッケージをアップロード
[root@jenkins ~]#ll
total 269432
-rw-r--r-- 1 root root 182486159 Oct 1 19:04 jdk-17_linux-x64_bin.rpm
-rw-r--r-- 1 root root 93405530 Oct 1 19:06 jenkins-2.405-1.1.noarch.rpm
[root@jenkins ~]#rpm -ivh jenkins-2.405-1.1.noarch.rpm
warning: jenkins-2.405-1.1.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID ef5975ca: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:jenkins-2.405-1.1 ################################# [100%]
III. Jenkins の実行ユーザーを root に変更
1) 設定ファイルの実行ユーザーを変更
[root@jenkins ~]# vim /etc/sysconfig/jenkins
...
JENKINS_USER="root"
...
2) 起動設定のユーザーを変更
[root@jenkins ~]# vim /usr/lib/systemd/system/jenkins.service
...
User=root
Group=root
...
[root@jenkins ~]# systemctl daemon-reload
3) フォント設定をインストール
[root@jenkins ~]# yum -y install fontconfig
IV. Jenkins を起動し、起動時に有効化
[root@jenkins ~]# systemctl start jenkins
[root@jenkins ~]# systemctl enable jenkins
|
03. Jenkins へログイン#



04. パスワードを変更#
パスワード変更後は再ログイン(ユーザー名は admin)


05. プラグインのインストール#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1. プラグインを Jenkins のホームディレクトリにアップロード
[root@jenkins ~]# cd /var/lib/jenkins/
[root@jenkins ~]#ll
total 576228
-rw-r--r-- 1 root root 182486159 Oct 1 19:04 jdk-17_linux-x64_bin.rpm
-rw-r--r-- 1 root root 93405530 Oct 1 19:06 jenkins-2.405-1.1.noarch.rpm
-rw-r--r-- 1 root root 314156543 Oct 1 19:30 jenkins_plu.tar.gz
2. プラグインを plugins ディレクトリに展開
[root@jenkins jenkins]#tar xf /root/jenkins_plu.tar.gz -C plugins/
3. Jenkins を再起動して反映
[root@jenkins ~]# systemctl restart jenkins
|
06. プロジェクトを作成#
フリープロジェクトを作成し、pwd を実行して Jenkins が使用する既定の作業ディレクトリを確認






補足:Jenkins がプロジェクトを作成すると、ホーム /var/lib/jenkins/ 配下に workspace ディレクトリを自動作成し、その中にプロジェクト名のディレクトリを作成する。
以降、Jenkins が GitLab からプルしたコードはこのプロジェクトディレクトリ配下に格納される。
1
2
|
[root@jenkins ~]#ls /var/lib/jenkins/workspace/
test_job
|
GitLab と Jenkins を連携させる
連携前は接続できない旨が表示される:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 鍵認証(非対話)を設定
[root@jenkins ~]#ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Rr4ouinx/cPqVxJsxju2Cjd1mhWmWSuKGOKG532uTvk root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| o = |
| *B o |
|o o=oS |
|=o . +=O.. |
|o=+.Bo+=. |
|oo.B.+* |
| .=+BOE. |
+----[SHA256]-----+
[root@jenkins ~]#cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+kaj/NEwHKaIErMEClVYuG3JuWr9CD7XpuO5YZ6JftMmNdAPMrvS0mWqP4SDyT6/le0j1RGkA48GsirESfMqXKvzSSd5AuhIPmUADtGPNK6VSeiMKyoWgiNBFLn6RIOAcXI0MuZrYQMLJz+kOYr6kF9em/6MfFQrLkt9DzIlnR9b7CMLyDnPOZ8FG640DqqX0sZ8G+i2v41VX/c7RGIWAgEhJY+kiMS5cDxWlTf2k8hoZmh0VIa/G9AwnvbklyUiE4ACd9GtEJG5xXJzedn7q0/Ygfr26T29t+KST3SlyrXIaEbEC5WwIMymCEJDCPPCGzqLjsWa+4dbJhoEM1afV root@jenkins
# Jenkins に git をインストール
[root@jenkins ~]#yum install -y git
|
GitLab に Jenkins が生成した鍵を追加:

Jenkins 上で一度 git clone し、初回の yes 入力を完了させる
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@jenkins ~]#git clone git@11.0.1.200:dawn/blog.git
Cloning into 'blog'...
The authenticity of host '11.0.1.200 (11.0.1.200)' can't be established.
ECDSA key fingerprint is SHA256:Ldn1vBzBEFxynXs0qBNr0XzJ2lTx/0caMuK5yJtb+Zo.
ECDSA key fingerprint is MD5:3d:1d:28:3f:33:ec:ee:c1:69:83:af:14:a3:7f:79:ac.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '11.0.1.200' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 20, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 20 (delta 0), reused 0 (delta 0), pack-reused 11
Receiving objects: 100% (20/20), done.
Resolving deltas: 100% (2/2), done.
|
これで接続できるようになる

再度ビルドしてプルをテスト

プル成功


Webhook を設定
Webhook を設定し、GitLab のコードを Jenkins が自動的にプルしてビルドするよう構成





両方保存してテスト

プロジェクトを修正して再度プッシュしてテスト
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
[root@gitlab blog]#git branch
* master
[root@gitlab blog]#touch c.txt
[root@gitlab blog]#git add .
[root@gitlab blog]#git commit -m "test_v2"
[master 7b1f29e] test_v2
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 c.txt
[root@gitlab blog]#git pull origin master
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 17 (delta 0), reused 0 (delta 0), pack-reused 8
Unpacking objects: 100% (17/17), done.
From 11.0.1.200:dawn/blog
* branch master -> FETCH_HEAD
Merge made by the 'recursive' strategy.
a.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[root@gitlab blog]#git push -u origin master
Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 469 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To git@11.0.1.200:dawn/blog.git
47f606c..91e80a5 master -> master
Branch master set up to track remote branch master from origin.
|
自動ビルド成功
