TeamCity 配置和维护
要更改服务器配置,请转到 管理 | 全局设置。 以下设置块可用:
TeamCity 配置
设置 | 描述 |
|---|---|
数据库 | 正在运行的 TeamCity 服务器使用的 数据库。 |
数据目录 | 具有浏览目录功能的 \< TeamCity 数据目录 \> 路径。 |
工件目录 | TeamCity 服务器用于存储 构建工件 、构建日志和其他构建数据的根目录列表。 默认位置是 通过指定一个新行分隔的路径列表,可以更改该列表。 支持绝对路径和相对于 TeamCity 数据目录的路径。 所有指定的目录都使用相同的 结构。 当寻找构建工件时,会在指定的位置搜索与构建相对应的目录。 搜索的顺序是按照根目录的指定顺序进行的。 首个找到的工件目录被用作此构建的工件来源。 新开始的构建的工件被放置在列表中的第一个目录下。 |
缓存目录 | 包含 TeamCity 内部缓存(版本控制系统仓库内容、搜索索引、其他)的目录。 您可以手动从此目录中删除文件以清除 caches。 |
服务器 URL | 运行中的 TeamCity 服务器的 可配置 URL。 |
构建设置
设置 | 描述 |
|---|---|
最大构建工件文件大小 | 以字节为单位的最大尺寸。 允许使用 KB、MB、GB 或 TB 后缀。 |
每次构建的最大工件数量 | 限制每次构建发布的工件数量。 |
默认构建执行超时 | 构建的最大时间。 在定义 构建失败条件 时,可以被覆盖。 |
版本控制设置
设置 | 描述 |
|---|---|
默认 VCS 变更检查间隔 | 默认设置为60秒。 指定 TeamCity 对 VCS 存储库进行 VCS 更改的轮询频率。 可以在 配置 VCS 根目录时进行覆盖。 另外,您可以强制执行 VCS 更改检查的间隔作为服务器上所有 VCS 根的最小轮询间隔。 这样,项目管理员只能设置比默认间隔更大的间隔。 这有助于限制轮询请求的频率,从而减轻服务器的负担。 |
默认 VCS 触发器安静期 | 默认设置为60秒。 指定一个周期(以秒为单位),TeamCity在检测到最后一次VCS更改和将构建添加到队列之间保持这个周期。 在配置 VCS 触发器 时可以被覆盖。 |
加密设置
TeamCity 使用内部混淆算法保护所有敏感数据(秘密值、 SSH 密钥 、许可产品密钥等)。 加密设置 部分允许定义将被替代使用的自定义加密密钥。 可以通过 TeamCity UI 设置自定义加密密钥,或(推荐)从环境变量导入。
- 在 TeamCity 用户界面
在 自定义加密密钥 字段中输入使用 Base64 编码的 128 位密钥。 您可以点击相应操作以让 TeamCity 生成一个有效密钥。
在 TeamCity UI 中指定的密钥将存储在
TeamCity Data Directory(TeamCity 数据目录)/config/encryption-config.xml文件中。生成或输入新的加密密钥后,TeamCity 将强制使用该密钥加密新对象。 以前的密钥仍用于现有对象,并存储在
encryption-config.xml文件中。<?xml version="1.0" encoding="UTF-8"?> <encryption-settings> <key value="oldKey1" /> <key value="oldKey2" /> ... <key value="currentKey" default="true" /> </encryption-settings>- 从环境变量导入
如果 TeamCity 服务器在启动时检测到非空的
TEAMCITY_ENCRYPTION_KEYS环境变量,它将从该变量导入加密密钥,并锁定 UI 中的 自定义加密密钥 字段。这是一个更安全的选项,因为加密密钥不会存储在
encryption-config.xml文件中,从而使数据目录/config文件夹更适合存储于远程 VCS 仓库中。TEAMCITY_ENCRYPTION_KEYS变量使用冒号作为分隔符存储当前使用和之前的加密密钥,当前密钥为第一个:currentKey:oldKey1:oldKey2:oldKey3...生成密钥 选项不会自动将生成的密钥写入
TEAMCITY_ENCRYPTION_KEYS变量,您需要手动完成。
您可以随时在不同模式之间切换。 如果服务器将密钥存储在 encryption-config.xml 文件中,请按如下所示将其导出为变量。
同样,如果服务器使用 TEAMCITY_ENCRYPTION_KEYS 变量,请将其密钥值作为单独的 <key value="key_value"/> 条目移动到 encryption-config.xml 文件,并为当前使用的密钥添加 default="true"。
切换当前加密密钥不会自动重新加密现有的加密值。 要重新加密这些值,请在全局服务器设置中点击 使用当前密钥重新加密。 该过程可能需要数小时,具体取决于加密实体的数量。 如果服务器在重新加密过程中重启,TeamCity 将在服务器重新上线后自动从上次处理的项目继续。

缺少加密密钥
TeamCity 会加密多种类型的敏感数据,从产品许可证密钥到单个项目中使用的 SSH 密钥。 如果丢失任何加密密钥,TeamCity 将无法解密相关数据,使这些值永久无法访问。
为防止这种情况发生,TeamCity 会跟踪所有活动的加密密钥,并在发现任何缺失时发出警告。 密钥哈希代码存储在 TeamCity Data Directory(TeamCity 数据目录)/config/encryption-config.xml 文件中。 服务器启动时,TeamCity 会将可用密钥的哈希值与该文件中存储的值进行比较。 如果它们不匹配,将出现启动错误屏幕,阻止服务器加载。

为解决此问题并启动服务器:
(推荐)在
encryption-config.xml文件或TEAMCITY_ENCRYPTION_KEYS环境变量中恢复缺失的加密密钥。或者,从
encryption-config.xml中移除encryptionKeysHashes属性以清除已知密钥列表。 请注意,任何使用缺失密钥加密的数据将变为不可用,用户需要重新输入相关值(如 SSH 密钥或基于参数的密码)。
工件的域隔离
设置 | 描述 |
|---|---|
启用隔离保护 | 如果启用,工件将从一个单独的域加载,任何可能的恶意内容都无法代表浏览此内容的用户与 TeamCity 服务器通信。 这减轻了通过工件进行 XSS 攻击的风险以及其他相关漏洞的风险。 请注意,此模式需要为 TeamCity 配置一个专用域名。 为了继续使用工件来展示一些构建结果(例如,定制报告),您需要在下方指定此域名的 URL。 |
工件的 URL | 指定一个 URL 来提供工件。 请注意,用于隔离工件的 URL 和 TeamCity 服务器 必须使用不同的主机名。 在同一主机名的不同端口上使用两种资源可能会导致各种问题,包括构建失败和在 TeamCity 中登录的问题。 在收到请求某个工件的内容的请求时,TeamCity 将把您的浏览器重定向到一个临时 URL,该 URL 将此工件的 URL 作为基础。 为了防止未经授权的访问工件,临时URL会在一段时间后过期。 在访问过期的 URL 时,将执行常规身份验证并生成新的 URL。 对于仅能通过localhost访问的个人TeamCity安装,像 对于一个被组织使用的 TeamCity 服务器,应为安装服务器的机器或者如果通过代理访问 TeamCity 的反向代理服务器注册一个新的 DNS 名称,或一个 注意:由于这是一个仅用于提供工件的特殊 URL,用户将无法通过它登录到 TeamCity 界面。 |