前提:1、linux機器上已經(jīng)部署好Jenkins、maven、git
????????? 2、測試用例再git里以不同的接口名存放,即不同的用例對應(yīng)不同的clone
一、jenkins界面配置
1、jenkins-全局工具配置界面配置好JAVA_HOME、maven、git,與Jenkins部署的linux機器的/etc/profile一致



2、job配置測試用例的git路徑

3、job構(gòu)建

3.1 圖中第一個shell腳本:
#!/bin/bash
job_name=$1
TestCase_Jenkins_build_Path=xxx/jenkins/jobs/$job_name/workspace
TestCase_sync_to_Path=xxx/interface/data
#同步文件
echo "--*--*--*--*--*--*exec change excel testcase start--**--*--*"
cd $TestCase_sync_to_Path
rm -rf *.xlsx
cd $TestCase_Jenkins_build_Path
cp *.xlsx $TestCase_sync_to_Path
echo "--*--*--*--*exec over--*--*--*--*--*--*"
3.2 圖中第二個shell腳本:
#!/bin/bash
#export LANG="en_US.UTF-8"
autotest_Path=xxxx
report_file_name=$1
report_file_Path=yyyy/apache-tomcat-8.5.53/webapps/report/$report_file_name
echo "--*--exec pom.xml/mvn test start--*--"
echo $report_file_name
cd $autotest_Path
zzzz/apache-maven-3.0.5/bin/mvn test
echo "--*--exec over--*--"
echo "--*--exec start reportng to? tomcat/webapps --*--"
echo $report_file_name
echo $report_file_Path
mkdir -p $report_file_Path
cp $autotest_Path/target/surefire-reports/html/* $report_file_Path
echo "--*--exec over --*--"
二、jenkins部署linux機器配置
1、jenkins部署機器存放自動化測試代碼的路徑下,進(jìn)行以下操作:
初始化:git init
建立遠(yuǎn)程連接:git remote add [遠(yuǎn)程庫別名] [遠(yuǎn)程庫ssh地址]
免密登錄:git config --global credential.helper store
拉取遠(yuǎn)程代碼:git pull [遠(yuǎn)程庫別名] master
2、同時,將以下shell代碼放入crontab定時任務(wù),以保證定時更新最新的測試代碼
#!/bin/bash
interfaceCode_Path=xxxx
echo "--*exec start git update autotest --*"
cd $interfaceCode_Path
date
git status
git pull? [遠(yuǎn)程庫別名] master
echo "--*--*--*--*--*--*exec over--*--*--*--*--*--*"
三、實現(xiàn)存放在git的測試用例變動會觸發(fā)Jenkins自動測試
參考鏈接:https://www.cnblogs.com/zblade/p/9480366.html
設(shè)置GitLab以及Jenkins,實現(xiàn)每次GitLab上有提交事件的時候,都能觸發(fā)Jenkins執(zhí)行相應(yīng)的操作
1、新建GitLab測試用例
進(jìn)入個人GitLab賬號,在右上角的加號中,選出GitLab 的 New Project,可以新建個人的GitLab工程:

其余都走默認(rèn)的設(shè)置,填寫好project的名字,可以創(chuàng)建一個新的project,如圖:

2、設(shè)置Jenkins
2.1 首先安裝 GitLab plugin
在“系統(tǒng)管理”->“插件管理”,查看已安裝插件,輸入 GitLab, 看看是否已經(jīng)安裝,如果沒有,則 查看 可選插件,搜索 GitLab,安裝后重啟即可。
2.2 新建一個測試工程
新建一個job,如圖:

源碼管理選擇Git, 輸入剛剛新建的GitLab的 URL以及個人的API_TOKEN:

目前只有master分支,后續(xù)可以根據(jù)不同分支對應(yīng)設(shè)置不同的url,監(jiān)聽不同分支的情況。
在構(gòu)建觸發(fā)器選項中,勾選 Build when a change is pushed to GitLab ,該選項最后的URL就是這個工程的URL路徑,注意如果是本機,則會顯示localhost, 可以將localhost改為個人的ip。
注意這個url, 下一步會用到這個url??梢栽诠こ讨性O(shè)置構(gòu)建后的操作為執(zhí)行一句python腳本: print("gitlab webhook jenkins")。點擊應(yīng)用和保存。
3. 設(shè)置GitLab的webhook
GitLab版本在不斷變換,該版本的GitLab,如圖可以找到WebHook的設(shè)置入口:

填入的url就是剛剛測試, 勾選push Event,這樣就是每次有push操作的時候,就會觸發(fā)webhook,執(zhí)行填入的url中的操作:

點擊保存,然后點擊Test,可以測試是否可以執(zhí)行,一般會報這些錯誤:
3.1 anonymous build

不支持匿名build, 這是回到j(luò)enkins中,在 系統(tǒng)管理 -> 全局安全管理中, 勾選 匿名用戶具有可讀權(quán)限 如圖:

然后點擊應(yīng)用和保存, 回到GitLab,繼續(xù)測試.
如果繼續(xù)抱該錯,則進(jìn)入剛剛構(gòu)建的工程,點擊 構(gòu)建觸發(fā)器中選中的Build When a change is
pushed右下角的高級選項,有一個Secret token,點擊 Generate,會生成一個安全代碼:

復(fù)制到webhook中的url下面:

然后保存,再測試,就可以通過,這時候會觸發(fā)jenkins執(zhí)行一次操作:

看看控制臺輸出:

3.2 valid crumb
如果報該錯,則在安全設(shè)置中,不勾選 CSRF, 如圖:

測試通過,后續(xù)可以在此基礎(chǔ)上拓展, 監(jiān)聽不同GitLab,同一個GitLab的不同分支的push操作,來分別觸發(fā)jenkins端執(zhí)行對應(yīng)的操作。
4. GitLab webhook的原理
hook就是在相應(yīng)的事件下設(shè)置鉤子,當(dāng)相應(yīng)的事件觸發(fā)的時候,比如push
event, merge event等操作的時候,就會觸發(fā)hook下面的腳本執(zhí)行,而gitlab webhook,
就是會觸發(fā)執(zhí)行這個webhook的url,類似于前面在jenkins調(diào)用中提到的打開url觸發(fā)jenkins執(zhí)行job。