在第一篇,我们用的是轮询去检查git是否更新,我试了最低也要3分钟轮询一次,反应算不上了灵敏。
这一篇我们通过webhook来实现git提交过后,立马就拉取代码打包。
首先呢,由于我们的打包机没有公网ip,webhook无法发送请求到我们的打包机上。
所以我们需要利用ssh使打包机在一个有公网ip的机器上开启一个反向隧道,这样访问公网ip的某个端口就会转发到我们打包机上。
有公网ip的机器,我这里用的是阿里云的服务器这个你们自行准备吧。
服务器的系统 我这里是centos7 64位的
首先在服务器的/etc/ssh/sshd_config文件中修改
GatewayPorts yes
然后重启sshd服务
sudo service sshd restart
输入命令
ssh -fCNR 2147:localhost:8080 xxx@xxx
我是在windows下的git-bash中使用的 你也可以用其他的工具
mac直接用终端就行
输入后回车 再输入密码就ok了
因为之后需要用脚本开机就开启这个反向隧道 不能手动输密码 所以需要配置一个ssh密钥放在服务器
输入
ssh-keygen -t rsa -C "备注 我用的邮箱"
然后按几下回车都用默认的设置就好了 如果你需要文件名和密码之类的 你也可以按照你的来
然后输入ssh-copy-id user@ip user是你的公网机器的用户名 ip就是公网机器的ip
再回车 输入一下密码 将这个密钥配置到你的服务器就ok了
然后你可以试着在浏览器输入你的ip:端口号进入你打包机的jenkins了
接下来就是webhook
因为我把代码放在coding上 所以 我这里以coding为例子 其他的网上教程很多 关键就是反向隧道
现在jenkins中安装插件
安装好之后重启jenkins
这时候在工程配置里面 就能看见这个选项 勾上他
登录你的coding在你要构建的项目中新建webhook
填入上面的地址用你的公网ip替换一下localhost 端口号替换成你设置的端口号
点击新建
看到状态是个勾就表示成功了,提交一下代码测试一下吧~