jenkins安装介绍及简单job实现

Jenkins安装介绍及简单job实现


jenkins官网:https://jenkins.io/

一、Jenkins部署与基础配置

1:jenkins版本选择

2:下载安装jenkins

1
2
3
4
5
6
7
8
9
10
11
12
13
安装jenkins是依赖于java环境的,所以也需要安装JDK

~]# cd /usr/local/src/
src]# ls
jdk-8u192-linux-x64.rpm jenkins-2.138.4-1.1.noarch.rpm

src]# rpm -ivh jdk-8u192-linux-x64.rpm jenkins-2.138.4-1.1.noarch.rpm

查看jenkins的文件

~]# rpm -qpl /usr/local/src/jenkins-2.138.4-1.1.noarch.rpm
/etc/init.d/jenkins #启动脚本
/etc/sysconfig/jenkins #主配置文件

3:编辑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
~]# vim /etc/sysconfig/jenkins 
10 JENKINS_HOME="/var/lib/jenkins"
#jenkins启动之后,生成的所有的文件放置文件(下载下来的代码,项目等,整个的工作的目录)

29 JENKINS_USER="root"
#jenkins的用户,以什么身份启动jenkins,默认为jenkins,修改为root

47 JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true \
48 -Dcom.sun.management.jmxremote \
49 -Dcom.sun.management.jmxremote.port=12345 \
50 -Dcom.sun.management.jmxremote.authenticate=false \
51 -Dcom.sun.management.jmxremote.ssl=false \
52 -Djava.rmi.server.hostname="172.20.101.29" \ " #jenkins IP地址
#java选项,如果使用zabbix监控jenkins,则添加以上配置

61 JENKINS_PORT="8080"
#jenkins默认的端口

70 JENKINS_LISTEN_ADDRESS="172.20.101.29"
#jenkins默认的监听地址,默认的为0.0.0.0,核心的虚拟机禁跑单个服务

79 JENKINS_HTTPS_PORT=""
88 JENKINS_HTTPS_KEYSTORE=""
97 JENKINS_HTTPS_KEYSTORE_PASSWORD=""
106 JENKINS_HTTPS_LISTEN_ADDRESS=""
#是否使用了https,默认的情况下是关闭https

116 JENKINS_DEBUG_LEVEL="5"
#日志相关的配置,默认是info级别,级别越高信息越详细,确认配置好jenkins后建议将日志的级别调小,避免生成大量的日志沾满磁盘,0为关闭日志,范围为1~9

124 JENKINS_ENABLE_ACCESS_LOG="no"
#记录jenkins的访问日志,默认为关闭

132 JENKINS_HANDLER_MAX="100"
#最大的工作线程数,默认为100个

140 JENKINS_HANDLER_IDLE="20"
#最大工作口空闲数,默认为20个

149 JENKINS_ARGS=""
#其他的java参数,保持默认就好

已经修改完的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
~]# grep "^[a-Z]" /etc/sysconfig/jenkins 
JENKINS_HOME="/var/lib/jenkins"
JENKINS_JAVA_CMD=""
JENKINS_USER="root"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=12345 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname="172.20.101.29" \
"
JENKINS_PORT="8080"
JENKINS_LISTEN_ADDRESS=""
JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
JENKINS_DEBUG_LEVEL="5"
JENKINS_ENABLE_ACCESS_LOG="no"
JENKINS_HANDLER_MAX="100"
JENKINS_HANDLER_IDLE="20"
JENKINS_ARGS=""

4:启动jenkins

1
2
3
4
5
6
    ~]# systemctl start jenkins
~]# systemctl enable jenkins

如果报错可以查看日志信息

~]# tail -f /var/log/jenkins/jenkins.log

5:查看jenkins的数据目录

1
~]# tail -f /var/lib/jenkins/failed-boot-attempts.txt

6:查看放置jenkins初始密码的文件

1
2
~]# cat /var/lib/jenkins/secrets/initialAdminPassword 
dd37bd56796a42d1a4a4a0976e047900

7:windows访问jenkins的8080端口

8:根据要求将jenkins初始密码复制到页面上

9:密码输入正确后跳转至插件安装的目录

  • jenkins是完全模块化的
  • 每一个模块就是一个插件
  • 每一个插件就是一个功能

安装推荐的插件

二、创建jenkins账号

1:创建一个账号,默认权限为管理员


2:启动jenkins默认界面显示

  • 可以完成支持部署
  • 但是不具备代码检测的功能,需要借助插件完成代码检测的功能

3:创建账号会分给不同的开发和不同的运维来完成代码的发布

  • 配置jenkins 权限管理:
    • 基于角色的权限管理,先创建角色和用户,给角色授权,然后把用户管理到角色。
    • 创建完的用户默认是有所有的权限的

三、jenkins插件管理及安装

1:安装的插件的本地存放的路径

1
2
3
在同版本的jenkins插件可以互相拷贝使用

~]# ll /var/lib/jenkins/plugins/ #安装的插件的保存的路径


修改默认的用户权限配置

  • 设置一个用户可以对其他用户进行授权
  • 普通用户登陆进来只有默认的一些权限

2:安装插件gitlab相关的插件

