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

3
我正在设置TeamCity服务器和代理。代理运行在Docker容器中(Windows Server Core),我定义了各种环境变量,在代理容器中设置这些变量,最终将其设置为Windows环境变量。其中一些是通过docker-compose传递的,其他的则是在我的代理Dockerfile中设置的,使用RUN SETX /M NAME VALUE。当我在代理上打开控制台并在cmd中输入SET时,可以看到它们。
然而,当我查看TeamCity服务器门户网站中的代理,并查看它们的代理参数->环境变量时,我没有看到我定义的任何操作系统环境变量。看起来PATH变量已被传递,但没有任何其他变量。
如何将特定环境变量传递给我的代理构建配置?
1个回答

2

很不幸,我找到的唯一方法已经在这里列出。

将以下内容放入buildAgent.properties文件中,就像这样:

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

TeamCity Agent镜像基于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

这对我来说似乎是有效的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接