webhook(一)
一 目标:针对一些软件中webhook使用备注:下一步就是自己写代码来体会webhook的交互过程1)harbor应用场景:2)gitlab应用场景:git push之后,Git/Gitlab如何通知Jenkins对应Job的工作区实时构建?答案就是:Git/Github webhook机制发出POST请求,告知Jenkins服务器你要自动构建了。思考:什么...
一 目标:针对一些软件中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
更多推荐
所有评论(0)