使用 Jenkins 多分支流水線時,您可以將狀態檢查與 GitHub 拉取請求集成。
以下是狀態檢查的示例
要實現這些類型的狀態檢查,您需要創建一個與 Jenkins 主實例集成的 GitHub 應用。
在本博客中,我們將介紹如何創建一個 GitHub 應用,以便在流水線中啟用狀態檢查。
創建 GitHub 應用
要創建 GitHub 應用,請選擇您的 GitHub 個人資料,然后轉到“設置”,如下所示。
向下滾動并選擇開發者設置?
?然后點擊 New GitHub App 按鈕創建一個新的 GitHub 應用?
您需要在配置中填寫以下詳細信息。
- GitHub 應用名稱:此名稱必須是唯一的。例如,jenkins-auth-app。請將其替換為所需的名稱。
- 主頁 URL:輸入您的 Jenkins URL。
- Webhook URL:包含 webhook 路徑的 Jenkins URL(http://3.107.8.66:8080/github-webhook/)
?
?
?
?
在“倉庫權限”下,從下拉菜單中選擇以下權限。
- 管理:只讀
- 檢查:讀寫
- 提交狀態:讀寫
- 內容:只讀(用于在 git fetch 期間讀取 Jenkinsfile 和倉庫內容)。
- 元數據:只讀
- 拉取請求:只讀
?
在“訂閱事件”下,選擇以下事件:
- 檢查運行
- 檢查套件
- 拉取請求
- 推送
- 代碼庫
?
?創建應用程序后,您將看到生成私鑰的通知,如下所示。
單擊生成私鑰選項,然后單擊生成私鑰按鈕,如下所示。
?
它會下載一個私鑰。
現在,您需要使用以下命令將密鑰轉換為 Jenkins 可以使用的格式。將 key-in-your-downloads-folder.pem 替換為您下載的私鑰。
ninjamac@ip-192-168-1-95 key % openssl pkcs8 -topk8 -inform PEM -outform PEM -in rockjenkinsgithubapp.2025-04-18.private-key.pem -out converted-github-app.pem -nocrypt
我們需要將轉換后的密鑰添加到 Jenkins 憑證中。
安裝 Github 應用
現在,在應用配置頁面上,您將看到一個名為“安裝應用”的選項,如下所示。點擊該選項即可為所有倉庫啟用此應用。
?
您可以選擇所需的全部或單個存儲庫,然后單擊“安裝”。
將私鑰添加到 Jenkins 憑證
現在,我們需要將轉換后的 PEM 密鑰添加到 Jenkins 憑證中。
前往 Jenkins 主頁 --> 管理 Jenkins --> 憑證。
在“憑據”下,選擇全局選項。
然后,選擇“添加憑據”選項以添加新憑據。
現在,您需要選擇“類型”為“GitHub 應用”。
我們還需要 Github 應用 ID。您可以從 Github 應用配置中獲取它,如下所示。
?
?在key字段中,添加我們之前轉換好的converted-github-app.pem私有文件內容,然后點擊Create按鈕,如下圖所示。
差不多就是這樣了。
現在,您可以在多分支管道中使用此憑證來啟用 PR 期間的檢查。
提交PR驗證Jenkins status
修改readme文件,然后commit到develop分支,然后創建PR到master分支。
這時github 會通過github app來通知Jenkins webhook,觸發PR pipeline
從下面的示例中可以看到有一個狀態檢查已經成功,單還有一個狀態還沒有完成。?
我們還可以在github -repo上設置分支保護rule: 在合并之前啟用狀態檢查
總結
通過安裝github app,你在通過github創建一個拉取請求的時候,會通過Jenkins webhook觸發Jenkins PR 流水線,Jenkins 會將流水線的狀態上報給github,這樣可以確保該PR請求在從 Jenkins 構建作業獲取所需的狀態檢查通知之前不會合并,通過與保護分支規則結合,你可以確保分支被合并之前必須通過所有的狀態檢查,從而有效地保護分支。