购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 Jenkins系统安装

Jenkins是基于Java语言开发的持续集成系统,可以运行在任何安装了Java运行环境的计算机上。本节,笔者将为读者逐步演示Jenkins服务端(Server)和代理端(Agent)的安装部署。

1.2.1 准备工作

Jenkins采用分布式架构,由服务端节点和代理端节点组成。服务端主要负责流水线作业的调度,代理端实际运行流水线作业。Jenkins架构图如图1-6所示。

图1-6 Jenkins架构图

提示:

为了保障Jenkins平台的稳定性,笔者建议不要在生产环境的Jenkins服务端节点上运行流水线作业——当运行大量任务时,可能会使Jenkins节点崩溃,这会影响节点的性能。

1.操作系统

Jenkins是跨平台(Windows/Linux/macOS)的,部署方式可以选择通过本机系统包、Docker、Kubernetes等。笔者实验环境是Linux CentOS 8操作系统。以下是系统和内核版本的信息。

[root@jenkins-service ~]#cat /etc/redhat-release
CentOS Stream release 8
[root@jenkins-service ~]#uname -r
4.18.0-373.el8.x86_64
2.安装JDK

Jenkins是使用Java语言开发的,运行时需要依赖JDK环境。自Jenkins LTS(长期支持版本)2.346.x之后,安装部署时最低版本要求是JDK11(参考更新说明见https://www.jenkins.io/doc/upgrade-guide/2.346/)。

JDK11的安装过程可以参考以下代码。

#下载JDK11压缩包
[root@jenkins-service ~]#wget https://github.com/adoptium/temurin10-
binaries/releases/download/jdk-11.0.16.1%2B1/OpenJDK11U-jdk_x64_linux_
hotspot_11.0.16.1_1.tar.gz

#解压
[root@jenkins-service ~]#tar zxf OpenJDK11U-jdk_x64_linux_hotspot_
11.0.16.1_1.tar.gz -C /usr/local
[root@jenkins-service ~]# cd /usr/local/jdk-11.0.16.1+1/
[root@jenkins-service jdk-11.0.16.1+1]# ls
bin  conf  include  jmods  legal  lib  man  NOTICE  release

#设置环境变量
[root@jenkins-service ~]#vim /etc/profile
export JAVA_HOME=/usr/local/jdk-11.0.16.1+1
export PATH=$JAVA_HOME/bin:$PATH
[root@jenkins-service ~]#source /etc/profile

#配置软链接
[root@jenkins-service jdk-11.0.16.1+1]# ln -sf /usr/local/jdk-11.0.16.1+1/
bin/java /usr/bin/

#验证版本信息
[root@jenkins-service jdk-11.0.16.1+1]# /usr/bin/java  -version
openjdk version "11.0.16.1" 2021-07-12
OpenJDK Runtime Environment Temurin-11.0.16.1+1 (build 11.0.16.1+1)
OpenJDK 63-Bit Server VM Temurin-11.0.16.1+1 (build 11.0.16.1+1, mixed mode)

1.2.2 安装Jenkins

在CentOS中需要下载系统rpm包来安装Jenkins服务端。笔者本次安装采用的是2.346.2-1.1版本,建议使用国内源下载对应的rpm包,如清华源(https://mirrors.tuna.tsinghua.edu.cn/jenkins/)。具体的安装步骤及参考代码如下。

1.下载系统包

下载系统包的命令如下。

[root@jenkins-service~]#wget https://mirrors.tuna.tsinghua.edu.cn/
jenkins/redhat-stable/jenkins-2.346.3-1.1.noarch.rpm
2.安装系统包

安装系统包的命令如下(见图1-7)。

[root@jenkins-service ~]#rpm -ivh jenkins-2.346.3-1.1.noarch.rpm

图1-7 安装Jenkins服务

3.启动服务

下面启动Jenkins服务并检查服务的状态,如图1-8所示。

图1-8 启动Jenkins服务

4.设置服务开机自启

设置Jenkins服务开机自启,如图1-9所示。

图1-9 设置Jenkins服务开机自启

当我们完成上面的操作后,可以通过ps aux命令查看服务进程。如下面代码所示,通过进程的启动参数可以得知Jenkins默认的HTTP监听端口是8080。

#查看服务进程
[root@jenkins-service ~]#ps aux | grep java | grep jenkins
jenkins     3779 29.5  9.1 14278716 2984916 ?    Ssl  21:12   0:25 /usr/bin/
java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=
/var/cache/jenkins/war --httpPort=8080

1.2.3 初始化

Jenkins服务端安装好之后还有一个初始化的过程,通过浏览器访问http://<service_ip>: 8080即可进入初始化页面。

初始化的步骤如下。

1.解锁系统

为了安全地安装Jenkins,会将解锁需要的密码存储到Jenkins启动日志或者/var/lib/ jenkins/secrets/initialAdminPassword文件中。读者可任选其中一种方式,将密码粘贴到输入框,单击“继续”按钮,如图1-10所示。

图1-10 Jenkins解锁

2.安装插件

Jenkins的功能扩展都来自于插件。Jenkins插件资源丰富,为了集成一些工具,我们不得不安装很多插件,但是在生产环境中,笔者不建议大家安装太多无用的插件,因为插件增多会影响Jenkins的启动速度,插件安装方式如图1-11所示。

图1-11 Jenkins插件安装方式

此处选择“选择插件来安装”进入插件的选择页面,如图1-12所示。可以看到Jenkins默认选择了一些插件,这里我们单击“无”取消默认选择的插件,然后根据需求安装本地化语言插件。

图1-12 选择Jenkins插件

单击“安装”按钮即可进入插件安装进度页面,在该页面可以看到已选择插件的安装进度和日志信息。

提示:

这个步骤很容易出现插件安装停顿的问题,多数情况是因为网络问题导致的,因此要保持网络畅通。

3.创建用户

插件安装完成后,会自动跳转到管理员用户创建页面,填写用户名、密码等信息,单击“保存并完成”按钮,如图1-13所示。

图1-13 创建管理员用户

4.配置实例

当前笔者的环境机器IP是192.168.1.200,端口号使用的是Jenkins默认设置的8080。如果读者的端口或者IP地址发生了变化,记得更新这里的设置,如图1-14所示。

5.完成初始化

如果进入如图1-15所示的页面,意味着安装和初始化Jenkins服务端完成。

图1-14 Jenkins实例配置

图1-15 Jenkins安装完成

第一次安装部署完成后,如果Jenkins管理页面显示的是英文,重启后会显示中文,如图1-16所示。

图1-16 Jenkins首页

1.2.4 安装Agent节点

Jenkins的代理端主要用于运行Jenkins服务端所调度的流水线作业。它的部署方式与服务端一样是跨平台的。为了减少实验环境的资源,笔者将Jenkins服务端和代理端部署在同一台机器中。注意:实际生产环境要采用高性能的服务器进行独立部署。

1.配置节点

单击左侧“系统管理”进入“管理Jenkins”页面,在页面中可以看到“节点管理”选项,如图1-17所示。

图1-17 Jenkins节点管理

进入节点管理页面,可以看到已经在线的服务端master节点。单击左侧菜单中的“新建节点”,如图1-18所示。

图1-18 Jenkins新建节点

进入新建节点页面后,填写要创建的节点名称和Type(节点类型)。因为笔者将Jenkins Agent节点部署到了一台固定的机器上,所以Type选择固定节点,如图1-19所示。

图1-19 填写Jenkins节点信息

单击Create按钮创建节点并进入节点的详细配置页,如图1-20所示。

各个配置项的说明如下。

名字:填写节点的名称。

描述:填写节点的描述信息。

Number of executors:执行器的数量,默认每一个Jenkins作业会分配一个执行器。

远程工作目录:Agent节点的工作目录。

标签:可以对节点进行分组,便于流水线调度。

用法:哪些作业可以使用这些节点,选择“只允许运行绑定到这台机器的Job”或者“经常使用该节点”即可运行任意作业。

图1-20 Jenkins节点详细配置

在Jenkins的生产环境中,常用的启动方式为SSH和JNLP。JNLP对应中文为“通过Java Web启动代理”。这里笔者选择“通过Java Web启动代理”,如图1-21所示。

图1-21 Jenkins节点启动方式

提示:

如果遇到“Either WebSocket mode is selected, or the TCP port for inbound agents must be enabled”错误提示,是因为在Jenkins新版本中,默认禁用了TCP端口。我们需要导航到“系统管理>管理Jenkins >安全>全局安全”配置开启TCP端口,如图1-22所示。

图1-22 Jenkins Server与Agent通信端口配置

这里笔者默认配置的是50000端口,此端口作为后续Agent节点启动时与Server节点通信使用。

填写好上面的配置并保存。系统会自动进入节点页面,可以看到刚刚增加的节点配置成功(此时节点添加成功但是还不能运行作业,需要启动代理程序),如图1-23所示。

图1-23 Jenkins节点管理

2.启动节点

以“Java Web”方式设置的代理节点,需要下载启动程序。参考图1-23单击节点进入节点信息页面,获取agent.jar的下载链接。启动节点的步骤如下。

1)创建Agent目录

创建一个目录用于存储Jenkins Agent的安装程序,命令如下。

#创建Agent目录
[root@ jenkins-service ~]#mkdir jenkinsagent
[root@ jenkins-service ~]#cd jenkinsagent/

2)下载Agent启动程序

