如何将环境变量传递给TeamCity代理构建配置

如何将环境变量传递给TeamCity代理构建配置,teamcity,Teamcity,我正在设置TeamCity服务器和代理。代理在docker容器(windows server core)中运行,我定义了要在代理容器上设置的各种环境变量,这些变量最终被设置为windows环境变量。一些是通过docker compose传入的,另一些是在构建映像时在我的代理Dockerfile中设置的,使用运行SETX/M NAME VALUE。当我在代理上打开控制台并在cmd中键入SET时,我可以看到它们 但是,当我查看TeamCity服务器门户中的代理,并查看它们的代理参数->环境变量时,我

我正在设置TeamCity服务器和代理。代理在docker容器(windows server core)中运行,我定义了要在代理容器上设置的各种环境变量,这些变量最终被设置为windows环境变量。一些是通过docker compose传入的,另一些是在构建映像时在我的代理Dockerfile中设置的,使用
运行SETX/M NAME VALUE
。当我在代理上打开控制台并在cmd中键入SET时,我可以看到它们

但是,当我查看TeamCity服务器门户中的代理,并查看它们的代理参数->环境变量时,我没有看到我定义的任何OS环境变量。看起来好像传入了PATH变量,但没有传入任何其他变量


如何将特定的环境变量传递给我的代理构建配置?

不幸的是,我找到的唯一方法已列出

将以下内容放入buildAgent.properties文件中,如下所示:

env.MYVAR=%MYVAR%
env.MYVAR2=%MYVAR2%

TeamCity代理映像基于windows nanoserver,它不适合我的需要,因此我必须自己创建buildagent.properties文件(不确定如何编辑自动创建的现有文件)。为此,我使用以下批处理脚本,将其作为代理的docker容器的入口点运行:

@echo off
::------------------------------
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set DTStamp=%YYYY%-%MM%-%DD%_%HH%-%Min%
::------------------------------

echo ##############################################################
echo Run-Agent.bat: %DTStamp%
echo ##############################################################

cd C:\BuildAgent\conf\
IF NOT EXIST buildagent.properties echo buildagent.properties not found - Creating buildagent.properties... && (
echo serverUrl=%SERVER_URL%
echo name=%AGENT_NAME%
echo workDir=../work
echo tempDir=../temp
echo systemDir=../system
echo authorizationToken=%AGENT_TOKEN%
echo env.MYVAR1=%MYVAR1%
echo env.MYVAR2=%MYVAR2%
echo env.MYVAR3=%MYVAR3%
) > buildagent.properties

echo running TeamCity Build Agent in background...
cd C:\BuildAgent\bin\
start /b service.start.bat

cd \
C:\Windows\System32\cmd.exe
@echo on
这似乎对我有用