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 插件
给项目添加视图
查看视图
相关推荐
灼烧的疯狂1 分钟前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
java1234_小锋5 分钟前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
我的运维人生6 分钟前
Elasticsearch实战应用:构建高效搜索与分析平台
大数据·elasticsearch·jenkins·运维开发·技术共享
运维老司机7 分钟前
Jenkins修改LOGO
运维·自动化·jenkins
D-海漠23 分钟前
基础自动化系统的特点
运维·自动化
我言秋日胜春朝★31 分钟前
【Linux】进程地址空间
linux·运维·服务器
C-cat.1 小时前
Linux|环境变量
linux·运维·服务器
yunfanleo1 小时前
docker run m3e 配置网络,自动重启,GPU等 配置渠道要点
linux·运维·docker
烦躁的大鼻嘎2 小时前
【Linux】深入理解GCC/G++编译流程及库文件管理
linux·运维·服务器
乐大师2 小时前
Deepin登录后提示“解锁登陆密钥环里的密码不匹配”
运维·服务器