一.简介

Jenkins实现CD持续交付持续部署方案通常涉及以下步骤:

配置Jenkins以监听Git仓库的变更或定时检查变更。
当检测到代码更新时,Jenkins会触发构建流程。
构建流程可以包括单元测试、代码分析、构建部署包等步骤。
构建完成后,Jenkins可以将部署包传输到目标服务器。
在目标服务器上,Jenkins可以执行部署脚本来更新应用。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

Jenkins实现CD持续交付持续部署实现方案:

通过jenkins执行shell实现
通过jenkins的插件Publish Over SSH实现
通过jenkins执行Ansible剧本、Ad-hoc实现
通过jenkins执行docker命令实现
通过jenkins交付到kubernetes
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

通过jenkins执行shell实现的流程图

代码上线之jenkins  钩子webhook_钩子

二.通过jenkins执行shell实现 示例

1.jenkins安装gitlab插件    GitLab和Generic Webhook Trigger都可以安装上

代码上线之jenkins  钩子webhook_webhook_02

2.安装完成后  General---构建触发器---可看到gitlab webhook和genetic webhook

#web hook的URL
http://192.168.77.150:8080/project/dev%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83/04-webhook-autodev-job
  • 1.
  • 2.

代码上线之jenkins  钩子webhook_Jenkins_03

3.创建工程

新建任务   在dev测试环境目录

代码上线之jenkins  钩子webhook_钩子_04

General---丢弃旧的构建---保留7天30个

代码上线之jenkins  钩子webhook_gitlab_05

源码管理---Git---添加仓库地址和认证

代码上线之jenkins  钩子webhook_webhook_06

构建触发器---选gitlab webhook

代码上线之jenkins  钩子webhook_webhook_07

高级---生成token

#生成的token
0032e74d8a62289070923d16b232270a
  • 1.
  • 2.

代码上线之jenkins  钩子webhook_gitlab_08

Build Steps---添加命令

echo "当前拉取的版本为:最新版"
#打包
tar zcf /tmp/Shell_Script.tar.gz .
#分发
scp /tmp/Shell_Script.tar.gz root@192.168.77.142:/tmp
#解压
ssh root@192.168.77.142 "tar xf /tmp/Shell_Script.tar.gz -C /app/tools"
#执行
ssh root@192.168.77.142 "cd /app/tools/Check_script/bash  && sh CentOS_Check_Script.sh"
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

代码上线之jenkins  钩子webhook_gitlab_09

4.gitlab配置

#web hook的URL
http://192.168.77.150:8080/project/dev%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83/04-webhook-autodev-job
#生成的token
0032e74d8a62289070923d16b232270a
  • 1.
  • 2.
  • 3.
  • 4.

进入项目界面

代码上线之jenkins  钩子webhook_Jenkins_10

webhook---填写钩子的URL和令牌 

触发来源:推送发和合并

代码上线之jenkins  钩子webhook_gitlab_11

去选勾选SSL验证  添加webhook

代码上线之jenkins  钩子webhook_webhook_12

报错:Url is blocked: Requests to the local network are not allowed

原因:内网屏蔽了这个钩子URL

解决:gitlab开启允许webhook对本地网络的访问

代码上线之jenkins  钩子webhook_Jenkins_13

创建后测试钩子webhook

代码上线之jenkins  钩子webhook_gitlab_14

jenkins验证测试

代码上线之jenkins  钩子webhook_gitlab_15

git推送验证

#查看远程认证
git remote -v
#添加到缓存区
git add .
#提交到本地仓库
git commit -m "v1.0"
#打标签
git tag -a v1.0 -m "v1.0"
#推送到远程仓库
git push -u origin --all
git push -u origin --tags
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

代码上线之jenkins  钩子webhook_钩子_16

jenkins验证

代码上线之jenkins  钩子webhook_钩子_17