TeamCity Agent 工件缓存问题:代理从所有先前构建中累积工件
TeamCity Agent artifacts cache issue: agent accumulates artifacts from all prev builds
我在 docker-compose.yml
中设置了 TeamCity
version: "3"
services:
server:
image: jetbrains/teamcity-server:2021.1.2
ports:
- "8112:8111"
volumes:
- ./data_dir:/data/teamcity_server/datadir
- ./log_dir:/opt/teamcity/logs
db:
image: mysql
ports:
- "3306:3306"
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=111
- MYSQL_DATABASE=teamcity
teamcity-agent-1:
image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-1
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_1
ipc: host
shm_size: 1024M
teamcity-agent-2:
image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-2
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_2
ipc: host
shm_size: 1024M
teamcity-agent-3:
image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-3
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_3
ipc: host
shm_size: 1024M
我在 teamcity 代理中进行了 E2E 测试 运行。作为测试执行的结果,它们会生成 HTML 报告,如果测试失败,它们也会生成视频报告。在没有 TeamCity 的情况下,一切都在本地按预期工作。当我将它移动到 TeamCity 时,我设置为将文件夹“报告”保留在工件中。我实际上有以下行为:
HTML 报告每次都会更新
视频从一个版本到另一个版本不断增长。我为文件夹名称和视频名称生成带有时间戳的差异路径以避免缓存。如果 1 次测试失败并生成了 1 个视频,则该视频将出现在所有下一个构建的工件中,即使它们正在通过并且视频文件夹应该为空
我的问题在 2014 年的 jetbrains 支持中得到了准确描述
https://teamcity-support.jetbrains.com/hc/en-us/community/posts/206845765-Build-Agent-Artifacts-Cache-Cleanup
但我尝试了那里的差异设置,不幸的是没有运气
我自己尝试了什么,什么没有帮助:
试图清理\系统。 artifacts_cache 文件夹。工件仍在增长
试图找到代理的配置
在 /data/teamcity_agent/conf/buildAgent.properties 我放置了 2 个新设置
teamcity.agent.filecache.publishing.disabled=true
teamcity.agent.filecache.size.limit.bytes=1
代理重新启动后,我在 TeamCity 网络界面中看到了这 2 个新设置,这意味着设置已应用
但行为仍然相同。也许应该使用其他设置,但我没能找到
- 在代理设置中按下“清理此代理上的资源”有什么帮助,但用手按下不是这样
如果我分配另一个代理从头开始累积,这看起来像是缓存问题。
欢迎任何建议
看来我找到了答案
https://www.jetbrains.com/help/teamcity/2021.1/clean-checkout.html#Automatic+Clean+Checkout
应在 Create/Edit 构建配置 > 版本控制设置页面上选择“构建前清除所有文件”选项
我在 docker-compose.yml
中设置了 TeamCityversion: "3"
services:
server:
image: jetbrains/teamcity-server:2021.1.2
ports:
- "8112:8111"
volumes:
- ./data_dir:/data/teamcity_server/datadir
- ./log_dir:/opt/teamcity/logs
db:
image: mysql
ports:
- "3306:3306"
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=111
- MYSQL_DATABASE=teamcity
teamcity-agent-1:
image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-1
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_1
ipc: host
shm_size: 1024M
teamcity-agent-2:
image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-2
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_2
ipc: host
shm_size: 1024M
teamcity-agent-3:
image: jetbrains/teamcity-agent:2021.1.2-linux-sudo
environment:
- SERVER_URL=http://server:8111
- AGENT_NAME=docker-agent-3
- DOCKER_IN_DOCKER=start
privileged: true
container_name: docker_agent_3
ipc: host
shm_size: 1024M
我在 teamcity 代理中进行了 E2E 测试 运行。作为测试执行的结果,它们会生成 HTML 报告,如果测试失败,它们也会生成视频报告。在没有 TeamCity 的情况下,一切都在本地按预期工作。当我将它移动到 TeamCity 时,我设置为将文件夹“报告”保留在工件中。我实际上有以下行为:
HTML 报告每次都会更新
视频从一个版本到另一个版本不断增长。我为文件夹名称和视频名称生成带有时间戳的差异路径以避免缓存。如果 1 次测试失败并生成了 1 个视频,则该视频将出现在所有下一个构建的工件中,即使它们正在通过并且视频文件夹应该为空
我的问题在 2014 年的 jetbrains 支持中得到了准确描述 https://teamcity-support.jetbrains.com/hc/en-us/community/posts/206845765-Build-Agent-Artifacts-Cache-Cleanup
但我尝试了那里的差异设置,不幸的是没有运气
我自己尝试了什么,什么没有帮助:
试图清理\系统。 artifacts_cache 文件夹。工件仍在增长
试图找到代理的配置
在 /data/teamcity_agent/conf/buildAgent.properties 我放置了 2 个新设置
teamcity.agent.filecache.publishing.disabled=true
teamcity.agent.filecache.size.limit.bytes=1
代理重新启动后,我在 TeamCity 网络界面中看到了这 2 个新设置,这意味着设置已应用
但行为仍然相同。也许应该使用其他设置,但我没能找到
- 在代理设置中按下“清理此代理上的资源”有什么帮助,但用手按下不是这样
如果我分配另一个代理从头开始累积,这看起来像是缓存问题。
欢迎任何建议
看来我找到了答案
https://www.jetbrains.com/help/teamcity/2021.1/clean-checkout.html#Automatic+Clean+Checkout
应在 Create/Edit 构建配置 > 版本控制设置页面上选择“构建前清除所有文件”选项