Configuration 为什么我的TeamCity内部NuGet提要的URL中缺少一部分?
我的TeamCity服务器似乎在为其内置的NuGet提要使用一个损坏的URL 我在docker容器中使用JetBrains官方图像运行它。我不支持反向代理。我已配置“服务器URL”设置 我可以在VisualStudio中使用完整的URL(未经验证的来宾访问)来使用提要,这一切都很好。它从构建工件中添加包,VisualStudio可以提取它们 只是应该包含提要URL的TeamCity属性被破坏了,如屏幕截图所示。因此,我的构建失败如下: /usr/share/dotnet/sdk/3.1.302/NuGet.targets(128,5):错误:无法加载源的服务索引http://teamcity:8111/guestAuth/app/nuget/feed/TigraOss/TigraOSS/v3/index.json. 这些都是内部生成的,不是我编辑过的,所以我有点困惑。有没有办法解决这个问题?(显然,我已尝试重新启动服务器) 更新 我认为这可能是因为所有东西都在docker容器中运行。稍后在parameters(参数)屏幕中(在上面屏幕截图的底部)有另一行: teamcity.serverUrlhttp://teamcity:8111 我想这是来自我的Configuration 为什么我的TeamCity内部NuGet提要的URL中缺少一部分?,configuration,nuget,teamcity,Configuration,Nuget,Teamcity,我的TeamCity服务器似乎在为其内置的NuGet提要使用一个损坏的URL 我在docker容器中使用JetBrains官方图像运行它。我不支持反向代理。我已配置“服务器URL”设置 我可以在VisualStudio中使用完整的URL(未经验证的来宾访问)来使用提要,这一切都很好。它从构建工件中添加包,VisualStudio可以提取它们 只是应该包含提要URL的TeamCity属性被破坏了,如屏幕截图所示。因此,我的构建失败如下: /usr/share/dotnet/sdk/3.1.302
docker compose.yml
文件:
agent:
image: jetbrains/teamcity-agent
container_name: teamcity-agent
restart: unless-stopped
privileged: true
user: "root"
environment:
- SERVER_URL=http://teamcity:8111
- AGENT_NAME=ubuntu-ovh-vps-tigra
- DOCKER_IN_DOCKER=start
volumes:
- agentconfig:/data/teamcity_agent/conf
- agentwork:/opt/buildagent/work
- agentsystem:/opt/buildagent/system
- agent1_volumes:/var/lib/docker
我尝试在我的docker compose.yml
文件中更改服务器URL值,并重新启动代理容器,但看起来一旦创建了代理配置文件,该值就变粘了,我需要手动编辑它
现在,我让代理使用服务器的完整FQDN,因此我们将看看这是否有效。我认为这是由docker构建中复杂的docker造成的。我正在用docker compose构建的docker容器中运行TeamCity服务器和linux构建代理。这是我的
docker compose.yml
文件,已删除机密:
version: '3'
services:
db:
image: mariadb
container_name: teamcity-db
restart: unless-stopped
env_file: .env
volumes:
- mariadb:/var/lib/mysql
command: --default-authentication-plugin=mysql_native_password
teamcity:
depends_on:
- db
image: jetbrains/teamcity-server
container_name: teamcity
restart: unless-stopped
environment:
- TEAMCITY_SERVER_MEM_OPTS="-Xmx750m"
volumes:
- datadir:/data/teamcity_server/datadir
- logs:/opt/teamcity/logs
ports:
- "8111:8111"
agent:
image: jetbrains/teamcity-agent
container_name: teamcity-agent
restart: unless-stopped
privileged: true
user: "root"
environment:
SERVER_URL: http://fully.qualified.name:8111
AGENT_NAME: my-agent-name
DOCKER_IN_DOCKER: start
volumes:
- agentconfig:/data/teamcity_agent/conf
- agentwork:/opt/buildagent/work
- agentsystem:/opt/buildagent/system
- agent1_volumes:/var/lib/docker
volumes:
mariadb:
datadir:
logs:
agentconfig:
agentwork:
agentsystem:
agent1_volumes:
networks:
default:
当我第一次创建所有内容时,我将服务器URL
变量设置为`http://teamcity:8111。这是因为Docker将主机名映射到服务名,服务名也是“teamcity”,因此主机可以在Docker组合中解析
在另一个容器中执行构建步骤时会出现问题。
我正在构建.NET Core,而机器上未安装.NET SDK,
因此,我必须使用.NET Core SDK容器运行构建
代理传递NuGet feeed的URL,该URL指向docker服务名称,而构建容器无法“看到”该主机名。我不确定为什么不能。我尝试将--network teamcity\u default
作为命令行参数传递给docker run,但它表示网络不存在
我找到了两种方法让事情顺利进行
%teamcity.nuget.feed.guestAuth.feed-id.v3%
。我不太喜欢这个解决方案,因为它会让我在将来面临崩溃/var/lib/docker/volumes/teamcity\u agentconfig/\u data
。编辑buildAgent.properties
文件并设置serverUrl=http\://完全限定。名称\:8111
。然后docker compose重新启动代理
。然后您可以安全地使用%容器化版本中的teamcity.nuget.feed.guestuth.feed-id.v3%
我还没有测试过这一点,但我认为您可以通过在
docker compose.yml
文件中使用完全限定的服务器名来避免所有这些问题。但是,您必须从一开始就这样做,因为在运行docker compose
的那一刻,代理配置文件系统就被创建并成为永久文件。I如果您查看以前的构建和参数,服务器URL是否与您在设置中设置的相匹配?右侧的那些值是由插件生成的吗?屏幕截图是从查看构建结果和“参数”选项卡中获取的,因此这些是用于构建的实际结果。再往下一点,就是s行:>teamcity.serverUrl对我来说就像一把冒烟的枪。我想知道这是否是因为代理正在docker容器中运行?“teamcity”是服务器docker服务的名称。你可能让我在那里看到了什么。