点击可选插件,安装核心插件

  • 安装gitlab和Blue Ocean插件
    • gitlab插件:拉取代码调用gitlab的插件
    • gitlab Hook :触发功能的钩子,功能是结合gitlab实现,当gitlab代码更新的情况下gitlab会触发此钩子,jenkins会直接进行构建(版本或许不支持所以未安装)
    • Gitlab Authentication:gitlab认证像相关的功能插件
    • Blue Ocean插件:2.0版本后新加的功能,安装插件后会在jenkins新增加一个菜单选项(显示界面美化)

2.1:Blue Ocean插件安装(选的是下载但是当下次重新启动jenkins时插件生效)

2.2:插件的安装也是存在依赖的

2.3:gitlab插件安装(上一个插件下载完返回原页面)

3:安装用户认证相关的插件

3.1:如果勾选的直接安装的化开启允许自动刷新

四、账号认证授权

1:创建一个测试的账号用户测试权限划分

  • 此时用户已经创建完,但是此时用户登陆进来默认的管理员的权限



2:对新创建的用户做权限的限制(启用 Role-Based Strategy 插件)

2.1:启用Role-Based Strategy 插件后会生成一个菜单选项

2.2:点击插件创建角色

2.3:将角色组和用户进行关联

3:切换添加的用户登陆验证是否还具有管理员的权限

五、jenkins配置邮箱通知系统

1:jenkins 邮箱配置-定义系统管理员的邮件地址


passwd密码来自qq邮箱验证

2:接收到测试邮箱

六、测试jenkins拉代码(代码克隆)

1:创建一个job(任务)


执行一个简单测试的构建

查看执行的构建的控制台输出(可以查看执行的过程)


七、代码克隆

代码克隆–shell命令

1:jenkins服务器中生成ssh-key(基于ssh认证克隆,此key仅用于克隆不能用于提交代码)

  • jenkins上生成公钥私钥对
  • gitlab上放置jenkins的公钥

  • 基于ssh认证克隆,此key仅用于克隆不能用于提交代码也成为提交key

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
生成公钥

~]# 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:DqsRWkblI6AEZLkY30mmCtSuOxntygCwX5TGitFDA6s root@centos77
The key's randomart image is:
+---[RSA 2048]----+
|==* . |
|+B =o+ |
|Bo==B.o |
|==oBo. . |
|E.+ = . S |
|o+ * . + |
|. B . . . |
|o+ . o |
| oo . |
+----[SHA256]-----+

查看公钥

~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnqBFpvMFlCpQWxf/Pblyo8SYX4iMRmxRNOXox9WEInZLiyTwNP17T8lHOlM6r7g5oX2pJXJqFmgabkjkoItEULy7S3PFTxj8xYQVUJU7raQeuhxt07bmUPZXPEfeOnVjK+qRgM/q2jpTQQJVjba0+ymgWvhfd5PcDcwa9H4e4fPFO+FILBTmyEqCPh0vuThfVixigmu1gSaCMRsmnjsfuTa4nwcgSkdCcw1f/NAu3TGSPTQDKYapmytLftEC1C/gftXfJAqBq5uuuGXF/xbRiHziFwDSAS67roJlCf6SGSFqoxn76C3YLK/+W4Dl+sh1d1WBp7eAA8Tuo8z4y+h+1 root@centos77

2:将jenkins上的公钥配置在gitlab上

3:测试使用jenkins基于ssh方式克隆

1
2
3
4
5
6
7
8
9
安装git

~]# yum install git -y

代码克隆

data]# git clone git@172.20.141.79:group1/project1.git
data]# ls
project1

3:将此克隆的命令放置在jenkins上的工程中


4:执行此项目并在本地查看此工程

1
2
3
~]# ll /var/lib/jenkins/workspace/demo-project1
total 0
drwxr-xr-x. 3 root root 53 Mar 16 18:18 project1

八、jenkins将代码部署至后端WEB服务器

  • 可以将jenkins从gitlab拉取下来的代码拷贝到后端的web服务器上

1:实现jenkins和后端的web服务器实现免密钥登陆

1
2
3
4
5
6
7
8
9
10
11
12
13
jenkins服务器

~]# ssh-copy-id tomcat@TomcatA_IP
~]# ssh-copy-id tomcat@TomcatB_IP

链接测试

~]# ssh tomcat@TomcatA/B_IP

执行命令测试

~]# ssh tomcat@172.20.101.221 "pwd"
/home/tomcat

2:使用jenkins实现代码拷贝到后端的web服务器

  • 解释

  • 演示

3:查看执行的控制台

4:客户端访问VIP调度后端的tomcat WEB服务器查看wab页面是否已经发生修改

九、完整的代码变更演示

1:jenkins从gitlab上拖取项目并对代码进行修改

2:jenkins将修改完成的代码上传至gitlab服务器

3:jenkins立即构建工程

4:验证tomcat WEB页面是否发生变更


jenkins发布时将tomcat停止,变更页面后在启动tomcat(仅用于演示,如果是生产中要先从负载上摘除)


-------------------码字不易尊重原创转载标注不胜感激-------------------
Yes or no?
0%