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

时间:2020-09-16 08:54:34

标签: teamcity

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

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

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

1 个答案:

答案 0 :(得分:1)

很遗憾,我找到的唯一方法是列出here

将以下内容放入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

这似乎对我有用。

相关问题