日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

teamcity_TeamCity构建依赖项

發(fā)布時(shí)間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 teamcity_TeamCity构建依赖项 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

teamcity

介紹

構(gòu)建依賴關(guān)系的主題既非瑣碎的,也非次要的。 各種構(gòu)建工具從不同的角度處理此主題,從而提供了各種解決方案,每種解決方案都有其優(yōu)點(diǎn)和缺點(diǎn)。

熟悉發(fā)行版和快照依賴關(guān)系的Maven和Gradle用戶可能不了解TeamCity快照依賴關(guān)系,或者假定他們與Maven相關(guān)(這是不正確的)。 熟悉工件和快照相關(guān)性的TeamCity用戶可能不知道,除了TeamCity提供的功能之外,添加Artifactory插件還使他們能夠使用工件并構(gòu)建相關(guān)性。

上面提到的某些名稱似乎建立得不夠充分,而其他一些則可能需要討論其使用方式。 考慮到這一點(diǎn),我決定在自己的博客文章中探討每種解決方案,并設(shè)定了提供足夠信息的目標(biāo),以便人們可以選擇最有效的方法。

第一篇文章探討了 Maven快照和發(fā)行版的依賴關(guān)系。 這是第二篇文章,涵蓋了TeamCity提供的工件和快照依賴關(guān)系,而第三部分也是最后一部分將介紹TeamCity Artifactory插件提供的工件和構(gòu)建依賴關(guān)系。

非Maven依賴項(xiàng)

雖然基于Java的Maven依賴關(guān)系管理和工件存儲(chǔ)庫(kù)在Java中非常普遍并且分布廣泛,但是在某些情況下,您仍然可能發(fā)現(xiàn)它們不足或不足以滿足您的需求。 首先,您可能沒有使用Java進(jìn)行開發(fā),或者您的構(gòu)建工具可能未提供與Maven存儲(chǔ)庫(kù)的內(nèi)置集成,就像Ant (或它的Gant和NAnt衍生產(chǎn)品), SCons , Rake或MSBuild一樣 。 其次,快照Maven依賴項(xiàng)提供了自己的挑戰(zhàn),這在上一篇博客文章中已涉及到,這使得很難確保在構(gòu)建鏈中使用正確的快照依賴項(xiàng)。

為了解決這些情況,TeamCity提供了兩種方法來連接相關(guān)的構(gòu)建配置及其結(jié)果: 工件和快照相關(guān)性。

TeamCity神器依賴項(xiàng)

TeamCity中工件依賴的想法非常簡(jiǎn)單:在當(dāng)前版本開始之前,下載另一版本生成的工件。 將工件下載到指定的文件夾(默認(rèn)情況下為checkout目錄)之后,您的構(gòu)建腳本可以使用它們來實(shí)現(xiàn)其目標(biāo)。 您可以在TeamCity文檔中找到配置詳細(xì)信息。

自然,此方案不適用于具有自動(dòng)依賴項(xiàng)管理的構(gòu)建工具,但是它與接受或期望本地路徑(相對(duì)于checkout目錄)的構(gòu)建或shell腳本一起使用時(shí)效果很好。 請(qǐng)注意,復(fù)制不僅適用于生成的構(gòu)建二進(jìn)制文件,而且適用于任何類型的二進(jìn)制文件或文本文件,例如上面的屏幕截圖所示的TeamCity覆蓋率報(bào)告。

關(guān)于指定工件依賴項(xiàng)有一個(gè)重要的細(xì)節(jié),那就是“從中獲取工件”配置,在此配置中,您可以指定應(yīng)從中獲取文件的構(gòu)建類型。 該字段的可能值為“上次成功”,“完成”,“固定”或“標(biāo)記構(gòu)建”,以及構(gòu)建號(hào)或“來自同一鏈的構(gòu)建”。 盡管大多數(shù)值對(duì)于理解“上一次成功構(gòu)建”為默認(rèn)且通常合適的選項(xiàng)應(yīng)該是微不足道的,但“相同鏈”構(gòu)建的定義與TeamCity 快照依賴關(guān)系直接相關(guān)。

TeamCity快照依賴項(xiàng)

