TeamCity 在 Docker 中运行步骤

31次阅读
没有评论

问题描述

正在尝试在一个 .NET 项目上设置 TeamCity 运行测试。他已经使用 Docker Compose 安装了 TeamCity 及其代理,并配置了项目,但构建失败并没有提供足够的详细信息。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

尝试以下两个方法:
1. 在测试之前添加一个 “Build” 步骤:
– Runner Type: .NET
– Command: build
如果需要,在构建之前添加另一个构建配置来 “Restore” 项目。
2. 以 “verbose” 模式执行此构建步骤,以获取更多的日志信息。

方案2

根据回答2的建议,TeamCity 代理无法检测到它正在运行在 Docker 中,并尝试将自己的目录挂载到步骤所在的容器中。你可以尝试使用命令行步骤来解决这个问题。以下是一个示例命令行步骤,你可能需要根据实际情况进行调整:

MOUNTS=$(docker inspect teamcityagent | jq '.[0].Mounts[] | select(.Destination | contains("/opt/buildagent/")) | "-v \(.Name):\(.Destination)" ' -r | tr '\n' ' ')
docker pull mcr.microsoft.com/dotnet/sdk:5.0
docker run --rm $MOUNTS -w %teamcity.build.workingDir% mcr.microsoft.com/dotnet/sdk:5.0 /usr/bin/dotnet test %teamcity.build.workingDir%/ImPresent.Tests/ImPresent.Tests.csproj

在上面的示例中,我们首先使用 docker inspect 命令获取 TeamCity 代理容器的挂载信息,并使用 jq 过滤出与 /opt/buildagent/ 目录相关的挂载点。然后,我们使用这些挂载点来运行测试命令。请注意,你可能还需要在代理容器中安装 jq 工具。
以上是两种可能的解决方案,你可以根据实际情况选择适合你的方法。希望能帮到你!

正文完