DevOps 工具鏈之 Lighthouse
本文轉載自微信公眾號「問其」,作者陳少文。轉載本文請聯系問其公眾號。
本文介紹一個 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 包對外進行發布。
下面是安裝命令:
- 添加倉庫
- helm repo add jenkins-x http://chartmuseum.jenkins-x.io
- helm repo update
- 安裝或升級
- # Helm v2
- helm upgrade --install my-lighthouse --namespace lighthouse jenkins-x/lighthouse
- # Helm v3
- helm upgrade --install my-lighthouse --namespace lighthouse jenkins-x/lighthouse
- 卸載
- # 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