想象一下一個(gè)整體的多步驟構(gòu)建過程(構(gòu)建,測(cè)試,打包,部署),您決定將其拆分為多個(gè)較小的構(gòu)建,依次調(diào)用它們,形成執(zhí)行鏈。 這樣做可以使每個(gè)鏈步驟獨(dú)立配置或觸發(fā),并并行運(yùn)行某些步驟,以加快流程速度(例如執(zhí)行測(cè)試或構(gòu)建獨(dú)立的組件)。 最重要的是,它使整體維護(hù)非常容易。 但是,在這樣做的同時(shí),您需要確保每個(gè)鏈?zhǔn)讲襟E都使用從VCS提取的相同的一致源集,即使在鏈?zhǔn)讲襟E運(yùn)行的同時(shí)進(jìn)行了新的提交。 這就是TeamCity 快照依賴項(xiàng)的目的:它們將多個(gè)構(gòu)建配置連接到稱為執(zhí)行鏈的單個(gè)執(zhí)行鏈中 ,并且每個(gè)步驟都使用相同的源集 ,而與VCS更新無(wú)關(guān)。 請(qǐng)注意,TeamCity使用術(shù)語(yǔ)“快照依賴關(guān)系”可能會(huì)使熟悉Maven快照依賴關(guān)系的人們感到困惑,這是兩個(gè)不相關(guān)的概念。

快照依賴項(xiàng)的配置類似于工件依賴項(xiàng)。 您可以在TeamCity文檔中找到配置詳細(xì)信息。

一起使用工件和快照依賴項(xiàng)

如果適用,建議定義構(gòu)建配置之間的兩種依賴關(guān)系,因?yàn)檫@不僅可以確保在整個(gè)鏈步驟中使用一致的源集,而且還可以確保生成的工件始終如一。 現(xiàn)在,上面提到的工件依賴項(xiàng)中的“從同一鏈構(gòu)建”的定義變得很清楚,因?yàn)檫@是此方案中唯一有意義的選項(xiàng)。

從某種意義上講,您可以考慮在獲取第一個(gè)源的“快照”之后,構(gòu)建鏈步驟與VCS更新隔離地運(yùn)行。 鏈工件可以從相同的來源重新創(chuàng)建,也可以通過與工件相關(guān)的鏈步傳遞。 這使得鏈接步驟一致,可重現(xiàn)并且始終是最新的(當(dāng)應(yīng)用于使用鏈接工件時(shí)),而使用Maven快照依賴項(xiàng)則無(wú)法輕松實(shí)現(xiàn)。

TeamCity 7.0中的構(gòu)建鏈可見性

通過為構(gòu)建鏈提供新的UI,使構(gòu)建鏈的步驟可見并可以重新運(yùn)行, TeamCity 7.0將構(gòu)建鏈的概念提升到了一個(gè)全新的水平。 定義快照依賴關(guān)系后,新的“構(gòu)建鏈”選項(xiàng)卡將出現(xiàn)在項(xiàng)目報(bào)告中,以可視化方式表示所有相關(guān)的構(gòu)建鏈,并提供一種方法,使用原始提取的同一組資源手動(dòng)重新運(yùn)行任何鏈步驟。

建立鏈觸發(fā)

將構(gòu)建配置與快照相關(guān)性相關(guān)聯(lián),因此將其構(gòu)建分組到構(gòu)建鏈中,不僅使它們?cè)谑褂玫脑捶矫娓右恢?#xff0c;還影響將構(gòu)建添加到構(gòu)建隊(duì)列的方式:觸發(fā)某個(gè)鏈步驟后,默認(rèn)行為是除了最初觸發(fā)的步驟之外,還添加所有前面的鏈?zhǔn)讲襟E,并保持其各自的順序。 為了更加清楚,讓我重復(fù)一遍: 觸發(fā)某些鏈配置會(huì)在構(gòu)建隊(duì)列中添加之前的配置(在其左側(cè)),而不是后續(xù)的配置(在其右側(cè)) ,盡管乍一看似乎是違反直覺的。 想法是標(biāo)記鏈執(zhí)行停止的位置,這恰好是最初觸發(fā)的配置。 它成為最后的執(zhí)行步驟。

