Jenkins中使用Git和Maven之基本配置
Jenkins有一些專用術語,請參考下面的連線:
1.通過Jenkins web頁面新增Git plugin
Manage Jenkins->Manage Plugins->Available中選擇Git Plugin安裝,
注意要填寫user name和 email地址,否則日後會碰到git tag的錯誤
2.在Jenkins使用的機器上建立Git使用者所需要的公鑰
具體步驟參考前面Git server文章
但是注意,要將最後生成的.ssh目錄下的公鑰和私鑰檔案複製到/var/lib/jenkins/.ssh目錄下,否則git clone命令會報錯
3.修改jenkins目錄許可權
chmod -R 777 /var/lib/jenkins
4.現在可以通過web頁面建立一個專案Test,然後設定該專案使用Git作為版本管理。
並且設定repository路徑,比如我的:git@S1:cml.git
5.在build選項的pom檔案指定你需要執行的pom.xml路徑
比如我的一個測試工程名叫client,是個maven工程,我設定為client/pom.xml
6.現在可以點選左側的Build now進行測試
一切OK,則沒有錯誤日誌。在Build History中可以看到測試結果,有沒有錯誤。
7.Email傳送設定
在Manage Jenkins->Configure System->Email Notification中,設定SMTP傳送的基本資訊,點選Advanced,可以填寫使用者名稱和密碼。還有一個測試按鈕可以用來發送測試設定是否正確。
同時在Test專案中的Building Settings打勾選中E-mail Notification,點選右邊的問號,會出現幫助文件,說明在四種情況下會發送email,填寫接受email的地址,然後故意將client程式碼修改到不能編譯通過。然後點選Build now按鈕測試一下。果然收到email.
8.檢查程式碼更新並編譯
可以通過Poll SCM來設定定時檢查編譯功能
比如*/5 * * * * 就是每隔5分鐘檢查一次,如果git倉庫中有更新,則執行build操作。
9.使用Maven私服加快下載速度
如我這篇文章所述,用私服可以避免下載過慢問題,也可以繞過公司內部外網限制問題。
Jenkins的.m2目錄路徑在:/var/lib/jenkins/.m2/
首先清空裡面所有的jar包,然後建立settings.xml檔案,並編輯內容如下:
<settings>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://S1:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
現在點選build now測試一下,開啟console output,看看命令列輸出結果,如果發現從S1下載jar包,就正確。和不用私服的比較了一下,節省了1分多鐘.