# Jenkins 快速入门实践
# 1. 什么是 Jenkins
Jenkins 是一个开源的持续集成工具,提供友好的 UI 界面,由 JAVA 开发而成。
Jenkins 是一个调度平台,本身不处理任何事情,调用插件来完成所有的工作。
# 2. Jenkins 安装部署
安装 Jenkins 只需要简单几步即可完成。PS: Jenkins 的安装方式很多,可参考。
1、调整系统环境
[root@jenkins ~]# setenforce 0 | |
[root@jenkins ~]# systemctl stop firewalld |
2、设置语言,避免后期 Jenkins 汉化不完整(设置后需要重启服务器)
[root@jenkins ~]# yum install glibc-common langpacks-en -y | |
[root@jenkins ~]# localectl set-locale LANG=en_US.UTF-8 | |
[root@jenkins ~]# localectl status |
3、安装 JDK 环境
OracleJdk 下载地址:https://www.oracle.com/java/technologies/downloads/#java11
[root@jenkins ~]# tar xf jdk-17.0.17_linux-x64_bin.tar.gz -C /usr/local/ | |
[root@jenkins ~]# ln -s /usr/local/jdk-17.0.17/ /usr/local/jdk | |
#添加环境变量 | |
[root@jenkins ~]# cat /etc/profile.d/jdk.sh | |
export JAVA_HOME=/usr/local/jdk | |
export PATH=$PATH:$JAVA_HOME/bin | |
export JRE_HOME=$JAVA_HOME/jre | |
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/ | |
[root@jenkins ~]# source /etc/profile | |
[root@jenkins ~]# java -version |
4、安装 Jenkins
[root@jenkins ~]# wget https://mirror.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.528.1-1.1.noarch.rpm | |
[root@jenkins ~]# yum localinstall jenkins-2.528.1-1.1.noarch.rpm -y |
# 2.1 配置 Jenkins
1、老版本配置方式: /etc/sysconfig/jenkins
[root@jenkins ~]# vim /etc/sysconfig/jenkins | |
JENKINS_USER="root" # 运行 Jenkins 的用户身份,避免后期权限不足的情况 | |
JENKINS_PORT="80" # 如果 jenkins 监听在 80 端口,运行身份必须为 root |
2、新版本需要在 systemd 服务单元中设定这些选项: /usr/lib/systemd/system/jenkins.service
[root@jenkins ~]# vim /usr/lib/systemd/system/jenkins.service | |
User=root | |
Group=root | |
Environment="JENKINS_PORT=80" | |
Environment="JENKINS_LOG=/var/log/jenkins.log" | |
Environment="JENKINS_JAVA_CMD=/usr/local/jdk/bin/java" |
3、启动 Jenkins
[root@jenkins ~]# systemctl daemon-reload | |
systemctl start jenkins | |
systemctl enable jenkins |
4、第⼀次通过浏览器访问 Jenkins 时,系统会要求您使⽤⾃动⽣成的密码对其进⾏解锁,默认密码⽂件存储在 /var/lib/jenkins/secrets/initialAdminPassword ,将对应的密码⽂件粘贴进去即可。

5、解锁 Jenkins 之后,可以安装任何数量的插件作为您初始步骤的一部分。
- 如果不确定需要哪些插件,请选择 “安装建议的插件”(这个过程可能需要几分钟或几十分钟的时间)
- 也可以跳过插件安装,后期可以通过 Jenkins 的 Manage Plugins 页面进行插件安装或删除(推荐的方式)。

6、默认提供 admin 管理员登录到 jenkins 中,登录后需要修改对应的管理员密码。点击右上角用户 -->Configure-->Password 完成密码修改,然后再次登录 Jenkins

# 2.2 汉化 Jenkins
1、安装 Localization 插件

2、点击 ManagerJenkins-->System-->Locale--> 设置语言为 zh_CN
# 2.3 Jenkins 插件管理
# 2.3.1 联网安装插件
点击 --> 系统管理 --> 插件管理 --> Available Plugins,然后搜索需要安装的插件,进行安装

# 2.3.2 手动上传插件
系统设置 -> 插件管理 -> 上传插件
通过页面上传一个.hpi 文件的方式来安装插件。或者提供一个 插件的 URL 进行插件安装。
- 方式 1:在 jenkins 插件网站 https://plugins.jenkins.io/ 下载以 .hpi 插件,然后上传插件,进行安装。
- 方式 2:直接复制插件的 URL 地址进行联网安装。