要在鏈配置中發(fā)現(xiàn)VCS更改時(shí)觸發(fā)后續(xù)鏈步驟,您可以將帶有“快照依賴項(xiàng)更改觸發(fā)”選項(xiàng)的VCS觸發(fā)器添加到配置中,這將是最后一個(gè)執(zhí)行步驟。 然后,只要更新任何前面的鏈?zhǔn)讲襟E,就會(huì)觸發(fā)此配置,從而調(diào)度整個(gè)鏈?zhǔn)綀?zhí)行。

考慮到此行為,因此,您需要確定哪些配置是自動(dòng)觸發(fā)的,哪些應(yīng)該手動(dòng)運(yùn)行。 通常,可以通過VCS觸發(fā)器自動(dòng)觸發(fā)對(duì)外部環(huán)境沒有影響的較早的鏈?zhǔn)讲襟E,但是在人工核實(shí)了先前的鏈?zhǔn)浇Y(jié)果之后,會(huì)手動(dòng)調(diào)用最終的鏈?zhǔn)讲襟E(可能會(huì)修改外部系統(tǒng))。 手動(dòng)運(yùn)行最終鏈?zhǔn)讲襟E的過程通常稱為“促進(jìn)”先前完成的構(gòu)建。

示例構(gòu)建鏈:編譯,測(cè)試,部署

想象一下連接到構(gòu)建鏈中的三個(gè)示例構(gòu)建配置: "Compile""Test""Deploy""Deploy"是依賴于"Test"的快照,快照依賴于"Compile"

在此示例場(chǎng)景中,遵循上面給出的建議,將自動(dòng)觸發(fā)"Compile""Test"配置,而手動(dòng)觸發(fā)"Deploy""Compile"配置中的VCS更改僅觸發(fā)該鏈?zhǔn)讲襟E的執(zhí)行,而"Test"配置中的VCS更改則觸發(fā)"Compile""Test"執(zhí)行(按該順序)。

"Compile"配置添加到構(gòu)建隊(duì)列后,其源時(shí)間戳記將記錄在服務(wù)器上,以用于所有后續(xù)鏈?zhǔn)讲襟E。 如果將任何鏈?zhǔn)讲襟E連接到不同的VCS根,則其源也將根據(jù)相同的時(shí)間戳拉出。

促進(jìn)完成的構(gòu)建

一旦自動(dòng)鏈執(zhí)行停止(運(yùn)行"Test" ),您可以通過單擊未觸發(fā)的"Deploy"配置上的相應(yīng)“運(yùn)行”按鈕來繼續(xù)執(zhí)行(請(qǐng)參見上面的構(gòu)建鏈屏幕截圖)。 另外,也可以通過其“構(gòu)建操作”促進(jìn)完成的"Test"構(gòu)建,并調(diào)用依賴于快照的配置-在這種情況下為"Deploy"配置。

摘要

本文概述了TeamCity工件和快照依賴性,構(gòu)建鏈,如何觸發(fā)其步驟以及如何促進(jìn)完成的構(gòu)建。 我希望您現(xiàn)在除了了解Maven之類的構(gòu)建工具所提供的依賴關(guān)系之外,還應(yīng)該了解其工作原理以及何時(shí)(或不適合)何時(shí)使用TeamCity構(gòu)建依賴關(guān)系。

請(qǐng)有關(guān)此主題的更多信息,請(qǐng)參閱TeamCity文檔:

  • 依賴構(gòu)建
  • 建立鏈

本系列的最后一篇博文將揭示如何使用TeamCity Artifactory插件來實(shí)現(xiàn)類似于基于Maven的依賴管理的項(xiàng)目構(gòu)建鏈的行為。 敬請(qǐng)關(guān)注!

參考:來自Goldman ++博客的JCG合作伙伴 Evgeny Goldin的TeamCity構(gòu)建依賴項(xiàng) 。


翻譯自: https://www.javacodegeeks.com/2012/04/teamcity-build-dependencies.html

teamcity

總結(jié)

以上是生活随笔為你收集整理的teamcity_TeamCity构建依赖项的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。