Jenkins 安装

目录

[1、部署 Jenkins](#1、部署 Jenkins)

[安装配置 Jenkins](#安装配置 Jenkins)

[解锁 Jenkins](#解锁 Jenkins)

[安装 Jenkins 插件](#安装 Jenkins 插件)

创建管理员账号

手动安装插件

[2、Jenkins 从 GitLat 拉取代码](#2、Jenkins 从 GitLat 拉取代码)

[安装 Jenkins 插件](#安装 Jenkins 插件)

[在 node-16 上生成密钥对](#在 node-16 上生成密钥对)

[把公钥配置到 gitlab 上](#把公钥配置到 gitlab 上)

[把 root 用户私钥配置到 jenkins 上](#把 root 用户私钥配置到 jenkins 上)

[Jenkins 创建一个任务](#Jenkins 创建一个任务)

[Jenkins 测试拉取代码](#Jenkins 测试拉取代码)

[3、将代码发布到 Web 服务器上](#3、将代码发布到 Web 服务器上)

部署服务,配置免密、提权

创建自动上传web的脚本

[把脚本添加到 Jenkins 中](#把脚本添加到 Jenkins 中)

测试构建

4、实战:更新Gitlab代码触发Jenkins自动构建

配置身份验证令牌

[Jenkins 上配置触发器](#Jenkins 上配置触发器)

[在gitlab项目 配置 webhook](#在gitlab项目 配置 webhook)

综合测试:同步远程web项目

[5、使用 Build Pipeline 插件显示流程图](#5、使用 Build Pipeline 插件显示流程图)

[安装 Build Pipeline 插件](#安装 Build Pipeline 插件)

给项目添加视图

查看视图


1、部署 Jenkins
安装配置 Jenkins

阿里:jenkins-redhat-stable安装包下载_开源镜像站-阿里云

清华软件站:Index of /jenkins/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

复制代码
# 安装依赖包
yum install -y fontconfig java-11-openjdk

# 安装 jekins 
yum install -y jenkins-2.387.3-1.1.noarch.rpm

# 修改配置文件
vim /etc/sysconfig/jenkins 
JENKINS_USER="root" #修改默认运行账号

# 启动 jenkins 
systemctl start jenkins 
systemctl enable jenkins 
systemctl status jenkins

# 查看端口:Jenkins 默认使用 8080 端口
netstat -antup | grep 8080
复制代码
# 更改 jenkins 插件下载地址
# 更改 jenkins 插件下载地址为清华源,加快下载速度
sed -i 's/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json && \
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json 


systemctl restart jenkins
解锁 Jenkins

访问Jenkins:192.168.137.116:8080

复制代码
4f9fbaced802496ca0bc57d53bda347a
安装 Jenkins 插件

选择默认即可,会安装通用的社区插件,剩下的可以在使用的时候再进行安装。

**注意:**如果在这里安装插件需要连网才能下载插件。

创建管理员账号

这里创建一个账号,如果点击的是使用 admin 账号继续,那么 admin 的密码就是刚才的激活密码。

手动安装插件

国内源https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

修改默认插件地址为国内源

复制代码
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
2、Jenkins 从 GitLat 拉取代码
安装 Jenkins 插件

需要安装以下插件:

|--------------------------------|---------------------------|
| Credentials Plugin | 签名证书管理插件(默认已经安装) |
| Gitlab Plugin | 安装后从 gitlab 获取代码 |
| Git Plugin 和 Git Client Plugin | 用于 jenkins 在 gitlab 中拉取源码 |
| GitLab Hook | gitlab 触发 jenkins 构建项目 |
| Gitlab Authentication | gitlab 和 jenkins 认证相关的插件 |
| SSH Plugin | 进程执行 shell 脚本 |
| Publish Over SSH | 用于通过 ssh 部署应用 |

① 安装 GitLab 插件

② 安装 Git 插件

Git 插件默认也已经安装,不用管

③ 安装 SSH 插件

在 node-16 上生成密钥对
把公钥配置到 gitlab 上
复制代码
cat .ssh/id_rsa.pub

测试发现不需要密码就可以直接 clone 项目,免密 clone OK!

把 root 用户私钥配置到 jenkins 上

root 公钥在 gitlab,root 私钥在 jenkins,这样 jenkins 就可以直接拉取 gitlab 上的代码。

全局凭证(不受限制)

Jenkins 创建一个任务

分支 要么是 /master*,要么是** */main

注意 **:**如果设置git仓库出现如上错误,请拷贝主机的 known 文件到 jenkins 用户家目录下

复制代码
cp .ssh/known_hosts /var/lib/jenkins/.ssh/known_hosts
Jenkins 测试拉取代码
3、将代码发布到 Web 服务器上

可以通过执行命令或脚本的方式进行代码发布,我使用 root 用户在各个 web 服务器上发布代码。大家也可以建立一些普通用户如果 www 或 apache 来发布。 如果使用普通用户发布代码,要保持所有服务器上的用户 id 一致,这样没有权限 的问题。 我们这里直接使用 root 用户来发布。

部署服务,配置免密、提权

部署 apache 服务

复制代码
# 在node-17、16上安装apache
yum install -y httpd 
systemctl start httpd

配置 免密登录

需要 jenkins 自动发布代码的服务器都需要配置免密认证

复制代码
ssh-copy-id root@192.168.137.117
ssh-copy-id root@192.168.137.116

配置 jenkins 用户 sudu 权限

复制代码
[root@node-17 ~] visudo
jenkins ALL=(ALL) NOPASSWD: /usr/bin/ssh
创建自动上传web的脚本
复制代码
# 创建自动上传 web 代码的脚本
vim deploy.sh 
#------------------------------------------------
#!/bin/bash 
echo $USER 
cd /var/lib/jenkins/workspace/web-test 
scp -r ./* root@192.168.1.12:/var/www/html/ 
scp -r ./* root@192.168.1.13:/var/www/html/ 
#------------------------------------------------

chmod +x deploy.sh
把脚本添加到 Jenkins 中

在 jenkins "增加构建步骤"写入上传代码脚本,方便 jenkins 使用脚本自动部署。

测试构建
4、实战:更新Gitlab代码触发Jenkins自动构建

实战场景:在公司的测试环境当中,当开发人员向 gitlab 仓库提交代码后,gitlab 自动通知 jenkins 进行构建项目、代码质量测试然后部署至测试环境,这里先暂时部署到测试环境。对于生产环境,后期使用手动部署代码。

配置身份验证令牌

需要安装的插件: Gitlab Hook Plugin(之前已经安装过)、Build Authorization Token Root 和 Build Token Trigger

复制代码
# 生成身份令牌:在 jenkins 服务器上生成 Token,openssl rand 生成随机密码
[root@node-17 ~] openssl rand -hex 12 # 779a3654b0dbb0e71cf65659
  • -hex:输出结果为 16 进制数据; 数字 12 是指定生成的随机字符为 12 字节, 即 24 个 16 进制个数。
Jenkins 上配置触发器
在gitlab项目 配置 webhook

URL格式:http://jenkins 地址/buildByToken/build?job=jenkins 项目名&token=token 值

复制代码
http://192.168.137.117:8080/buildByToken/build?job=test&token=779a3654b0dbb0e71cf65659

**解决:**这是因为 gitlab 10.6 版本以后为了安全,不允许向本地网络发送 webhook 请求, 如果想向本地网络发送 webhook 请求,则需要使用管理员帐号登录,去修改配置。

综合测试:同步远程web项目

使用我们的 windows 客户端和 linux 客户端都可以,我这里使用 windows 客户端

5、使用 Build Pipeline 插件显示流程图
安装 Build Pipeline 插件
给项目添加视图
查看视图
相关推荐
jerryinwuhan4 小时前
《系统部署与运维》开篇 课程介绍
运维
我是谁??7 小时前
Ubuntu22.04更换清华源
linux·运维·服务器
Shell运维手记7 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
朴马丁8 小时前
国际与国产PLM在精细化工赛道的布局:2026年主要厂商技术特色
大数据·运维·人工智能·流程行业plm·化工新材料
Elastic 中国社区官方博客9 小时前
Elasticsearch:使用 AI Agent 来创建 workflow
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·全文检索
测试运维日常笔记9 小时前
Linux系统安装配置TigerVNC服务器完整指南
linux·运维·服务器
喜欢的名字被抢了10 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
雾时之林10 小时前
Linux----cron定时服务
linux·运维·服务器
壹玖玖肆10 小时前
医院后勤智能运维系统实用性评测
运维
wengqidaifeng11 小时前
1.从“会敲命令”到理解 Linux:15 个基础指令、文件树与命令执行的本质
linux·运维·服务器·ubuntu