TeamCity : Build 基本配置
前文中我们在 TeamCity 中创建了一个项目 HelloApp,并在这个项目中创建了一个名为 HelloAppDailyBuild 的Build 用来编译 demo 程序。本文我们将详细介绍 Build 中的基本配置。下图是 Build 基本配置的概览:
Name
Build 配置的名称。
Build configuration ID
Build configuration ID: 在系统中标识该 Build 配置,自动生成的规则是:项目名称 +下划线 + build 配置名称。
比如要导航到一个 build 配置的页面, URL为:
http://xxxx/viewType.html?buildTypeId=HelloApp_HelloAppDailyBuild
最后一个参数就是 Build configuration ID。这个ID非常重要,我们使用 urls, REST API 向服务器请求信息时,都要使用它。在服务器上,它还作为一些配置文件的目录名称。
Description
作为描述信息,Description 会显示在 build name 的后面:
Build number format
我们可以为 build number 指定一个格式。不同的用户总是有不同的需求,如果您想要 build number 显示为一个自增的整数,就可以把 build number 指定为 %build.counter%。build.counter 是由 TeamCity 来维护的,您也可以手动指定它。设置为 %build.counter% 的 build number format 看起来是这个样子:
我们还可以指定为:
%build.vcs.number.<VCS_root_name>%
或者
%property.name%
这些都是 TeamCity 维护的一些变量。一个完整的例子看起来像这个样子 :
1.0.%build.counter%.%build.vcs.number.My_Project_svn%
注意,最好是保持 build number 的唯一性。所以应该把 build counter 加入到 build number format 中。
如果想用日期做 build number 该怎么办,如果还要显示 build 在每天中的序号呢?遗憾的是默认情况下我们没办法完成这样的需求,但是 TeamCity 提供了很好的扩展能力。我们可以写一个插件了实现这样的功能:
Build counter
Build 次数的计数器,您也可以手动设置它。但您做好清楚的知道自己在干什么。
Artifact paths
收集 build 产物需要通过指定 Artifact paths 来完成。我们可以把产物的路径分为两类:准确的路径和通过模式匹配获得的路径。
准确的路径
如果您知道 build 产物的准确路径,就可以直接写产物的路径。
还可以通过 teamcity 的工具进行选择:
通过模式匹配来指定路径
可以通过新行或者逗号来分隔不同的模式匹配规则如:
[+:]source [=> target]
这个规则把满足条件的文件加入到产物中。
-:source [=> target]
这条规则则是把满足条件的文件从产物中移除。
方括号围起来的参数是可选的。规则根据右面的部分进行分组,根据出现的顺序依次起作用,如:
+:**/* => target_directory
-:**/folder1 => target_directory
表示除了 folder1 下的内容,把其他所有内容加入到产物中。
下面是详细的格式 :
file_name|directory_name|wildcard [ => target_directory|target_archive ]
file_name 指定产物文件相对于 build checkout directory 的路径。
directory_name 指定某个目录相对于 build checkout directory 的路径。目录下的所有文件和子目录都会被作为产物。产物中文件在目录中的结构保持不变。但是目录 directory_name 本身并不包含在产物中。
wildcard(通配符) 收集符合 Ant-like 的通配符匹配的文件作为产物 (仅支持 "*" 和 "**")。通配符要出现在相对于 build checkout directory 的路径中。符合条件的文件在产物中的路径会保持原来的路径结构。
还可以在收集产物的规则中使用参数。参数可以是 TeamCity 内置的变量也可以是用户自己定义的变量。
=> 后面的部分是可选的。=> 后面跟的目录名可以用来指定产物文件所存放的目录。
如果没有设置目标目录,那么产物会被放置在 build 产物的根目录下。
注意,目标路径不能是绝对路径。非相对的路径会在build时产生错误。
target_directory 收集的产物文件会被放到这个目录下。
target_archive 把产物打包后归档文件的路径。支持的归档文件格 式有 .zip,.7z,.jar,.tar.gz,.tgz。
下面是一些常用的例子:
install.zip
// 把 build checkout directory 目录下的所有文件放入压缩包 install.zip 作为产物。
dist
// 收集 build checkout directory\dist 目录下的所有内容作为产物。
target/*.jar
// 收集 build checkout directory\target 目录下的所有 jar 文件作为产物。
target/**/*.txt => docs
// 收集 build checkout directory\target 目录及其子目录下所有的 .txt 文件 作为产物。并把这些文件全部放入目标目录 docs 中。
reports => reports, distrib/idea*.zip
// 把 build checkout directory\reports 目录中的内容放入产物中的 reports 目录下。
// 把 build checkout directory\distrib 目录下符合 idea*.zip 条件的文件放到产物的根目录下。
// 我们还可以指定产物在 zip 归档文件中的位置,如:
results\result1\Dir1\Dir2 => archive.zip!results/result1/Dir1
// Dir2 目录中的内容将添加到归档文件中的 results/result1/Dir1 目录下。
// 产物中相同的归档文件名称可以被使用多次,如:
+:*/*.html => report.zip
+:*/*.css => report.zip!/css/
-:*/*.txt => report.zip
Build options
Build options 为我们提供了另外一些功能。
Hanging Build Detection
探测挂起的 build,TeamCity 能够探测可能是被挂起的 builds。
什么样的 build 被认为是被挂起的 build 呢?当一个 build 的执行时间明显的超过了系统估计的平均执行时间,并且在超过预估时间后 build 也没有发出过消息,此时就认为 build 处于挂起状态。TeamCity 会把已经运行过的 build 时间取平均值,从而估算出平均运行时间。当我们订阅通知时 TeamCity 系统的通知时,可以把 挂起作为一个条件。这样当挂起发生时我们就会收到通知。
Allow Triggering Personal Builds
这个功能允许用户使用未提交到代码库的代码做build,但是需要开发工具的支持。
Enable Status Widget
启用状态部件,这个选项让我们可以获得最后一次 build 的信息,而不需要要使用认证信息。需要注意的是,除了最后一次 build 的信息,我们其实还可以获得任何一次 build 的信息。但是仅限于获得 success/failure/internal error/cancelled 这几种信息。
我们可以通过不同的方式来获得信息,比如 HTML status widget 和 REST API。
下面我们看一下如何把 Build 信息嵌入到您的网页上。
先启用 “enable status widget”:
创建一个 html 网页,在 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 服务器地址更换上面字符串中的占位符,并且用有意义的 Build configuration ID 替换 xxx。然后在浏览器中打开看看:
Limit Number of Simultaneously Running Builds
设置一个 build 可以同时运行的最大数。
主要是防止所有的 build agent 同时被一个 build 全部用光。
TeamCity : Build 基本配置的更多相关文章
- TeamCity : Build 版本控制系统配置
VCS (版本控制系统) 是用来跟踪项目源文件版本变化的系统.它还有其它的名字,比如 SCM(源代码管理).当前 TeamCity 内置支持的 VCS 类型有:Git, Subversion, Mer ...
- TeamCity : Build 失败条件
允许用户配置 Build 失败的条件是很有用的功能,它是我们配置复杂 Build 流程的基础.TeamCity 为用户自定义 Build 失败条件提供了很好的支持.这些条件大体上可以分为两类,分别是: ...
- TeamCity安装和配置
目录 TeamCity安装和配置 前言 持续集成(CI) TeamCity 环境 安装 配置TeamCity 项目构建 效果展示 TeamCity自动构建项目及集成IDEA(待更新......) 结束 ...
- r.js合并实践 --项目中用到require.js做生产时模块开发 r.js build.js配置详解
本文所用源代码已上传,需要的朋友自行下载:点我下载 第一步: 全局安装 npm install -g requirejs 第二步: 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, ...
- Ant之build.xml配置详解【转】
原文:https://blog.csdn.net/mevicky/article/details/72828554 前言国内关于build.xml的配置资料太零散了,实在是受不了,故而将自己的笔记整理 ...
- Android开发之深入理解Android Studio构建文件build.gradle配置
摘要: 每周一次,深入学习Android教程,TeachCourse今天带来的一篇关于Android Studio构建文件build.gradle的相关配置,重点学习几个方面的内容:1.applica ...
- 在build中配置resources,来防止我们资源导出失败的问题
<!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> < ...
- 在build中配置resources, 来防止我们资源导出失败问题
<!--在build中配置resources, 来防止我们资源导出失败问题--> <build> <resources> <resource> < ...
- Open Harmony移植:build lite配置目录全梳理
摘要:本文主要介绍build lite 轻量级编译构建系统涉及的配置目录的用途,分析相关的源代码. 本文分享自华为云社区<移植案例与原理 - build lite配置目录全梳理>,作者:z ...
随机推荐
- 探索ASP.NET MVC5系列之~~~3.视图篇(下)---包含常用表单和暴力解猜防御
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- 前端学HTTP之Web主机托管
前面的话 对内容资源的存储.协调以及管理的职责统称为Web主机托管.主机托管是Web服务器的主要功能之一.保存并提供内容,记录对内容的访问以及管理内容都离不开服务器.如果不想自行管理服务器所需的软硬件 ...
- Android调用微信登陆、分享、支付
前言:用了微信sdk各种痛苦,感觉比qq sdk调用麻烦多了,回调过于麻烦,还必须要在指定包名下的actvity进行回调,所以我在这里写一篇博客,有这个需求的朋友可以借鉴一下,以后自己别的项目有用到也 ...
- HotApp小程序服务范围资质查询器
微信小程序提交审核需要选择资质服务范围,如果服务范围不对,审核会不通过, 开发小程序之前,最好先查询所开发小程序的资质范围,否则无法通过微信审核. 小程序的资质范围查询地址,数据同步微信官方 ht ...
- android计算每个目录剩余空间丶总空间以及SD卡剩余空间
ublic class MemorySpaceCheck { /** * 计算剩余空间 * @param path * @return */ public static String getAvail ...
- 简单的转盘抽奖——CSS动画优化
前言 前两天去一家公司面试,被问到一些小游戏的东西.面试官提到了刷红包还有抽奖这些怎么实现,当时简单说了下思路,回来之后想想还是说的太轻描淡写了,干说不做就是耍流氓,所以就做了一个(Demo & ...
- On cloud, be cloud native
本来不想起一个英文名,但是想来想去都没能想出一个简洁地表述该意思的中文释义,所以就用了一个英文名称,望见谅. Cloud Native是一个刚刚由VMware所提出一年左右的名词.其表示在设计并实现一 ...
- .NET 环境中使用RabbitMQ
在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方,比如发送短信 ...
- CSharpGL(29)初步封装Texture和Framebuffer
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...
- java运行时获得泛型类型
引言 众所周知,java泛型最重要的特征是泛型擦除,所有泛型在编译时会转换成Object所以在java中运行时无法获得泛型的类型. 但是其实以上的规则是针对方法的内部变量的,如果是其他形式的泛型其实是 ...