Please enable Javascript to view the contents

本文介绍一个 ChatOps 工具 Lighthouse, 主要内容来自官方文档 。Kubernetes 社区使用 Prow 驱动其在 GitHub 上的协作, 但是不适用于其他仓库。Lighthouse 普适于更多类型的 Git 仓库。

1. 什么是 Lighthouse

Lighthouse 是一个基于 webhooks 的轻量级 ChatOps 工具 , 通过 Git 仓库的 webhooks 可以触发 Jenkins X 流水线 、Tekton 流水线 、Jenkins 任务, 支持 GitHub、GitHub Enterprise、BitBucket Server 和 GitLab。

2. Lighthouse 与 Prow 的关系

Lighthouse 最初是由 Prow 衍生而来, 并拷贝了一些基础代码。目前, Lighthouse 支持标准的 Prow 插件, 能够处理分支推送的 webhooks 用来触发指定的流水线执行。Lighthouse 和 Prow 一样, 使用 config.yaml 和 plugins.yaml 进行配置。

不同之处在于, Lighthouse 使用的是 jenkins-x/go-scm , 可以支持更多类型的 Git 仓库, 而不限于 GitHub。 Lighthouse 没有使用 ProwJob CRD , 而是使用自己的 LighthouseJob CRD。

3. 安装方式

Lighthouse 以 Helm Chart 包对外进行发布。

下面是安装命令:

  • 添加仓库
1
2
3
helm repo add jenkins-x http://chartmuseum.jenkins-x.io

helm repo update
  • 安装或升级
1
2
3
4
5
# Helm v2
helm upgrade --install my-lighthouse --namespace lighthouse jenkins-x/lighthouse

# Helm v3
helm upgrade --install my-lighthouse --namespace lighthouse jenkins-x/lighthouse
  • 卸载
1
2
3
4
5
# Helm v2
helm delete --purge my-lighthouse

# Helm v3
helm uninstall my-lighthouse --namespace lighthouse

Lighthouse 还针对 Jenkins 和 Tekton 提供了专门的安装和配置文档。

4. 如何移植 Prow 插件

如果有你想要使用, 但是没有移植到 Lighthouse 的插件, 可以按照下面的步骤移植:

Lighthouse 重用了 Prow 的插件代码和配置文件。因此, 主要的工作是将 k8s.io/test-infra/prow 的内容导入到 github.com/jenkins-x/lighthouse/pkg/prow, 然后修改 GitHub Client 的结构, 例如, 将 github.PullRequest 修改为 scm.PullRequest

GitHub Client 中的大部分结构都可以和 jenkins-x/go-scm 中的一一对应。但是, go-scm 默认返回指向资源指针的切片。API 部分也会有一些命名上的差异。比如, 在实现 lgtm 时, Prow 和 Lighthouse 的 githubClient API 就有差异。

原文: https://github.com/jenkins-x/lighthouse


微信公众号

作者

微信公众号