一  目标:针对一些软件中webhook使用

备注:下一步就是自己写代码来体会webhook的交互过程

1)harbor

应用场景:

2)gitlab

应用场景

  • git push之后,Git/Gitlab如何通知Jenkins对应Job的工作区实时构建

答案就是:Git/Github webhook机制发出POST请求,告知Jenkins服务器你要自动构建了。

思考:什么时候webhook会发出POST请求,或者说什么时候触发的

后续:POST请求包含什么内容?

备注:不需要jenkins时刻监听gitlab是否有变化(传统是轮询的方式),有事才通知你

任务链---->一环扣一环!

二  webhook的核心概念

        Webhook是个在特定情况下触发的一种api.,越来越多在web上的操作被描述为事件

        那个 Payload URL 上填上需要部署到远程服务器的网址,比方说 http://wangzhij.com/incoming,然后之后每次有 push 事件 GitHub 都会主动往这个地址发送一个 POST 请求,当然你也可以选择其他事件都发个 POST 通知你,GitHub 还有个 Secret 的设定,就是一个字符串,如果加上的话就在 POST 请求的 HTTP 头中会带一个 Hash 值做验证密文,证明这个 POST(源合法)真是来自 GitHub,不然任何人都往那个地址 POST 忽悠你你都不知道谁是谁,我也不能对所有人都响应吧!

         备注:理解为认证,只有双方约定好的才能衔接。

其它:你在 Docker Hub 上有自动构建仓库,可以在仓库中发生某个事件时通过 Webhook 触发其他应用程序的动作。

三  事件

事件是webhook的核心。每当对存储库执行某个操作时,这些webhook就会触发,服务器的有效负载(payload)URL会拦截并对其执行操作。

gitlab中解释: Web 钩子用于在项目发生相关事件时通知外部服务器

(1)Git是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件、触发器之类的东西类似)

(2)Git Hooks就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本

(3)gitlab的web hooks跟git hook类似。也是当项目发生提交代码、提交tag等动作会自动去调用url,这个url可以是更新代码或者其他操作

自己的应用场景:push代码--->gitlab--->gitlab webhook--->jenkins---->git pull ---->build ---->docker-images ---重点->更新k8s的服务(镜像)

来源思路----->具体的可能实现方式 ---->工作镜像中服务的更新

命令链接

kubectl set image deployments/nginx nginx=nginx:1.16.1

不错的博客

harbor1.9新特性

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