Jenkins 自動觸發執行的配置


1. 兩種觸發方式

2. jenkins 和 github 同步配置

 

  

1. 兩種觸發條件

Jenkins 中建立的任務是可以設置自動觸發,更進一步的實現自動化。Jenkins 的觸發條件可以分為兩種:時間觸發和事件觸發。

1)時間觸發

到了指定的時間就觸發構建,默認的時間觸發包括定時構建和輪詢 SCM。

  • 定時構建:指的是一到指定的時間就自動執行,類似於 linux 下的 crontab,通常用在周期性構建的場景下,比如說半夜構建。
  • 輪詢 SCM:每隔指定的時間詢問代碼庫是否有變化,比如說 push、pull、update 等操作,操作類型是可以配置的,如果有的話就會自動執行任務。

2)事件觸發

事件觸發指的就是發生了某個事件就觸發構建,事件可以是手動構建、上游任務的主動觸發、HTTP API Webhook 等。

  • 由其他工程構建后觸發:比如我們打包、部署完 war 包並發布到 tomcat 記做任務 A,測試腳本的任務記做任務 B,當我們想任務 A 構建成功后自動執行測試的話,就可以在任務 B 的 config 中將 A 作為 B 的觸發工程。
  • GitHub hook trigger for GITScm polling:github 專用,當 github 上代碼有變動時用來主動通知 Jenkins 進行項目的構建。該插件默認是沒有的。
  • 觸發遠程構建(例如,使用腳本):會提供一個接口,可以用來在代碼層面觸發構建。

 

2. jenkins 和 github 同步配置

Ngrok 安裝

GitHub 收到提交的代碼后要主動通知 Jenkins,所以 Jenkins 所在服務器一定要有外網 IP,否則 GitHub 無法訪問,解決方法:下載 ngrok,將 IP 暴露到網絡(類似的工具還有 holer)。 

1)下載

登錄到 https://ngrok.com/download 下載 ngrok 壓縮包,選 windows 版本:

2)解壓縮

將 ngrok-stable-windows-amd64.zip 文件解壓到指定的目錄,比如:F:\ngrok-stable-windows-amd64

3)獲取 ngrok 的 token

切換到官網並進行登錄(可用 github 賬號登錄):

獲取 token:

4)認證 token

切換到解壓后的目錄,執行命令進行認證:ngrok authtoken <your token>

5)啟動 ngrok

在 ngrok 所在的目錄執行:ngrok http 8080(8080 是 tomcat 的監聽端口),拷貝 forwarding 指示的 ip,后續會用到(注意:cmd 的窗口不要關閉)。

注意:關機或重啟后就要重新進入 ngrok 所在的目錄執行 ngrok http 8080 命令生成新的 IP,同時 Jenkins 和 github 中的 webhook 對應的 ip 也要修改。

 

配置 webhook

在整個流程中關鍵的一步就是 github 監控到指定的倉庫有 push 事件時,就會通知 Jenkins 啟動與該倉庫關聯的任務自動構建,這就需要用到 webhook。

webhook 是一個 HTTP 回調,當有 push 事件發生時,github 可以發起一個 HTTP 請求到 webhook 配置的 URL 通知 Jenkins 發生了 push 事件,這樣只要開發人員提交代碼后,都會觸發編譯、打包、發布以及測試任務的構建。

需要在 GitHub 中配置 webhook,然后在 Jenkins 中添加此 webhook,流程如下:

1)登錄到 github,進入到需要監控的倉庫

點擊 settings:

點擊 Webhooks-->Add webhooks:

2)設置 Payload URL

填寫 Jenkins 的服務所在 IP 地址 + Jenkins/github-webhook/,如:https://7f39f40b.ngrok.io/Jenkins/github-webhook/

標黃的部分是用 ngrok 生成的 IP 地址,其它值默認即可。

3)進入到 Jenkins,單擊系統管理-->系統設置

找到 GitHub,單擊 Advanced...  

4)添加 webhook

注意:post 地址一定是 http://your_Jenkins_url/github-webhook/ ,不能去掉最后的“/”。

單擊頁面最底部的 save 按鈕,完成配置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM