DevOps 工具鏈之 Lighthouse
本文轉(zhuǎn)載自微信公眾號(hào)「問(wèn)其」,作者陳少文。轉(zhuǎn)載本文請(qǐng)聯(lián)系問(wèn)其公眾號(hào)。
本文介紹一個(gè) ChatOps 工具 Lighthouse, 主要內(nèi)容來(lái)自官方文檔 。Kubernetes 社區(qū)使用 Prow 驅(qū)動(dòng)其在 GitHub 上的協(xié)作, 但是不適用于其他倉(cāng)庫(kù)。Lighthouse 普適于更多類(lèi)型的 Git 倉(cāng)庫(kù)。
1. 什么是 Lighthouse
Lighthouse 是一個(gè)基于 webhooks 的輕量級(jí) ChatOps 工具 , 通過(guò) Git 倉(cāng)庫(kù)的 webhooks 可以觸發(fā) Jenkins X 流水線 、Tekton 流水線 、Jenkins 任務(wù), 支持 GitHub、GitHub Enterprise、BitBucket Server 和 GitLab。
2. Lighthouse 與 Prow 的關(guān)系
Lighthouse 最初是由 Prow 衍生而來(lái), 并拷貝了一些基礎(chǔ)代碼。目前, Lighthouse 支持標(biāo)準(zhǔn)的 Prow 插件, 能夠處理分支推送的 webhooks 用來(lái)觸發(fā)指定的流水線執(zhí)行。Lighthouse 和 Prow 一樣, 使用 config.yaml 和 plugins.yaml 進(jìn)行配置。
不同之處在于, Lighthouse 使用的是 jenkins-x/go-scm , 可以支持更多類(lèi)型的 Git 倉(cāng)庫(kù), 而不限于 GitHub。Lighthouse 沒(méi)有使用 ProwJob CRD , 而是使用自己的 LighthouseJob CRD。
3. 安裝方式
Lighthouse 以 Helm Chart 包對(duì)外進(jìn)行發(fā)布。
下面是安裝命令:
- 添加倉(cāng)庫(kù)
- helm repo add jenkins-x http://chartmuseum.jenkins-x.io
- helm repo update
- 安裝或升級(jí)
- # 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 還針對(duì) Jenkins 和 Tekton 提供了專(zhuān)門(mén)的安裝和配置文檔。
4. 如何移植 Prow 插件
如果有你想要使用, 但是沒(méi)有移植到 Lighthouse 的插件, 可以按照下面的步驟移植:
Lighthouse 重用了 Prow 的插件代碼和配置文件。因此, 主要的工作是將 k8s.io/test-infra/prow 的內(nèi)容導(dǎo)入到 github.com/jenkins-x/lighthouse/pkg/prow, 然后修改 GitHub Client 的結(jié)構(gòu), 例如, 將 github.PullRequest 修改為 scm.PullRequest 。
GitHub Client 中的大部分結(jié)構(gòu)都可以和 jenkins-x/go-scm 中的一一對(duì)應(yīng)。但是, go-scm 默認(rèn)返回指向資源指針的切片。API 部分也會(huì)有一些命名上的差異。比如, 在實(shí)現(xiàn) lgtm 時(shí), Prow 和 Lighthouse 的 githubClient API 就有差異。
原文: https://github.com/jenkins-x/lighthouse