jenkins設置遠程觸發構建


觸發構建有多種方式,今天主要記錄,遠程觸發構建和輪詢SCM。

一 遠程觸發構建

Build Triggers中的Trigger builds remotely即遠程觸發構建,選中后提示信息中會提示一個地址“JENKINS_URL/me/my-views/view/all/job/CITest/build?token=TOKEN_NAME”,其中的JENKINS_URL即jenkins的訪問地址,如http://127.0.0.1:8080/jenkins/,末尾token=TOKEN_NAME即設置的用戶令牌(請求中需要用到該值)。

文本框中輸入該用戶的API_TOKEN_NAME-自定義(token生成方法:在 people中點擊當前登陸用戶-確定該用戶可以執行目標job,點擊configure,API Token項,如果沒有,則點擊API Token生成)

如何觸發構建:如在shell中訪問該地址,可以借助網絡工具curl或者在瀏覽器中訪問

如:GET http://127.0.0.1:8080/jenkins/job/CITest/build?token=jenkinstoken

掌握了此觸發機制,可以將該請求集成到其他系統中進行持續集成。

 

二 輪詢SCM,結合SVN實現提交后自動觸發job 

Build Triggers中的輪詢SCM,需要配合svn的hook機制,在hook腳本中訪問該url,進行jenkins任務觸發。

結合svn的hook使用步驟:

1 在jenkins中下載jenkins-cli.jar包(http://jenkins_url:port/jenkins/jnlpJars/jenkins-cli.jar)-- 使用cli工具,需要打開相應設置,jenkins-->系統管理-->Configure Global Security-->勾選啟用安全->TCP port for JNLP agents選擇隨機端口或者指定端口均可以。

2 將jenkins-cli.jar放到svn服務器中,確保有執行權限

3 在svn對應倉庫的hooks目錄下找到對應的腳本,post-commit.tmpl,去掉.tmpl后綴,修改腳本內容,使用jenkins-cli.jar執行命令:

#!/bin/bash

source /etc/profile

java -jar /root/jenkins-cli.jar -s http://47.104.77.127:8080/jenkins/ -auth JENKINS_USERNAME:JENKINS_PASSWORD build JENKINS_JOB

4 保存后,在svn中提交代碼,查看是否觸發了jenkins任務

 

附:

svn的hook介紹:

svn的hook機制:hook即鈎子,用戶在管理數據倉庫的時候,當特定的事件發生時,相應的hook會被調用,hook 其實就相當於特定事件的處理函數。

當前 Subversion 提供了5種可以安裝的 hook :

事件名

時機

與hook交互

一般用途

start-commit

事務創建之前。

傳給 hook 的 參數:

-         參 數 1 , 代碼庫路徑。

-         參 數 2 , 試圖提交的用戶名。

hook 的返回值:非 0 則 終止。

判斷用戶是否有權限進行提交 操作。

pre-commit

事務完成,但未提交。

-         參 數 1 , 代碼庫路徑。

-         參 數 2 , 事務名。

hook 的返回值:非 0 則 終止提交,操作回滾。

對提交內容進行檢查。如要求 提交必須填寫提交信息。

post-commit

事務提交完畢,新的修訂版被 創建。

傳給 hook 的 參數:

-         參 數 1 , 代碼庫路徑。

-         參 數 2 , 剛創建的修訂版號。

hook 的返回值被忽 略。

發送郵件通知,或備份代碼 庫。

pre-revprop-change

修改修訂版屬性(如提交時提 供的信息 message )之前。

由於修訂版屬性一旦修改就會 永久的丟失,除非安裝這個事件的 hook, subversion 的 客戶端不允許遠程修改修訂版屬性。

傳給 hook 的 參數:

-         參 數 1 , 代碼庫路徑。

-         參 數 2 , 要修改的修訂版號。

-         參 數 3 , 操作用戶名。

-         要 修改的屬性。

hook 的返回值:非 0 則 終止。

保存修訂版屬性的改變記錄。

post-revprop-change

修訂版屬性值被修改之后。

如果沒有安裝 pre-revprop-change的 hook , 這個事件的 hook 不會被執行。

傳給 hook 的 參數:

-         參 數 1 , 代碼庫路徑。

-         參 數 2 , 要修改的修訂版號。

-         參 數 3 , 操作用戶名。

-         要 修改的屬性。

hook 的返回值被忽 略。

發送郵件通知。

在當前倉庫下面的hook目錄,都會存在相應hook文件的模板,要讓相應hook文件起作用,就必須復制當前模板並去掉后面的.tmpl,然后編寫相應的邏輯。


免責聲明!

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



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