目录

配置 Jenkins 自动拉取 gitlab 中的代码并部署

1、安装插件

2、设置 gitlab 用户 root 可以通过 ssh 公钥直接下载代码

3、jenkins添加git用户root的私钥

4、在 Jenkins 创建新的任务

5、将代码发布到web服务器

6、准备自动部署web代码

7、配置代码更新后自动触发jenkins进行部署

8、测试gitlab触发jenkins自动部署


配置 Jenkins 自动拉取 gitlab 中的代码并部署

1、安装插件

安装以下插件:

Credentials Plugin(默认已经安装) #签名证书管理插件

Gitlab Plugin #拉取 gitlab 中的源代码

SSH Plugin #这个插件使用 SSH 协议远程执行 shell 命令。

选择对应的插件进行安装。




jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码


选择之后点击安装



jenkins自动拉取前端代码 jenkins拉取git代码原理_devops_02


安装之后重启jenkins



jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_03


2、设置 gitlab 用户 root 可以通过 ssh 公钥直接下载代码

部署 key,让 root 用户可以不输入密码,获取 gitlab 上的源代码,该 key 是使用 git 下拉代码时使用。

jenkins自动拉取前端代码 jenkins拉取git代码原理_linux_04

在gitlab服务器生成公钥,一路回车,不要输入密码

ssh-keygen

查看公钥

cat .ssh/id_rsa.pub

jenkins自动拉取前端代码 jenkins拉取git代码原理_服务器_05

复制公钥信息,点击添加密钥。

jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_06

可以在服务器进行测试

jenkins自动拉取前端代码 jenkins拉取git代码原理_devops_07

git clone git@172.16.251.6:jcpt/wryjc.git

不用密码可以进行克隆,表示配置成功

jenkins自动拉取前端代码 jenkins拉取git代码原理_linux_08

3、jenkins添加git用户root的私钥

查看私钥

cat .ssh/id_rsa

将私钥内容添加到 Jenkins(private key 选项)

jenkins自动拉取前端代码 jenkins拉取git代码原理_linux_09

jenkins自动拉取前端代码 jenkins拉取git代码原理_devops_10

粘贴私钥信息,点击添加

jenkins自动拉取前端代码 jenkins拉取git代码原理_linux_11


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


jenkins自动拉取前端代码 jenkins拉取git代码原理_git_12

4、在 Jenkins 创建新的任务

新建项目:

jenkins自动拉取前端代码 jenkins拉取git代码原理_git_13

jenkins自动拉取前端代码 jenkins拉取git代码原理_服务器_14

源码管理选择git,输入代码地址,选择创建好的凭据。

jenkins自动拉取前端代码 jenkins拉取git代码原理_git_15

保存之后,点击构建(Build Now)

jenkins自动拉取前端代码 jenkins拉取git代码原理_linux_16

查看控制台输出

jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_17

显示success 表示成功。

jenkins自动拉取前端代码 jenkins拉取git代码原理_git_18

代码存放位置在: /var/lib/jenkins/workspace/

ls /var/lib/jenkins/workspace/

jenkins自动拉取前端代码 jenkins拉取git代码原理_git_19

查看项目文件

jenkins自动拉取前端代码 jenkins拉取git代码原理_devops_20

5、将代码发布到web服务器


可以通过执行命令或脚本的方式进行代码发布,这里使用 root 用户在各个 web 服务器上发布代码。大家也可以建立一些普通用户如 www 或 apache 来发布。


如果使用普通用户发布代码,要保持所有服务器上的用户 id 一致,这样没有权限的问题。


实验拓扑图:

jenkins自动拉取前端代码 jenkins拉取git代码原理_devops_21

web服务器配置

安装apache服务,并启动

yum install httpd -y
systemctl restart httpd

测试访问

http://ip     默认是80端口

jenkins自动拉取前端代码 jenkins拉取git代码原理_服务器_22

6、准备自动部署web代码

配置root用户无密码登陆

将jenkins服务器的ssh key 拷到web服务器

ssh-copy-id 172.16.251.5


注:需要在哪台机器上自动发布代码,就需要让 jenkins 这台机器的 root 用户可以免密码登录到那台服务器上。


添加构建步骤

jenkins自动拉取前端代码 jenkins拉取git代码原理_服务器_23

echo '当前 WORKSPACE 工作目录'
pwd
#'在构建时,默认会直接切换到 workspace 目录,所以可以直接将当前目录中的内容复制给被部署的服务器
scp -r ./* root@172.16.251.5:/var/www/html/

添加执行命令

jenkins自动拉取前端代码 jenkins拉取git代码原理_linux_24

再次构建

jenkins自动拉取前端代码 jenkins拉取git代码原理_devops_25

查看控制台输出

jenkins自动拉取前端代码 jenkins拉取git代码原理_git_26

访问web页面,成功。

jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_27

7、配置代码更新后自动触发jenkins进行部署

添加构建触发器,使gitlab中代码更改时自动拉取最新的代码

jenkins自动拉取前端代码 jenkins拉取git代码原理_git_28

复制该地址 http://172.16.251.6:8088/project/wryjc

jenkins自动拉取前端代码 jenkins拉取git代码原理_linux_29

点击生成token后,点击保存

jenkins自动拉取前端代码 jenkins拉取git代码原理_devops_30


注:这个 secret token,只用于 gitlab 和 jenkins 上的 wryjc流水线,进行触发和沟通。


修改gitlab配置,使Webhook可以对本地网络发送请求,修改后保存。

jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_31

生成wryjc项目的webhook钩子,输入jenkins中的地址及token后保存。

jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_32

测试webhook,显示200 提示成功

jenkins自动拉取前端代码 jenkins拉取git代码原理_服务器_33

jenkins平台查看,显示成功。

jenkins自动拉取前端代码 jenkins拉取git代码原理_服务器_34

jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_35

8、测试gitlab触发jenkins自动部署

在git服务器提交代码,验证是否可以自动部署:

echo "hello this is my devops " >> index.html
git add index.html
git commit -m "modify index.html"
git push -u origin master

jenkins控制台输出成功。

jenkins自动拉取前端代码 jenkins拉取git代码原理_jenkins自动拉取前端代码_36

访问web页面,内容改变,表示自动部署成功。

jenkins自动拉取前端代码 jenkins拉取git代码原理_服务器_37