一種項(xiàng)目持續(xù)集成的方法及系統(tǒng)的制作方法
【專利摘要】本申請(qǐng)?zhí)峁┝艘环N項(xiàng)目持續(xù)集成的方法及系統(tǒng),其中所述方法包括:獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目ID、一個(gè)或多個(gè)項(xiàng)目分支信息;依據(jù)所述項(xiàng)目ID以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息;構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。本申請(qǐng)可以提高持續(xù)集成性能,節(jié)約集成成本。
【專利說明】一種項(xiàng)目持續(xù)集成的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及項(xiàng)目集成的【技術(shù)領(lǐng)域】,特別是涉及一種項(xiàng)目持續(xù)集成的方法,以及,一種項(xiàng)目持續(xù)集成的系統(tǒng)。
【背景技術(shù)】
[0002]在典型的軟件項(xiàng)目中,集成階段一般都是在最后,因此出現(xiàn)問題的最多,而且最后有可能導(dǎo)致不能按時(shí)交付,而持續(xù)集成(Continuous integrat1n,簡(jiǎn)稱Cl)可以用來解決這個(gè)問題。持續(xù)集成是一種軟件開發(fā)實(shí)踐,在持續(xù)集成中,團(tuán)隊(duì)的成員頻繁集成他們的工作成果,通常每個(gè)人每天至少集成一次,這便導(dǎo)致每天會(huì)集成多次,每次集成是通過自動(dòng)構(gòu)建進(jìn)行的,目的是讓團(tuán)隊(duì)在持續(xù)的基礎(chǔ)上收到反饋并進(jìn)行改進(jìn),而不必等到開發(fā)周期后期才尋找和修復(fù)缺陷。
[0003]Hudson作為一款開源持續(xù)集成工具在業(yè)界得到普遍的應(yīng)用,在現(xiàn)有技術(shù)中,可以通過人工配置的方式對(duì)一個(gè)項(xiàng)目使用Hudson進(jìn)行持續(xù)集成,具體步驟如下:
[0004]1.人工新建一個(gè)或多個(gè)Hudson持續(xù)集成任務(wù),選取任務(wù)風(fēng)格,并指定任務(wù)的名稱與項(xiàng)目關(guān)聯(lián);
[0005]2.人工獲取項(xiàng)目開發(fā)分支信息,人工新建一個(gè)或多個(gè)Hudson持續(xù)集成任務(wù),將項(xiàng)目開發(fā)分支填寫到Hudson任務(wù)分支地址屬性中;
[0006]3.人工配置每個(gè)任務(wù)簡(jiǎn)介屬性,構(gòu)建命令屬性,定時(shí)器屬性,執(zhí)行節(jié)點(diǎn)屬性,結(jié)果搜集方式,靜態(tài)掃描方式等一系列任務(wù)屬性;
[0007]4.人工維護(hù)每個(gè)持續(xù)集成任務(wù),當(dāng)項(xiàng)目開發(fā)分支變更時(shí),需要人工更新持續(xù)集成任務(wù)的屬性;
[0008]5.Hudson定時(shí)構(gòu)建后,會(huì)通過配置的方式解析一份結(jié)果,它并沒有結(jié)果監(jiān)控功能,如果需要獲取構(gòu)建質(zhì)量數(shù)據(jù),需要打開一個(gè)或多個(gè)任務(wù)進(jìn)行查看匯總;
[0009]6.當(dāng)項(xiàng)目結(jié)束刪除任務(wù)后,構(gòu)建結(jié)果隨著任務(wù)一起被刪除,不具備持久化保存的功能。
[0010]然而,發(fā)明人在實(shí)施上述項(xiàng)目持續(xù)集成時(shí),發(fā)現(xiàn)以下不足:
[0011]1.人工配置持續(xù)集成任務(wù),每個(gè)任務(wù)平均耗時(shí)10分鐘,每個(gè)項(xiàng)目平均需要配置2?10個(gè)任務(wù),大規(guī)模使用時(shí),一個(gè)互聯(lián)網(wǎng)公司在某一個(gè)時(shí)間段內(nèi)大約有500?5000個(gè)項(xiàng)目的規(guī)模需要持續(xù)集成構(gòu)建;
[0012]2.人工維護(hù)持續(xù)集成任務(wù)與項(xiàng)目的關(guān)聯(lián),根據(jù)計(jì)算一個(gè)互聯(lián)網(wǎng)公司所需要的任務(wù)數(shù)量在1000?50000個(gè),通過人工維護(hù)其人工開銷成本十分巨大;
[0013]3.人工匯總項(xiàng)目持續(xù)集成構(gòu)建質(zhì)量數(shù)據(jù),需要投入大量的人工成本來進(jìn)行簡(jiǎn)單的匯總計(jì)算,系統(tǒng)無法做到項(xiàng)目質(zhì)量自動(dòng)監(jiān)控;
[0014]4.項(xiàng)目結(jié)束刪除任務(wù)后,不能持久化的保存歷史構(gòu)建質(zhì)量數(shù)據(jù),無法追溯歷史數(shù)據(jù);
[0015]5.Hudson大規(guī)模創(chuàng)建任務(wù)(10000個(gè)以上)時(shí),會(huì)有性能瓶頸,導(dǎo)致Hudson訪問慢,無法擴(kuò)展。
[0016]總之,現(xiàn)有Hudson的技術(shù)方案在項(xiàng)目中特別是大規(guī)模項(xiàng)目中應(yīng)用時(shí),面臨持續(xù)集成任務(wù)配置困難,管理維護(hù)困難,項(xiàng)目質(zhì)量監(jiān)控困難以及項(xiàng)目質(zhì)量數(shù)據(jù)分析困難等問題,并且當(dāng)大規(guī)模項(xiàng)目應(yīng)用以人工配置管理的方式進(jìn)行持續(xù)集成時(shí),會(huì)帶來較大成本開銷。
[0017]因此,本領(lǐng)域技術(shù)人員迫切需要解決的問題是:提供一種項(xiàng)目持續(xù)集成的處理機(jī)制,用以提高持續(xù)集成性能,節(jié)約集成成本。
【發(fā)明內(nèi)容】
[0018]本申請(qǐng)所要解決的技術(shù)問題是提供一種項(xiàng)目持續(xù)集成的方法,用以提高持續(xù)集成性能,節(jié)約集成成本。
[0019]相應(yīng)的,本申請(qǐng)還提供了一種項(xiàng)目持續(xù)集成的系統(tǒng),用以保證上述方法在實(shí)際中的應(yīng)用。
[0020]為了解決上述問題,本申請(qǐng)公開了一種項(xiàng)目持續(xù)集成的方法,包括:
[0021]獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目ID、一個(gè)或多個(gè)項(xiàng)目分支信息;
[0022]依據(jù)所述項(xiàng)目ID以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息;
[0023]構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0024]優(yōu)選地,所述依據(jù)所述項(xiàng)目ID以及一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的步驟包括:
[0025]調(diào)用預(yù)設(shè)插件分別將所述項(xiàng)目ID,每個(gè)項(xiàng)目分支信息替換預(yù)設(shè)模板中對(duì)應(yīng)的項(xiàng)目ID和項(xiàng)目分支信息,生成與所述項(xiàng)目分支信息一一對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息。
[0026]優(yōu)選地,調(diào)用第一預(yù)設(shè)接口構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0027]優(yōu)選地,所述方法還包括:
[0028]當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0029]持久化所述構(gòu)建質(zhì)量數(shù)據(jù)。
[0030]優(yōu)選地,所述當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù)的步驟包括:
[0031]當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,調(diào)用預(yù)設(shè)插件獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,所述構(gòu)建信息包括項(xiàng)目ID ;
[0032]調(diào)用第二預(yù)設(shè)接口依據(jù)所述構(gòu)建信息獲取對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù);
[0033]生成所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目ID的關(guān)聯(lián)關(guān)系;
[0034]所述持久化所述構(gòu)建質(zhì)量數(shù)據(jù)的步驟包括:
[0035]持久化所述構(gòu)建質(zhì)量數(shù)據(jù)以及所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目ID的關(guān)聯(lián)關(guān)系。
[0036]優(yōu)選地,所述項(xiàng)目信息包括項(xiàng)目更新信息,所述方法還包括:
[0037]依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0038]優(yōu)選地,所述依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)的步驟包括:
[0039]依據(jù)所述項(xiàng)目更新信息生成對(duì)應(yīng)的一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息;
[0040]依據(jù)所述項(xiàng)目ID獲得對(duì)應(yīng)的一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息;
[0041]將所述一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息與所述一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息進(jìn)行比對(duì),獲得一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的更新結(jié)果;
[0042]依據(jù)所述更新結(jié)果調(diào)用第三預(yù)設(shè)接口更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0043]優(yōu)選地,所述方法還包括:
[0044]獲取所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0045]持久化所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0046]依據(jù)項(xiàng)目ID查找所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù);
[0047]將所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)與更新后的構(gòu)建質(zhì)量數(shù)據(jù)進(jìn)行比較;
[0048]若所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)大于更新后的構(gòu)建質(zhì)量數(shù)據(jù),發(fā)出告警消息。
[0049]優(yōu)選地,所述項(xiàng)目信息包括項(xiàng)目結(jié)束信息,所述方法還包括:
[0050]依據(jù)所述項(xiàng)目結(jié)束信息調(diào)用第四預(yù)設(shè)接口刪除所述項(xiàng)目ID對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息。
[0051]優(yōu)選地,所述方法還包括:
[0052]當(dāng)所述持續(xù)集成任務(wù)配置信息的個(gè)數(shù)大于預(yù)設(shè)閾值時(shí),將所述持續(xù)集成任務(wù)配置信息輪循分配到預(yù)設(shè)的多臺(tái)持續(xù)集成服務(wù)器中。
[0053]本申請(qǐng)公開了一種項(xiàng)目持續(xù)集成的系統(tǒng),包括:
[0054]項(xiàng)目信息獲取模塊,用于獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目ID、一個(gè)或多個(gè)項(xiàng)目分支信息;
[0055]配置信息生成模塊,用于依據(jù)所述項(xiàng)目ID以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息;
[0056]任務(wù)構(gòu)建模塊,用于構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0057]優(yōu)選地,所述配置信息生成模塊包括:
[0058]持續(xù)集成任務(wù)配置信息生成子模塊,用于調(diào)用預(yù)設(shè)插件分別將所述項(xiàng)目ID,每個(gè)項(xiàng)目分支信息替換預(yù)設(shè)模板中對(duì)應(yīng)的項(xiàng)目ID和項(xiàng)目分支信息,生成與所述項(xiàng)目分支信息一一對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息。
[0059]優(yōu)選地,調(diào)用第一預(yù)設(shè)接口構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0060]優(yōu)選地,所述系統(tǒng)還包括:
[0061]第一構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊,用于在所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0062]第一構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊,用于持久化所述構(gòu)建質(zhì)量數(shù)據(jù)。
[0063]優(yōu)選地,所述第一構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊包括:
[0064]構(gòu)建信息獲取子模塊,用于在所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,調(diào)用預(yù)設(shè)插件獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,所述構(gòu)建信息包括項(xiàng)目ID ;
[0065]構(gòu)建質(zhì)量數(shù)據(jù)獲取子模塊,用于調(diào)用第二預(yù)設(shè)接口依據(jù)所述構(gòu)建信息獲取對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù);
[0066]關(guān)聯(lián)關(guān)系生成子模塊,用于生成所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目ID的關(guān)聯(lián)關(guān)系;
[0067]所述構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊包括:
[0068]關(guān)聯(lián)子模塊,用于持久化所述構(gòu)建質(zhì)量數(shù)據(jù)以及所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目ID的關(guān)聯(lián)關(guān)系。
[0069]優(yōu)選地,所述項(xiàng)目信息包括項(xiàng)目更新信息,所述系統(tǒng)還包括:
[0070]更新模塊,用于依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0071]優(yōu)選地,所述更新模塊包括:
[0072]最新配置信息獲取子模塊,用于依據(jù)所述項(xiàng)目更新信息生成對(duì)應(yīng)的一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息;
[0073]已有配置信息獲取子模塊,用于依據(jù)所述項(xiàng)目ID獲得對(duì)應(yīng)的一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息;
[0074]比對(duì)子模塊,用于將所述一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息與所述一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息進(jìn)行比對(duì),獲得一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的更新結(jié)果;
[0075]持續(xù)集成任務(wù)更新子模塊,用于依據(jù)所述更新結(jié)果調(diào)用第三預(yù)設(shè)接口更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0076]優(yōu)選地,所述系統(tǒng)還包括:
[0077]第二構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊,用于獲取所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0078]第二構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊,用于持久化所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0079]構(gòu)建質(zhì)量數(shù)據(jù)查找模塊,用于依據(jù)項(xiàng)目ID查找所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù);
[0080]質(zhì)量數(shù)據(jù)比較模塊,用于將所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)與更新后的構(gòu)建質(zhì)量數(shù)據(jù)進(jìn)行比較;
[0081]告警模塊,用于在所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)大于更新后的構(gòu)建質(zhì)量數(shù)據(jù)時(shí),發(fā)出告警消息。
[0082]優(yōu)選地,所述項(xiàng)目信息包括項(xiàng)目結(jié)束信息,所述系統(tǒng)還包括:
[0083]配置信息刪除模塊,用于依據(jù)所述項(xiàng)目結(jié)束信息調(diào)用第四預(yù)設(shè)接口刪除所述項(xiàng)目ID對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息。
[0084]優(yōu)選地,所述系統(tǒng)還包括:
[0085]配置信息輪循分配模塊,用于在所述持續(xù)集成任務(wù)配置信息的個(gè)數(shù)大于預(yù)設(shè)閾值時(shí),將所述持續(xù)集成任務(wù)配置信息輪循分配到預(yù)設(shè)的多臺(tái)持續(xù)集成服務(wù)器中。
[0086]與現(xiàn)有技術(shù)相比,本申請(qǐng)具有以下優(yōu)點(diǎn):
[0087]第一,本申請(qǐng)實(shí)施例可以自動(dòng)獲取項(xiàng)目信息,根據(jù)項(xiàng)目信息中的項(xiàng)目ID和一個(gè)或多個(gè)項(xiàng)目分支信息自動(dòng)生成一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息并自動(dòng)構(gòu)建對(duì)應(yīng)的持續(xù)集成任務(wù),由于持續(xù)集成任務(wù)配置信息中包含項(xiàng)目ID,因此構(gòu)建的持續(xù)集成任務(wù)可以與項(xiàng)目關(guān)聯(lián),從而方便對(duì)項(xiàng)目的管理,節(jié)省項(xiàng)目特別是大規(guī)模項(xiàng)目的持續(xù)集成和項(xiàng)目管理維護(hù)的成本,提聞項(xiàng)目持續(xù)集成的效率以及提聞持續(xù)集成性能。
[0088]第二,本申請(qǐng)實(shí)施例可以自動(dòng)獲取項(xiàng)目更新信息以及項(xiàng)目結(jié)束信息,依據(jù)項(xiàng)目更新信息以及項(xiàng)目結(jié)束信息自動(dòng)更新對(duì)應(yīng)的持續(xù)集成任務(wù)或者刪除對(duì)應(yīng)的持續(xù)集成任務(wù),免去人工更新和刪除持續(xù)集成任務(wù)的麻煩,方便對(duì)持續(xù)集成任務(wù)的管理,節(jié)省了持續(xù)集成任務(wù)維護(hù)管理的成本。
[0089]第三,本申請(qǐng)實(shí)施例通過自動(dòng)獲取一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,依據(jù)構(gòu)建信息自動(dòng)匯總構(gòu)建質(zhì)量數(shù)據(jù)并持久化保存構(gòu)建質(zhì)量數(shù)據(jù),這樣可以免去了手工打開一個(gè)或多個(gè)持續(xù)集成任務(wù)并手工匯總構(gòu)建質(zhì)量數(shù)據(jù)的麻煩,節(jié)省了構(gòu)建質(zhì)量數(shù)據(jù)監(jiān)控的成本,并且,即使項(xiàng)目結(jié)束導(dǎo)致持續(xù)集成任務(wù)被刪除時(shí),構(gòu)建質(zhì)量數(shù)據(jù)也不會(huì)隨著持續(xù)集成任務(wù)一起被刪除,持久保存的構(gòu)建質(zhì)量數(shù)據(jù)以便于項(xiàng)目歷史構(gòu)建質(zhì)量數(shù)據(jù)的追溯和構(gòu)建質(zhì)量數(shù)據(jù)以及更新代碼版本的質(zhì)量監(jiān)控。
[0090]第四,當(dāng)面對(duì)大規(guī)模Hudson持續(xù)集成任務(wù)的管理時(shí),本申請(qǐng)實(shí)施例在調(diào)用HudsonAPI之前設(shè)置了一個(gè)輪詢迭代器,通過調(diào)用Hudson集群的方式進(jìn)行持續(xù)集成任務(wù)支撐,線性擴(kuò)展了 Hudson的性能,避免了大規(guī)模Hudson持續(xù)集成任務(wù)管理導(dǎo)致Hudson巖機(jī)的情況。
【專利附圖】
【附圖說明】
[0091]圖1是本申請(qǐng)一種項(xiàng)目持續(xù)集成的方法實(shí)施例一的步驟流程圖;
[0092]圖2是本申請(qǐng)一種項(xiàng)目持續(xù)集成的方法實(shí)施例二的步驟流程圖;
[0093]圖3是本申請(qǐng)一種項(xiàng)目持續(xù)集成的系統(tǒng)實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0094]為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。
[0095]本申請(qǐng)實(shí)施例的核心構(gòu)思之一在于,通過自動(dòng)獲取項(xiàng)目信息,根據(jù)項(xiàng)目信息中的項(xiàng)目ID和一個(gè)或多個(gè)項(xiàng)目分支信息自動(dòng)生成一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息并自動(dòng)構(gòu)建對(duì)應(yīng)的與項(xiàng)目關(guān)聯(lián)的持續(xù)集成任務(wù),在持續(xù)集成任務(wù)構(gòu)建完成后還可以自動(dòng)獲取和持久化構(gòu)建質(zhì)量數(shù)據(jù),自動(dòng)更新和刪除持續(xù)集成任務(wù),使得整個(gè)項(xiàng)目持續(xù)集成過程自動(dòng)化,從而提高了項(xiàng)目持續(xù)集成的效率,降低集成和管理成本。
[0096]參照?qǐng)D1,示出了本申請(qǐng)一種項(xiàng)目持續(xù)集成的方法實(shí)施例一的步驟流程圖,可以包括以下步驟:
[0097]步驟101,獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目ID、一個(gè)或多個(gè)項(xiàng)目分支信息;
[0098]步驟102,依據(jù)所述項(xiàng)目ID以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息;
[0099]步驟103,構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0100]本申請(qǐng)實(shí)施例能夠全自動(dòng)實(shí)現(xiàn)項(xiàng)目的持續(xù)集成,具體而言,本申請(qǐng)實(shí)施例可以自動(dòng)獲取項(xiàng)目信息,根據(jù)項(xiàng)目信息中的項(xiàng)目ID和一個(gè)或多個(gè)項(xiàng)目分支信息自動(dòng)生成一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息并自動(dòng)構(gòu)建對(duì)應(yīng)的持續(xù)集成任務(wù),由于持續(xù)集成任務(wù)配置信息中包含項(xiàng)目ID,因此構(gòu)建的持續(xù)集成任務(wù)可以與項(xiàng)目關(guān)聯(lián)起來,從而方便對(duì)項(xiàng)目的管理,節(jié)省項(xiàng)目特別是大規(guī)模項(xiàng)目的持續(xù)集成和項(xiàng)目管理維護(hù)的成本,提高項(xiàng)目持續(xù)集成的效率以及提聞持續(xù)集成性能。
[0101]參照?qǐng)D2,示出了本申請(qǐng)一種項(xiàng)目持續(xù)集成的方法實(shí)施例二的步驟流程圖,在本申請(qǐng)實(shí)施例中,以互聯(lián)網(wǎng)項(xiàng)目為例進(jìn)行說明,本申請(qǐng)實(shí)施例可以包括以下步驟:
[0102]步驟201,獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目ID、一個(gè)或多個(gè)項(xiàng)目分支信息、項(xiàng)目更新信息、項(xiàng)目結(jié)束信息;
[0103]隨著互聯(lián)網(wǎng)的快速發(fā)展,互聯(lián)網(wǎng)公司均有大規(guī)模的項(xiàng)目進(jìn)行開發(fā),在項(xiàng)目開發(fā)過程中,由于并行開發(fā)的原因,可能出現(xiàn)多人修改一個(gè)代碼模塊的情形,這樣針對(duì)該代碼模塊就有一個(gè)或多個(gè)項(xiàng)目分支信息。具體而言,該代碼模塊可以稱為主干代碼或主干信息(主干信息可以表示如下:svn.a.com/test/trunk),分支是主干代碼復(fù)制出來的一個(gè)副本,例如項(xiàng)目成員A在開發(fā)過程中需要修改主干代碼時(shí),可以復(fù)制一份出來在本地修改,復(fù)制出來的代碼稱為主干代碼的分支(項(xiàng)目成員A的分支信息可以表示如下:svn.a.com/test/branches/172312_l);項(xiàng)目成員B在開發(fā)過程中同樣修改主干代碼的另一個(gè)功能,也可以復(fù)制一份出來本地修改,復(fù)制出來的代碼稱為主干代碼模塊的另一個(gè)分支(項(xiàng)目成員B的分支信息可以表不如下:svn.a.com/test/branches/172312_2);當(dāng)項(xiàng)目成員A開發(fā)修改完后發(fā)布,會(huì)跟主干代碼合并,生成一個(gè)新的版本的主干代碼,項(xiàng)目成員B開發(fā)修改完后同樣跟主干代碼合并,生成另一個(gè)新版本的主干代碼。
[0104]一個(gè)互聯(lián)網(wǎng)項(xiàng)目的項(xiàng)目信息除了包括一個(gè)或多個(gè)項(xiàng)目分支信息(或稱開發(fā)分支信息)外,還可以包括唯一標(biāo)識(shí)該項(xiàng)目的項(xiàng)目ID、開發(fā)成員信息、項(xiàng)目發(fā)布日期等信息。在實(shí)際中,項(xiàng)目信息還可以包括項(xiàng)目更新信息,項(xiàng)目結(jié)束信息等。本申請(qǐng)實(shí)施例的項(xiàng)目信息可以從外部系統(tǒng)發(fā)送的異步消息中獲取,也可以通過其他方式獲取,本申請(qǐng)實(shí)施例對(duì)項(xiàng)目信息的獲取方式不做限制。本申請(qǐng)實(shí)施例通過自動(dòng)獲取項(xiàng)目信息來提高持續(xù)集成的效率,節(jié)約項(xiàng)目持續(xù)集成成本。
[0105]步驟202,依據(jù)所述項(xiàng)目ID以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息;
[0106]具體而言,持續(xù)集成任務(wù)(簡(jiǎn)稱任務(wù))可以為通過開源的持續(xù)集成工具Hudson服務(wù)器創(chuàng)建的任務(wù),用于定時(shí)檢出代碼,執(zhí)行構(gòu)建命令,解析結(jié)果報(bào)告等。在本申請(qǐng)中,可以依據(jù)項(xiàng)目ID以及一個(gè)或多個(gè)項(xiàng)目分支信息自動(dòng)生成與所述一個(gè)或多個(gè)項(xiàng)目分支信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息。
[0107]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,步驟202可以包括如下子步驟:
[0108]子步驟S11,調(diào)用預(yù)設(shè)插件分別將所述項(xiàng)目ID以及每個(gè)項(xiàng)目分支信息替換預(yù)設(shè)模板中對(duì)應(yīng)的項(xiàng)目ID和項(xiàng)目分支信息,生成與所述項(xiàng)目分支信息一一對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息。
[0109]在具體實(shí)現(xiàn)中,由于測(cè)試類型可以包括單元測(cè)試、自動(dòng)化測(cè)試、性能測(cè)試等等不同的類型,本申請(qǐng)實(shí)施例預(yù)設(shè)有針對(duì)不同類型的測(cè)試的模板,不同模板可以區(qū)分創(chuàng)建針對(duì)不同測(cè)試類型的不同的標(biāo)準(zhǔn)化任務(wù),例如對(duì)于單元測(cè)試,預(yù)設(shè)有單元測(cè)試模板等。
[0110]在本申請(qǐng)實(shí)施例中,預(yù)設(shè)插件為本申請(qǐng)實(shí)施例開發(fā)的新插件Hudson Plugin,通過Hudson Plugin可以分別將項(xiàng)目ID以及每個(gè)項(xiàng)目分支信息作為變量,替換預(yù)設(shè)模板中定義的項(xiàng)目ID和項(xiàng)目分支信息,將項(xiàng)目ID、項(xiàng)目分支信息和預(yù)設(shè)模板合并渲染成對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息,即項(xiàng)目ID+分支信息+預(yù)設(shè)模版三者可以生成每個(gè)項(xiàng)目分支信息唯一對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息。
[0111]步驟203,構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù);
[0112]在實(shí)際應(yīng)用中,可以調(diào)用第一預(yù)設(shè)接口構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù),所述第一預(yù)設(shè)接口為Hudson服務(wù)器(簡(jiǎn)稱Hudson)的新建API (Applicat1n Programming Interface,應(yīng)用程序編程接口),依據(jù)每個(gè)項(xiàng)目分支的持續(xù)集成任務(wù)配置信息調(diào)用Hudson新建API可以進(jìn)行對(duì)應(yīng)的持續(xù)集成任務(wù)的自動(dòng)構(gòu)建。
[0113]由于每個(gè)持續(xù)集成任務(wù)配置信息可以由項(xiàng)目ID、項(xiàng)目分支信息以及預(yù)設(shè)模板唯一確定,因此依據(jù)持續(xù)集成任務(wù)配置信息構(gòu)建的對(duì)應(yīng)的持續(xù)集成任務(wù)能夠與項(xiàng)目ID關(guān)聯(lián),并且每個(gè)持續(xù)集成任務(wù)都具有唯一的任務(wù)ID,使得項(xiàng)目ID與任務(wù)ID具有關(guān)聯(lián)關(guān)系,本申請(qǐng)實(shí)施例自動(dòng)將持續(xù)集成任務(wù)與項(xiàng)目關(guān)聯(lián)起來,可以方便對(duì)項(xiàng)目的管理,節(jié)省持續(xù)集成和項(xiàng)目管理維護(hù)的成本。
[0114]應(yīng)用于本申請(qǐng)實(shí)施例,當(dāng)面對(duì)大規(guī)模Hudson持續(xù)集成任務(wù)的管理(如持續(xù)集成任務(wù)配置信息的個(gè)數(shù)大于預(yù)設(shè)閾值,如上萬(wàn)個(gè))時(shí),本申請(qǐng)實(shí)施例還可以將所述多個(gè)持續(xù)集成任務(wù)配置信息輪循分配到預(yù)設(shè)的多臺(tái)持續(xù)集成服務(wù)器(Hudson服務(wù)器)中。具體而言,本申請(qǐng)實(shí)施例在調(diào)用Hudson API之前設(shè)置了一個(gè)輪詢迭代器,輪詢迭代器相當(dāng)于一個(gè)負(fù)載均衡,用于將持續(xù)集成任務(wù)配置輪循分配(如取模分配)到Hudson集群的多臺(tái)Hudson服務(wù)器中。例如,Hudson集群有Hudson 1、Hudson2、Hudson3三臺(tái)Hudson服務(wù)器,共有5個(gè)持續(xù)集成任務(wù)配置信息,則通過輪詢迭代器,將持續(xù)集成任務(wù)配置信息I分配到Hudsonl,持續(xù)集成任務(wù)配置信息2分配到HUdson2,持續(xù)集成任務(wù)配置信息3分配到HUdson3,持續(xù)集成任務(wù)配置信息4分配到Hudsonl,持續(xù)集成任務(wù)配置信息5分配到HUdson2中,使得持續(xù)集成任務(wù)配置信息能夠輪循Hudson集群中的多臺(tái)Hudson服務(wù)器。本申請(qǐng)實(shí)施例通過調(diào)用Hudson集群的方式進(jìn)行持續(xù)集成任務(wù)支撐,線性擴(kuò)展了 Hudson的性能,避免了大規(guī)模Hudson持續(xù)集成任務(wù)管理導(dǎo)致Hudson巖機(jī)的情況。
[0115]步驟204,當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù)并進(jìn)行持久化存儲(chǔ);
[0116]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,步驟204可以包括如下子步驟:
[0117]子步驟S21,當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,調(diào)用預(yù)設(shè)插件獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,所述構(gòu)建信息包括項(xiàng)目ID ;
[0118]在本申請(qǐng)實(shí)施例中,當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,Hudson Plugin可以自動(dòng)從Hudson服務(wù)器中搜集一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,所述構(gòu)建信息可以包括本次構(gòu)建序號(hào)、構(gòu)建開始時(shí)間、構(gòu)建耗時(shí)、構(gòu)建節(jié)點(diǎn)、觸發(fā)方式、構(gòu)建數(shù)據(jù)鏈接、項(xiàng)目ID等信息。
[0119]子步驟S22,調(diào)用第二預(yù)設(shè)接口依據(jù)所述構(gòu)建信息獲取對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù);
[0120]具體而言,在獲取Hudson Plugin以異步消息的形式(HudsonPlugin可以通過使用ActiveMQ (—種開源消息總線),直接將消息發(fā)送到ActiveMQ異步消息隊(duì)列里)發(fā)送的構(gòu)建信息后,解析該構(gòu)建消息,并調(diào)用第二預(yù)設(shè)接口從解析結(jié)果中提取并匯總構(gòu)建對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù),其中,所述第二預(yù)設(shè)接口可以為junit插件API, testNG插件API, FindBug插件API等Hudson開源插件的API,所述構(gòu)建質(zhì)量數(shù)據(jù)可以包括但不限以下內(nèi)容:
[0121]junit:持續(xù)集成用例總數(shù)、成功用例個(gè)數(shù)、失敗用例個(gè)數(shù)、忽略用例個(gè)數(shù)、成功率、每個(gè)用例的詳情、失敗信息(如果失敗)等;
[0122]testNG:持續(xù)集成用例總數(shù)、成功用例個(gè)數(shù)、失敗用例個(gè)數(shù)、忽略用例個(gè)數(shù)、成功率、每個(gè)用例的詳情、失敗信息(如果失敗)等;
[0123]FindBug:代碼掃描風(fēng)險(xiǎn)個(gè)數(shù)(高、正常、低三種級(jí)別的個(gè)數(shù))等。
[0124]子步驟S23,生成所述構(gòu)建質(zhì)量數(shù)據(jù)與項(xiàng)目ID的關(guān)聯(lián)關(guān)系;
[0125]子步驟S24,持久化所述構(gòu)建質(zhì)量數(shù)據(jù)以及所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目ID的關(guān)聯(lián)關(guān)系。
[0126]具體而言,由于Hudson Plugin返回的構(gòu)建信息中包括項(xiàng)目ID,通過建立項(xiàng)目ID與構(gòu)建質(zhì)量數(shù)據(jù)的關(guān)聯(lián)關(guān)系將構(gòu)建質(zhì)量數(shù)據(jù)與項(xiàng)目進(jìn)行關(guān)聯(lián),并將關(guān)聯(lián)后的構(gòu)建質(zhì)量數(shù)據(jù)以及關(guān)聯(lián)關(guān)系持久化保存到數(shù)據(jù)庫(kù)中以便于對(duì)構(gòu)建質(zhì)量數(shù)據(jù)進(jìn)行監(jiān)控。本申請(qǐng)實(shí)施例通過自動(dòng)獲取一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,依據(jù)構(gòu)建信息自動(dòng)匯總構(gòu)建質(zhì)量數(shù)據(jù),可以免去了手工打開一個(gè)或多個(gè)持續(xù)集成任務(wù)并手工匯總構(gòu)建質(zhì)量數(shù)據(jù)的麻煩,節(jié)省了構(gòu)建質(zhì)量數(shù)據(jù)監(jiān)控的成本。
[0127]步驟205,依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù);
[0128]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述步驟205可以包括如下子步驟:
[0129]子步驟S31,依據(jù)所述項(xiàng)目更新信息生成對(duì)應(yīng)的一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息;
[0130]子步驟S32,依據(jù)所述項(xiàng)目ID獲得對(duì)應(yīng)的一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息;
[0131]子步驟S33,將所述一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息與所述一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息進(jìn)行比對(duì),獲得一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的更新結(jié)果;
[0132]子步驟S34,依據(jù)所述更新結(jié)果調(diào)用第三預(yù)設(shè)接口更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0133]在本申請(qǐng)實(shí)施例中,當(dāng)項(xiàng)目信息包括項(xiàng)目更新信息時(shí),可以對(duì)與該項(xiàng)目對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)進(jìn)行更新操作,具體過程可以為:依據(jù)項(xiàng)目更新信息自動(dòng)生成一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息,通過項(xiàng)目ID關(guān)聯(lián)查詢?cè)擁?xiàng)目一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息,兩者對(duì)比更新為項(xiàng)目最新的持續(xù)集成任務(wù)配置信息,并調(diào)用Hudson修改API (即第三預(yù)設(shè)接口)進(jìn)行持續(xù)集成任務(wù)的自動(dòng)更新。
[0134]當(dāng)所述持續(xù)集成任務(wù)更新后,本申請(qǐng)實(shí)施例可以獲取更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù)(具體獲取方法步驟204雷同,此處不再贅述)并進(jìn)行持久化保存,由于本申請(qǐng)實(shí)施例中持續(xù)集成任務(wù)與項(xiàng)目關(guān)聯(lián),通過持續(xù)集成任務(wù)可以獲取對(duì)應(yīng)的項(xiàng)目ID,通過項(xiàng)目ID在數(shù)據(jù)庫(kù)中查詢對(duì)應(yīng)的持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù),并將所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)與更新后的構(gòu)建質(zhì)量數(shù)據(jù)進(jìn)行比較,如果更新前的構(gòu)建質(zhì)量數(shù)據(jù)大于更新后的構(gòu)建質(zhì)量數(shù)據(jù),則代表該次更新的代碼版本的質(zhì)量下降了,可以發(fā)出告警消息提醒項(xiàng)目成員。
[0135]實(shí)際上,每次更新的代碼版本都可以成為新的質(zhì)量標(biāo)準(zhǔn),同時(shí)該代碼版本對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù)也成為新的質(zhì)量標(biāo)準(zhǔn),持續(xù)監(jiān)控每份代碼版本的質(zhì)量趨勢(shì),同時(shí)關(guān)聯(lián)團(tuán)隊(duì)成員,可以分析團(tuán)隊(duì)整體代碼質(zhì)量趨勢(shì),以及團(tuán)隊(duì)間代碼質(zhì)量趨勢(shì)。
[0136]步驟206,依據(jù)所述項(xiàng)目結(jié)束信息調(diào)用第四預(yù)設(shè)接口刪除所述項(xiàng)目ID對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息;
[0137]具體而言,當(dāng)項(xiàng)目信息為項(xiàng)目結(jié)束信息時(shí),說明該項(xiàng)目結(jié)束關(guān)閉,則可以通過項(xiàng)目ID關(guān)聯(lián)查詢到項(xiàng)目已有的持續(xù)集成任務(wù)配置信息,通過調(diào)用Hudson刪除API (即第四預(yù)設(shè)接口)刪除對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息,完成持續(xù)集成任務(wù)的清理。
[0138]由于構(gòu)建質(zhì)量數(shù)據(jù)以代碼的維度做單獨(dú)保存,這樣即使項(xiàng)目關(guān)閉結(jié)束導(dǎo)致持續(xù)集成任務(wù)被刪除,構(gòu)建質(zhì)量數(shù)據(jù)也不會(huì)隨著持續(xù)集成任務(wù)一起被刪除,持久保存的構(gòu)建質(zhì)量數(shù)據(jù)還可以用于項(xiàng)目歷史構(gòu)建數(shù)據(jù)的追溯。
[0139]本申請(qǐng)實(shí)施例可以自動(dòng)獲取項(xiàng)目更新信息以及項(xiàng)目結(jié)束信息,依據(jù)項(xiàng)目更新信息以及項(xiàng)目結(jié)束信息自動(dòng)更新對(duì)應(yīng)的持續(xù)集成任務(wù)或者刪除對(duì)應(yīng)的持續(xù)集成任務(wù),免去人工更新和刪除持續(xù)集成任務(wù)的麻煩,方便對(duì)持續(xù)集成任務(wù)的管理,節(jié)省了持續(xù)集成任務(wù)維護(hù)管理的成本。
[0140]另外,本申請(qǐng)實(shí)施例通過自動(dòng)獲取一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,依據(jù)構(gòu)建信息自動(dòng)匯總構(gòu)建質(zhì)量數(shù)據(jù)并持久化保存構(gòu)建質(zhì)量數(shù)據(jù),這樣可以免去了手工打開一個(gè)或多個(gè)持續(xù)集成任務(wù)并手工匯總構(gòu)建質(zhì)量數(shù)據(jù)的麻煩,節(jié)省了構(gòu)建質(zhì)量數(shù)據(jù)監(jiān)控的成本,并且,即使項(xiàng)目結(jié)束導(dǎo)致持續(xù)集成任務(wù)被刪除時(shí),構(gòu)建質(zhì)量數(shù)據(jù)也不會(huì)隨著持續(xù)集成任務(wù)一起被刪除,持久保存的構(gòu)建質(zhì)量數(shù)據(jù)以便于項(xiàng)目歷史構(gòu)建數(shù)據(jù)的追溯和構(gòu)建質(zhì)量數(shù)據(jù)以及更新代碼版本的質(zhì)量監(jiān)控。
[0141]再次,當(dāng)面對(duì)大規(guī)模Hudson持續(xù)集成任務(wù)的管理時(shí),本申請(qǐng)實(shí)施例在調(diào)用HudsonAPI之前設(shè)置了一個(gè)輪詢迭代器,通過調(diào)用Hudson集群的方式進(jìn)行持續(xù)集成任務(wù)支撐,線性擴(kuò)展了 Hudson的性能,避免了大規(guī)模Hudson持續(xù)集成任務(wù)管理導(dǎo)致Hudson巖機(jī)的情況。
[0142]需要說明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以調(diào)用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)所必須的。
[0143]參照?qǐng)D3,示出了一種項(xiàng)目持續(xù)集成的系統(tǒng)實(shí)施例的結(jié)構(gòu)框圖,具體可以包括以下模塊:
[0144]項(xiàng)目信息獲取模塊301,用于獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目ID、一個(gè)或多個(gè)項(xiàng)目分支信息;
[0145]配置信息生成模塊302,用于依據(jù)所述項(xiàng)目ID以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息;
[0146]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述配置信息生成模塊302可以包括如下子模塊:
[0147]持續(xù)集成任務(wù)配置信息生成子模塊,用于調(diào)用預(yù)設(shè)插件分別將所述項(xiàng)目ID,每個(gè)項(xiàng)目分支信息替換預(yù)設(shè)模板中對(duì)應(yīng)的項(xiàng)目ID和項(xiàng)目分支信息,生成與所述項(xiàng)目分支信息一一對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息。
[0148]任務(wù)構(gòu)建模塊303,用于構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0149]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,可以調(diào)用第一預(yù)設(shè)接口構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0150]優(yōu)選地,本申請(qǐng)實(shí)施例還可以包括:
[0151]第一構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊,用于在所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0152]第一構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊,用于持久化所述構(gòu)建質(zhì)量數(shù)據(jù)。
[0153]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述第一構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊包括:
[0154]構(gòu)建信息獲取子模塊,用于在所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,調(diào)用預(yù)設(shè)插件獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,所述構(gòu)建信息包括項(xiàng)目ID ;
[0155]構(gòu)建質(zhì)量數(shù)據(jù)獲取子模塊,用于調(diào)用第二預(yù)設(shè)接口依據(jù)所述構(gòu)建信息獲取對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù);
[0156]關(guān)聯(lián)關(guān)系生成子模塊,用于生成所述構(gòu)建質(zhì)量數(shù)據(jù)與項(xiàng)目ID的關(guān)聯(lián)關(guān)系;
[0157]所述構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊可以包括如下子模塊:
[0158]關(guān)聯(lián)子模塊,用于持久化所述構(gòu)建質(zhì)量數(shù)據(jù)以及所述構(gòu)建質(zhì)量數(shù)據(jù)與項(xiàng)目ID的關(guān)聯(lián)關(guān)系。
[0159]優(yōu)選地,所述項(xiàng)目信息包括項(xiàng)目更新信息,本申請(qǐng)實(shí)施例還可以包括:
[0160]更新模塊,用于依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0161]在本申請(qǐng)的一種優(yōu)選實(shí)施例中,所述更新模塊可以包括如下子模塊:
[0162]最新配置信息獲取子模塊,用于依據(jù)所述項(xiàng)目更新信息生成一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息;
[0163]已有配置信息獲取子模塊,用于依據(jù)所述項(xiàng)目ID獲得一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息;
[0164]比對(duì)子模塊,用于將所述一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息與所述一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息進(jìn)行比對(duì),獲得一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的更新結(jié)果;
[0165]持續(xù)集成任務(wù)更新子模塊,用于依據(jù)所述更新結(jié)果調(diào)用第三預(yù)設(shè)接口更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
[0166]優(yōu)選地,本申請(qǐng)實(shí)施例還可以包括:
[0167]第二構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊,用于獲取所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0168]第二構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊,用于持久化所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù);
[0169]構(gòu)建質(zhì)量數(shù)據(jù)查找模塊,用于依據(jù)項(xiàng)目ID查找所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù);
[0170]質(zhì)量數(shù)據(jù)比較模塊,用于將所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)與更新后的構(gòu)建質(zhì)量數(shù)據(jù)進(jìn)行比較;
[0171]告警模塊,用于在所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)大于更新后的構(gòu)建質(zhì)量數(shù)據(jù)時(shí),發(fā)出告警消息。
[0172]優(yōu)選地,所述項(xiàng)目信息包括項(xiàng)目結(jié)束信息,本申請(qǐng)實(shí)施例還可以包括:
[0173]配置信息刪除模塊,用于依據(jù)所述項(xiàng)目結(jié)束信息調(diào)用第四預(yù)設(shè)接口刪除所述項(xiàng)目ID對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息。
[0174]優(yōu)選地,本申請(qǐng)實(shí)施例還可以包括:
[0175]配置信息輪循分配模塊,用于在所述持續(xù)集成任務(wù)配置信息的個(gè)數(shù)大于預(yù)設(shè)閾值時(shí),將所述持續(xù)集成任務(wù)配置信息輪循分配到預(yù)設(shè)的多臺(tái)持續(xù)集成服務(wù)器中。
[0176]由于上述系統(tǒng)實(shí)施例基本相應(yīng)于前述方法實(shí)施例,故本實(shí)施例的描述中未詳盡之處,可以參見前述方法實(shí)施例中的相關(guān)說明,在此就不贅述了。
[0177]本說明書中的各個(gè)實(shí)施例均調(diào)用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
[0178]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可調(diào)用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可調(diào)用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0179]本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0180]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0181]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0182]盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
[0183]最后,還需要說明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0184]以上對(duì)本申請(qǐng)所提供的一種項(xiàng)目持續(xù)集成的方法和系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
【權(quán)利要求】
1.一種項(xiàng)目持續(xù)集成的方法,其特征在于,包括: 獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目ID、一個(gè)或多個(gè)項(xiàng)目分支信息; 依據(jù)所述項(xiàng)目ID以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息; 構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述依據(jù)所述項(xiàng)目ID以及一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的步驟包括: 調(diào)用預(yù)設(shè)插件分別將所述項(xiàng)目ID,每個(gè)項(xiàng)目分支信息替換預(yù)設(shè)模板中對(duì)應(yīng)的項(xiàng)目ID和項(xiàng)目分支信息,生成與所述項(xiàng)目分支信息一一對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,調(diào)用第一預(yù)設(shè)接口構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù); 持久化所述構(gòu)建質(zhì)量數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù)的步驟包括: 當(dāng)所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,調(diào)用預(yù)設(shè)插件獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,所述構(gòu)建信息包括項(xiàng)目ID ; 調(diào)用第二預(yù)設(shè)接口依據(jù)所述構(gòu)建信息獲取對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù); 生成所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目ID的關(guān)聯(lián)關(guān)系; 所述持久化所述構(gòu)建質(zhì)量數(shù)據(jù)的步驟包括: 持久化所述構(gòu)建質(zhì)量數(shù)據(jù)以及所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目ID的關(guān)聯(lián)關(guān)系。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述項(xiàng)目信息包括項(xiàng)目更新信息,所述方法還包括: 依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)的步驟包括: 依據(jù)所述項(xiàng)目更新信息生成對(duì)應(yīng)的一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息; 依據(jù)所述項(xiàng)目ID獲得對(duì)應(yīng)的一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息; 將所述一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息與所述一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息進(jìn)行比對(duì),獲得一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的更新結(jié)果; 依據(jù)所述更新結(jié)果調(diào)用第三預(yù)設(shè)接口更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,還包括: 獲取所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù); 持久化所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù); 依據(jù)項(xiàng)目ID查找所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù); 將所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)與更新后的構(gòu)建質(zhì)量數(shù)據(jù)進(jìn)行比較; 若所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)大于更新后的構(gòu)建質(zhì)量數(shù)據(jù),發(fā)出告警消
肩、0
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述項(xiàng)目信息包括項(xiàng)目結(jié)束信息,所述方法還包括: 依據(jù)所述項(xiàng)目結(jié)束信息調(diào)用第四預(yù)設(shè)接口刪除所述項(xiàng)目10對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 當(dāng)所述持續(xù)集成任務(wù)配置信息的個(gè)數(shù)大于預(yù)設(shè)閾值時(shí),將所述持續(xù)集成任務(wù)配置信息輪循分配到預(yù)設(shè)的多臺(tái)持續(xù)集成服務(wù)器中。
11.一種項(xiàng)目持續(xù)集成的系統(tǒng),其特征在于,包括: 項(xiàng)目信息獲取模塊,用于獲取項(xiàng)目信息,所述項(xiàng)目信息包括項(xiàng)目10、一個(gè)或多個(gè)項(xiàng)目分支信息; 配置信息生成模塊,用于依據(jù)所述項(xiàng)目10以及所述一個(gè)或多個(gè)項(xiàng)目分支信息,生成對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息; 任務(wù)構(gòu)建模塊,用于構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述配置信息生成模塊包括: 持續(xù)集成任務(wù)配置信息生成子模塊,用于調(diào)用預(yù)設(shè)插件分別將所述項(xiàng)目10,每個(gè)項(xiàng)目分支信息替換預(yù)設(shè)模板中對(duì)應(yīng)的項(xiàng)目10和項(xiàng)目分支信息,生成與所述項(xiàng)目分支信息一一對(duì)應(yīng)的持續(xù)集成任務(wù)配置信息。
13.根據(jù)權(quán)利要求11或12所述的系統(tǒng),其特征在于,調(diào)用第一預(yù)設(shè)接口構(gòu)建與所述一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
14.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,還包括: 第一構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊,用于在所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù); 第一構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊,用于持久化所述構(gòu)建質(zhì)量數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述第一構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊包括: 構(gòu)建信息獲取子模塊,用于在所述一個(gè)或多個(gè)持續(xù)集成任務(wù)構(gòu)建完成后,調(diào)用預(yù)設(shè)插件獲取所述一個(gè)或多個(gè)持續(xù)集成任務(wù)的構(gòu)建信息,所述構(gòu)建信息包括項(xiàng)目10 ; 構(gòu)建質(zhì)量數(shù)據(jù)獲取子模塊,用于調(diào)用第二預(yù)設(shè)接口依據(jù)所述構(gòu)建信息獲取對(duì)應(yīng)的構(gòu)建質(zhì)量數(shù)據(jù); 關(guān)聯(lián)關(guān)系生成子模塊,用于生成所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目10的關(guān)聯(lián)關(guān)系; 所述構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊包括: 關(guān)聯(lián)子模塊,用于持久化所述構(gòu)建質(zhì)量數(shù)據(jù)以及所述構(gòu)建質(zhì)量數(shù)據(jù)與所述項(xiàng)目10的關(guān)聯(lián)關(guān)系。
16.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述項(xiàng)目信息包括項(xiàng)目更新信息,所述系統(tǒng)還包括: 更新模塊,用于依據(jù)所述項(xiàng)目更新信息更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述更新模塊包括: 最新配置信息獲取子模塊,用于依據(jù)所述項(xiàng)目更新信息生成對(duì)應(yīng)的一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息; 已有配置信息獲取子模塊,用于依據(jù)所述項(xiàng)目ID獲得對(duì)應(yīng)的一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息; 比對(duì)子模塊,用于將所述一個(gè)或多個(gè)最新的持續(xù)集成任務(wù)配置信息與所述一個(gè)或多個(gè)已有的持續(xù)集成任務(wù)配置信息進(jìn)行比對(duì),獲得一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息的更新結(jié)果; 持續(xù)集成任務(wù)更新子模塊,用于依據(jù)所述更新結(jié)果調(diào)用第三預(yù)設(shè)接口更新對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)。
18.根據(jù)權(quán)利要求16或17所述的系統(tǒng),其特征在于,還包括: 第二構(gòu)建質(zhì)量數(shù)據(jù)獲取模塊,用于獲取所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù); 第二構(gòu)建質(zhì)量數(shù)據(jù)持久化模塊,用于持久化所述更新后的持續(xù)集成任務(wù)的構(gòu)建質(zhì)量數(shù)據(jù); 構(gòu)建質(zhì)量數(shù)據(jù)查找模塊,用于依據(jù)項(xiàng)目ID查找所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù); 質(zhì)量數(shù)據(jù)比較模塊,用于將所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)與更新后的構(gòu)建質(zhì)量數(shù)據(jù)進(jìn)行比較; 告警模塊,用于在所述持續(xù)集成任務(wù)更新前的構(gòu)建質(zhì)量數(shù)據(jù)大于更新后的構(gòu)建質(zhì)量數(shù)據(jù)時(shí),發(fā)出告警消息。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述項(xiàng)目信息包括項(xiàng)目結(jié)束信息,所述系統(tǒng)還包括: 配置信息刪除模塊,用于依據(jù)所述項(xiàng)目結(jié)束信息調(diào)用第四預(yù)設(shè)接口刪除所述項(xiàng)目ID對(duì)應(yīng)的一個(gè)或多個(gè)持續(xù)集成任務(wù)配置信息。
20.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,還包括: 配置信息輪循分配模塊,用于在所述持續(xù)集成任務(wù)配置信息的個(gè)數(shù)大于預(yù)設(shè)閾值時(shí),將所述持續(xù)集成任務(wù)配置信息輪循分配到預(yù)設(shè)的多臺(tái)持續(xù)集成服務(wù)器中。
【文檔編號(hào)】G06F9/44GK104423960SQ201310409516
【公開日】2015年3月18日 申請(qǐng)日期:2013年9月10日 優(yōu)先權(quán)日:2013年9月10日
【發(fā)明者】周志偉, 魯小川, 孫琛, 金靈杰 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司