2018年 Jenkins 国内使用情况调查问卷
共建开放、包容、活跃的 Jenkins 社区
查看更多 »
Custom WAR Packager
打造你自己的 Jenkins!了解自定义 WAR/Docker Packager
查看更多 »
Docker Hub 上的官方 Jenkins 镜像
正确地使用 Jenkins 镜像
查看更多 »
Jenkins Configuration-as-Code: 看,我都不用手动配置
JCasC 允许我们在启动时或通过 web UI 按需在 Jenkins master 上应用一组 YAML 文件
查看更多 »
Jenkins 微信订阅号
来自 Jenkins 官方的消息
查看更多 »
Jenkins 的重要安全更新
重要安全更新
查看更多 »
从 Jenkins Master 扩展网络连接
从 Jenkins Master 扩展网络连接
查看更多 »
回顾 2018: 革新的一年
Jenkins 创始人 KK 先生的年终总结
查看更多 »
在 VS Code 中校验 Jenkinsfile
VS Code 中的 Jenkinsfile 插件
查看更多 »
在安全防火墙内通过 WebHook 触发构建
在这篇文章中,我将向大家展示,如何让运行在防火墙内的 Jenkins 依然可以实时地收到 GitHub 的 WebHook。当然,你也可以把这个方法应用到如 BitBucket、 DockerHub 或任何可以推送 WebHook 的其他服务中。但是,下面的步骤仅适用于托管在 GitHub 上的项目。
什么是 WebHook 简单地描述下什么是 WebHook:事件消息(通常是 JSON,也可以是其他的)由服务端以 HTTP(S) 协议发送到监听的客户端。
事件流自左到右,Jenkins 会监听类似 /github-webhook/ 或 /dockerhub-webhook/ 等路径上的 HTTP 请求,唤醒并执行一些任务。
GitHub 或 BitBucket 可能会报告一个新的提交或 PR,DockerHub 报告一个上游的镜像发生了变更。这些事情的共同之处在于,它们会推送给 Jenkins,并期待可以推送成功(例如:可以访问到 Jenkins)。在网络是开放的情况下时,例如 GitHub 企业版 或 Jenkins 在监听公网时,这是可以正常工作的。
内网环境 当有东西挡在中间时,也就是防火墙:
(_按照行业标准,所有防火墙都必须能起到屏障的作用。因此,无论如何,请不要在你的组织内搞破坏_)
当你在笔记本电脑上运行 Jenkins 并希望从 GitHub 接收 WebHook 时,这也是一样的。可能是为了测试你的设置,也可能是为了在 Mac 上运行 iOS 版本构建,又或者是部分网络没有暴露在互联网中,这都是合理的。 除非你的笔记本电脑可以让整个互联网访问到(这当然不太可能),或者你的网络配置得恰到好处,否则网络连接将无法流动,此时 WebHook是不可用的。
没关系,我们可以退而求其次,使用轮询变更的方式。只是这样很糟糕。你会用尽 API 配额,还无法实时地获取变更,这真的不是一个好方法。
问题可能也是机会 我们可以解决这个问题,但也可以把这个视为一个机会。有的东西在互联网中不可访问,或者以某些默认的方法锁定是一个特色,不是一个 Bug。你可以很大程度上减少你的攻击面,同时可以进行深度防护:
一个 WebHook 转发服务 输入 link:https://smee.io/[Smee] 这个很容易记住的名字。这是一个由 GitHub 提供的 link:https://github.
查看更多 »