您好,登錄后才能下訂單哦!
作者:Tony Qu
CC.NET的配置文件位于安裝目錄的server目錄下,有個(gè)叫做ccnet.config的文件,只有配置了這個(gè)文件,CC.NET才能正常運(yùn)行。
通過CCNetConfig我們可以學(xué)到很多關(guān)于ccnet.config的配置內(nèi)容,首先來看一個(gè)非常重要的概念——觸發(fā)器。
值得注意的是,這里的觸發(fā)器都僅針對(duì)當(dāng)前項(xiàng)目有效,這也是為什么這些trigger基本沒有target,比如說IntervalTrigger,所有的屬性都沒有提到觸發(fā)的對(duì)象,。
CC.NET提供了6種觸發(fā)器:
IntervalTrigger,顧名思義,就是每隔一定時(shí)間觸發(fā)任務(wù)的觸發(fā)器。
FilterTrigger不能單獨(dú)工作,而必須與其他Trigger一起使用,之所以叫FilterTrigger是因?yàn)樗怯脕磉^濾觸發(fā)條件,例如我們?cè)驹O(shè)置了一個(gè)IntervalTrigger,每5分鐘觸發(fā)一次,但我只希望這個(gè)IntervalTrigger只在工作時(shí)間觸發(fā),那么我們就可以用FilterTrigger來限制IntervalTrigger的觸發(fā)時(shí)間為9:00 ~ 18:00。
MultiTrigger類似于WPF中的MultiTrigger,可同時(shí)執(zhí)行多個(gè)觸發(fā)器,并對(duì)觸發(fā)器結(jié)果做And或Or操作。
ScheduleTrigger和Windows自帶的計(jì)劃任務(wù)的功能非常類似,可以在特定時(shí)間觸發(fā)任務(wù)。
ProjectTrigger是僅當(dāng)指定的CC.NET項(xiàng)目build完成后才會(huì)觸發(fā)任務(wù)的觸發(fā)器。
UrlTrigger是僅當(dāng)某個(gè)特定的Url頁面的內(nèi)容發(fā)生變化時(shí)才會(huì)觸發(fā)任務(wù)的觸發(fā)器。
下面來舉個(gè)例子:
場(chǎng)景1:我希望設(shè)置一個(gè)daily build的觸發(fā)器,每天凌晨1:00觸發(fā)一次,僅工作日做,雙休日不做(不考慮節(jié)假日)。
由于是特定時(shí)間循環(huán)觸發(fā),我們可以用ScheduleTrigger來實(shí)現(xiàn),代碼如下:
<scheduleTrigger time="1:00" buildCondition="ForceBuild" name="ScheduledTask1"> <weekDays> <weekDay>Monday</weekDay> <weekDay>Tuesday</weekDay> <weekDay>Wednesday</weekDay> <weekDay>Thursday</weekDay> <weekDay>Friday</weekDay> </weekDays> </scheduleTrigger>
在CCNetConfig里面設(shè)置則如下圖所示:
場(chǎng)景2: 持續(xù)集成需要每隔一定時(shí)間觸發(fā)一次build,已確定之前的checkin都是可運(yùn)行的,所以我們需要設(shè)定一個(gè)每周一到周五的工作時(shí)間(9:00 ~ 18:00)觸發(fā),并且每隔15分鐘觸發(fā)一次的觸發(fā)器(不考慮時(shí)區(qū)、時(shí)差問題)。
這里我們需要使用IntervalTrigger+FilterTrigger,F(xiàn)ilterTrigger是用于過濾時(shí)間的,即9:00 ~ 18:00。
<filterTrigger startTime="09:00" endTime="18:00"> <trigger type="intervalTrigger" seconds="600" /> <weekDays> <weekDay>Monday</weekDay> <weekDay>Tuesday</weekDay> <weekDay>Wednesday</weekDay> <weekDay>Thursday</weekDay> <weekDay>Friday</weekDay> </weekDays> </filterTrigger>
在CCNetConfig里面設(shè)置則如下圖所示:
場(chǎng)景3: 當(dāng)項(xiàng)目A的build成功之后才觸發(fā)當(dāng)前項(xiàng)目build(通常項(xiàng)目A是某個(gè)核心代碼庫,當(dāng)前項(xiàng)目對(duì)其具有依賴性),由于是僅當(dāng)成功才觸發(fā),所以triggerStatus=Success
<triggers> <projectTrigger project="task2"> <triggerStatus>Success</triggerStatus> <innerTrigger type="intervalTrigger" seconds="1800" buildCondition="ForceBuild" /> </projectTrigger> </triggers>
在CCNetConfig里面設(shè)置則如下圖所示:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。