溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

TeamCity : Build 基本配置

發(fā)布時(shí)間:2020-09-16 05:29:17 來源:網(wǎng)絡(luò) 閱讀:697 作者:llljj96 欄目:網(wǎng)絡(luò)安全

在 TeamCity 中創(chuàng)建了一個(gè)項(xiàng)目 HelloApp,并在這個(gè)項(xiàng)目中創(chuàng)建了一個(gè)名為 HelloAppDailyBuild 的Build 用來編譯 demo 程序。本文我們將詳細(xì)介紹 Build 中的基本配置。下圖是 Build 基本配置的概覽:

TeamCity : Build 基本配置

Name

Build 配置的名稱。

Build configuration ID

Build configuration ID: 在系統(tǒng)中標(biāo)識該 Build 配置,自動(dòng)生成的規(guī)則是:項(xiàng)目名稱 +下劃線 + build 配置名稱。
比如要導(dǎo)航到一個(gè) build 配置的頁面, URL為:
http://xxxx/viewType.html?buildTypeId=HelloApp_HelloAppDailyBuild
最后一個(gè)參數(shù)就是 Build configuration ID。這個(gè)ID非常重要,我們使用 urls, REST API 向服務(wù)器請求信息時(shí),都要使用它。在服務(wù)器上,它還作為一些配置文件的目錄名稱。

Description

作為描述信息,Description 會(huì)顯示在 build name 的后面:

TeamCity : Build 基本配置

Build number format

我們可以為 build number 指定一個(gè)格式。不同的用戶總是有不同的需求,如果您想要 build number 顯示為一個(gè)自增的整數(shù),就可以把 build number 指定為 %build.counter%。build.counter 是由 TeamCity 來維護(hù)的,您也可以手動(dòng)指定它。設(shè)置為 %build.counter% 的 build number format 看起來是這個(gè)樣子:

TeamCity : Build 基本配置

我們還可以指定為:
%build.vcs.number.<VCS_root_name>%
或者
%property.name%
這些都是 TeamCity 維護(hù)的一些變量。一個(gè)完整的例子看起來像這個(gè)樣子 :
1.0.%build.counter%.%build.vcs.number.My_Project_svn%
注意,最好是保持 build number 的唯一性。所以應(yīng)該把 build counter 加入到 build number format 中。
如果想用日期做 build number 該怎么辦,如果還要顯示 build 在每天中的序號呢?遺憾的是默認(rèn)情況下我們沒辦法完成這樣的需求,但是 TeamCity 提供了很好的擴(kuò)展能力。我們可以寫一個(gè)插件了實(shí)現(xiàn)這樣的功能:

TeamCity : Build 基本配置

Build counter

Build 次數(shù)的計(jì)數(shù)器,您也可以手動(dòng)設(shè)置它。但您做好清楚的知道自己在干什么。

Artifact paths

收集 build 產(chǎn)物需要通過指定 Artifact paths 來完成。我們可以把產(chǎn)物的路徑分為兩類:準(zhǔn)確的路徑和通過模式匹配獲得的路徑。

準(zhǔn)確的路徑

如果您知道 build 產(chǎn)物的準(zhǔn)確路徑,就可以直接寫產(chǎn)物的路徑。
還可以通過 teamcity 的工具進(jìn)行選擇:

TeamCity : Build 基本配置

通過模式匹配來指定路徑

可以通過新行或者逗號來分隔不同的模式匹配規(guī)則如:

[+:]source [=> target]

這個(gè)規(guī)則把滿足條件的文件加入到產(chǎn)物中。

-:source [=> target]

這條規(guī)則則是把滿足條件的文件從產(chǎn)物中移除。 

方括號圍起來的參數(shù)是可選的。規(guī)則根據(jù)右面的部分進(jìn)行分組,根據(jù)出現(xiàn)的順序依次起作用,如:

+:**/* => target_directory
-:**/folder1 => target_directory

表示除了 folder1 下的內(nèi)容,把其他所有內(nèi)容加入到產(chǎn)物中。

下面是詳細(xì)的格式 :

file_name|directory_name|wildcard [ => target_directory|target_archive ]

file_name 指定產(chǎn)物文件相對于 build checkout directory 的路徑。
directory_name 指定某個(gè)目錄相對于 build checkout directory 的路徑。目錄下的所有文件和子目錄都會(huì)被作為產(chǎn)物。產(chǎn)物中文件在目錄中的結(jié)構(gòu)保持不變。但是目錄 directory_name 本身并不包含在產(chǎn)物中。
wildcard(通配符) 收集符合 Ant-like 的通配符匹配的文件作為產(chǎn)物 (僅支持 "*" 和 "**")。通配符要出現(xiàn)在相對于 build checkout directory 的路徑中。符合條件的文件在產(chǎn)物中的路徑會(huì)保持原來的路徑結(jié)構(gòu)。
還可以在收集產(chǎn)物的規(guī)則中使用參數(shù)。參數(shù)可以是 TeamCity 內(nèi)置的變量也可以是用戶自己定義的變量。