Agent启动程序是一个Java语言开发的jar包。下载的命令如下。

#下载代理程序
[root@ jenkins-service jenkinsagent]#wget http://192.168.1.200:8080/
jnlpJars/agent.jar
--2021-9-10 22:27:30--  http://192.168.1.200:8080/jnlpJars/agent.jar

3)启动Agent程序

使用Java命令启动Agent程序,如图1-24所示。

图1-24 启动Jenkins Agent程序

提示:

根据笔者的经验,此步骤出现问题的概率很高。大部分情况都是网络问题导致的,例如检查Agent节点与Jenkins Server节点的50000端口和8080端口的连通性是否正常。

当出现“Connected”关键字时查看节点管理页面,可以看到该Agent已经连接成功。刷新节点页面,如图1-25所示。

图1-25 Jenkins节点状态

提示:

当前节点启动成功,但是Jenkins Agent程序并未后台运行。也就是说,终端关闭后程序就停止了,需要进一步优化。笔者习惯将启动命令写到脚本中,用nohup的方式启动程序可以参考以下代码。

#!/bin/bash

nohup java -jar agent.jar -jnlpUrl http://192.168.1.200:8080/computer/
build01/jenkins-agent.jnlp -secret @secret-file -workDir "/opt/
jenkinsagent" &

至此,我们完成了Jenkins Agent节点的安装,我们的基础环境准备好了。 ZIlEuNUYB0U7GwGCSL9MYYimeH6F0iPMNtUmcHxWWxP2qHUNs6lqkjU7JNP064vH

点击中间区域
呼出菜单
上一章
目录
下一章
×