# 2.3.3 离线安装插件
将之前 jenkins 服务器的插件保存下来,然后导入到服务器中,(离线安装),最后重启 Jenkins
[root@jenkins ~]# tar xf jenkins_plugin.tar.gz -C /var/lib/jenkins/plugins/ | |
[root@jenkins ~]# chown -R root.root /var/lib/jenkins/plugins/ | |
[root@jenkins ~]# systemctl restart jenkins |
# 2.3.4 常用的插件
- git: Git、GitLab、Generic Webhook Trigger、Git Parameter
- maven: Maven Integration、
- sonarqube: SonarQube Scanner、
- nexus: Nexus Artifact Uploader、Maven Artifact ChoiceListProvider (Nexus)、Extensible Choice Parameter
- ansible: Ansible、
- pipeline: Pipeline、Pipeline: Stage Step、Pipeline: Stage View、Pipeline Maven Integration、blueOcean
- 钉钉: DingTalk
# 3. Jenkins 与工具集成
# 3.1 Jenkins 集成 Gitlab
jenkins 集成 gitlab,是因为我们要抓取 Gitlab 上的代码,为后续发布网站做好准备,由于 jenkins 只是一个调度平台,所有需要安装与 gitlab 相关的插件才可完成对应的集成。
1. 开发通过 gitlab 创建一个项目,然后进行代码提交;监控平台代码 url
[root@gitlab code]# git clone https://gitee.com/kangjie1209/monitor.git | |
[root@gitlab code]# cd monitor/ | |
[root@gitlab monitor]# git add . | |
[root@gitlab monitor]# git commit -m "first" | |
[root@gitlab monitor]# git remote -v | |
[root@gitlab monitor]# git remote remove origin | |
[root@gitlab monitor]# git remote add origin http://gitlab.hmallleasing.com/ops/monitor.git | |
[root@gitlab monitor]# git push origin master |
2.jenkins 创建一个新的 freestyle 项目,名称为 monitor-deploy
3. 在 jenkins 中填写 gitlab 项目地址(域名需要解析);
[root@jenkins ~]# echo "192.168.1.50 gitlab.hmallleasing.com" >> /etc/hosts |
4.jenkins 需要访问 gitlab 项目,则要与 gitlab 建立信任;首先登陆 Jenkins 生成一对秘钥;
[root@jenkins ~]# ssh-keygen |
5. 将 Jenkins 服务器生成的公钥添加上 gitlab 对应的用户;

6. 然后继续操作 Jenkins,将 root 用户的私钥添加至 Jenkins 服务器上;此时 jenkins 就能正常访问 gitlab 项目。

7. 最后点击构建,然后查看构建的输出信息是否有错误提示。

# 3.2 Jenkins 集成 Shell
1. 找到对应项目,找到构建步骤

2. 添加构建步骤,选择执行 Shell
# 执行以下命令 | |
pwd | |
echo "welcome Jenkins" | |
echo ${WORKSPACE} |

# 3.3 Jenkins 集成 Ansible
# 3.3.1 配置 Ansible
1. 安装 Ansible
[root@jenkins ~]# yum install epel-release -y | |
[root@jenkins ~]# yum install ansible -y |
2. 配置 ssh 免密
[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.51 | |
[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.7 |
3. 配置 inventory
[root@jenkins ~]# vim /etc/ansible/hosts | |
[lbservers] | |
172.16.1.5 | |
[webservers] | |
172.16.1.7 | |
172.16.1.8 |
4. 编写测试的 playbook
[root@jenkins ~]# cat /root/test.yml | |
- hosts: "webservers" | |
tasks: | |
- name: Test Shell Command | |
shell: | |
cmd: df -h | |
register: system_cmd | |
- name: Debug System Command | |
debug: | |
msg: "" |
# 3.3.2 配置 Jenkins 集成 Ansible
1. 选择构建阶段,增加构建步骤,选择 Invoke Ansible Playbook
- 填写 Playbook 所存储的路径;
- 添加 Inventory 主机清单文件的路径;


2. 点击 Jenkins 的构建,然后查看控制台,检查 Jenkins 是否调用 Ansible 执行了。

# 3.3.3 配置 jenkins 传参调用 Ansible
为了增加 Playbook 的灵活性,我们可以避免在文件中直接指定目标主机组(如 'webservers'),而是通过 Jenkins 的参数化功能来动态传递目标主机组。这样可以让我们更灵活地选择要操作的目标组,提高可定制性。
1. 改造 playbook,将要操作的目标主机组,修改为 ansible 的变量;
[root@jenkins ~]# cat /root/test.yml | |
- hosts: "" | |
tasks: | |
- name: Test Shell Command | |
shell: | |
cmd: df -h | |
register: system_cmd | |
- name: Debug System Command | |
debug: | |
msg: "" |
2、在 Playbook 设置中,选择 "高级" 选项,然后找到 "Extra Variables" 使用外部参数传递方式。
1、定义一个变量名(如 "host"),并为其设置一个变量值。
2、使用 "${host}" 作为变量值,这样我们可以在后续步骤中通过 Jenkins 的参数选项为此变量动态赋值。

3. 在参数化构建中添加选择选项参数
名称: host
选项:


4. 测试通过前端页面控制要执行的主机或主机组,管理起来会更加的灵活。