=> 后面的部分是可選的。=> 后面跟的目錄名可以用來指定產(chǎn)物文件所存放的目錄。
如果沒有設(shè)置目標(biāo)目錄,那么產(chǎn)物會(huì)被放置在 build 產(chǎn)物的根目錄下。
注意,目標(biāo)路徑不能是絕對路徑。非相對的路徑會(huì)在build時(shí)產(chǎn)生錯(cuò)誤。
target_directory 收集的產(chǎn)物文件會(huì)被放到這個(gè)目錄下。
target_archive 把產(chǎn)物打包后歸檔文件的路徑。支持的歸檔文件格 式有 .zip,.7z,.jar,.tar.gz,.tgz。

下面是一些常用的例子:

install.zip
// 把 build checkout directory 目錄下的所有文件放入壓縮包 install.zip 作為產(chǎn)物。
dist
// 收集 build checkout directory\dist 目錄下的所有內(nèi)容作為產(chǎn)物。
target/*.jar
// 收集 build checkout directory\target 目錄下的所有 jar 文件作為產(chǎn)物。
target/**/*.txt => docs
// 收集 build checkout directory\target 目錄及其子目錄下所有的 .txt 文件 作為產(chǎn)物。并把這些文件全部放入目標(biāo)目錄 docs 中。
reports => reports, distrib/idea*.zip
// 把 build checkout directory\reports 目錄中的內(nèi)容放入產(chǎn)物中的 reports 目錄下。
// 把 build checkout directory\distrib 目錄下符合 idea*.zip 條件的文件放到產(chǎn)物的根目錄下。
// 我們還可以指定產(chǎn)物在 zip 歸檔文件中的位置,如:
results\result1\Dir1\Dir2 => archive.zip!results/result1/Dir1
// Dir2 目錄中的內(nèi)容將添加到歸檔文件中的 results/result1/Dir1 目錄下。
// 產(chǎn)物中相同的歸檔文件名稱可以被使用多次,如:
+:*/*.html => report.zip 
+:*/*.css => report.zip!/css/
-:*/*.txt => report.zip

Build options

Build options 為我們提供了另外一些功能。

Hanging Build Detection

探測掛起的 build,TeamCity 能夠探測可能是被掛起的 builds。
什么樣的 build 被認(rèn)為是被掛起的 build 呢?當(dāng)一個(gè) build 的執(zhí)行時(shí)間明顯的超過了系統(tǒng)估計(jì)的平均執(zhí)行時(shí)間,并且在超過預(yù)估時(shí)間后 build 也沒有發(fā)出過消息,此時(shí)就認(rèn)為 build 處于掛起狀態(tài)。TeamCity 會(huì)把已經(jīng)運(yùn)行過的 build 時(shí)間取平均值,從而估算出平均運(yùn)行時(shí)間。當(dāng)我們訂閱通知時(shí) TeamCity 系統(tǒng)的通知時(shí),可以把 掛起作為一個(gè)條件。這樣當(dāng)掛起發(fā)生時(shí)我們就會(huì)收到通知。

Allow Triggering Personal Builds

這個(gè)功能允許用戶使用未提交到代碼庫的代碼做build,但是需要開發(fā)工具的支持。

Enable Status Widget

啟用狀態(tài)部件,這個(gè)選項(xiàng)讓我們可以獲得最后一次 build 的信息,而不需要要使用認(rèn)證信息。需要注意的是,除了最后一次 build 的信息,我們其實(shí)還可以獲得任何一次 build 的信息。但是僅限于獲得 success/failure/internal error/cancelled 這幾種信息。
我們可以通過不同的方式來獲得信息,比如 HTML status widget 和 REST API。
下面我們看一下如何把 Build 信息嵌入到您的網(wǎng)頁上。
先啟用 “enable status widget”:

TeamCity : Build 基本配置

創(chuàng)建一個(gè) html 網(wǎng)頁,在 head 中加入:

<style type="text/css">@import "<TeamCity_server_URL>/css/status/externalStatus.css";</style>

在 body 中加入:

<script type="text/javascript" src="<TeamCity_server_URL>/externalStatus.html?js=1&buildTypeId=xxx"></script>

請用您的 TeamCity 服務(wù)器地址更換上面字符串中的占位符,并且用有意義的 Build configuration ID 替換 xxx。然后在瀏覽器中打開看看:

TeamCity : Build 基本配置

Limit Number of Simultaneously Running Builds

設(shè)置一個(gè) build 可以同時(shí)運(yùn)行的最大數(shù)。
主要是防止所有的 build agent 同時(shí)被一個(gè) build 全部用光。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c te
AI