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 插件
给项目添加视图
查看视图
相关推荐
DY009J17 分钟前
深度探索Kali Linux的精髓与实践应用
linux·运维·服务器
什么鬼昵称1 小时前
Pikachu- Over Permission-垂直越权
运维·服务器
码农小白1 小时前
linux驱动:(22)中断节点和中断函数
linux·运维·服务器
4647的码农历程1 小时前
Linux网络编程 -- 网络基础
linux·运维·网络
醉颜凉2 小时前
银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证
运维·安全·操作系统·国产化·麒麟·kylin os·安全授权认证
C++忠实粉丝2 小时前
Linux环境基础开发工具使用(2)
linux·运维·服务器
康熙38bdc3 小时前
Linux 环境变量
linux·运维·服务器
存储服务专家StorageExpert3 小时前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
大G哥4 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
醉颜凉4 小时前
银河麒麟桌面操作系统修改默认Shell为Bash
运维·服务器·开发语言·bash·kylin·国产化·银河麒麟操作系统