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 插件
给项目添加视图
查看视图
相关推荐
3DVisionary7 小时前
从手动到智能:XTOM-STATION自动化检测中心在复杂曲面零件全尺寸检测中的应用
运维·自动化·自动驾驶·工业自动化·质量控制·自动化3d测量·复杂零件检测
阿豪学编程7 小时前
环境变量与程序地址空间
linux·运维·windows
佐杰9 小时前
什么是DevOps
运维·devops
CaracalTiger9 小时前
本地部署 Stable Diffusion3.5!cpolar让远程访问很简单!
java·linux·运维·开发语言·python·微信·stable diffusion
梁萌9 小时前
linux中使用docker安装MySQL
linux·运维·docker·容器·mysql安装
文言一心9 小时前
SenseVoice 离线部署指南(Xinference Docker v1.12)
运维·docker·ai·容器
AIchiNiurou9 小时前
mermaid install for free docker
运维·docker·容器
wei_shuo10 小时前
智能运维×低资源占用:金仓数据库助力能源企业降本增效与国产化替换实践
运维·数据库·king base
❀͜͡傀儡师10 小时前
根据docker服务保存日志脚本,时间可选版本
运维·docker·容器
搬砖的小码农_Sky10 小时前
Ubuntu Desktop Linux 文件和文件夹操作命令详解
linux·运维·ubuntu