How to pass Environment Variables to TeamCity Agent build configuration
我正在设置 TeamCity 服务器和代理。代理在 docker 容器(Windows 服务器核心)中运行,我定义了要在代理容器上设置的各种环境变量,最终设置为 Windows 环境变量。有些是通过 docker-compose 传入的,有些是在构建映像时在我的代理 Dockerfile 中设置的,使用
但是,当我查看 TeamCity 服务器门户中的代理并查看它们的代理参数 -> 环境变量时 - 我没有看到我定义的任何操作系统环境变量。看起来是传入了 PATH 变量,但没有传入其他变量。
如何将特定环境变量传递给我的代理构建配置?
不幸的是,我找到的唯一方法在这里列出
将以下内容放入 buildAgent.properties 文件中,如下所示:
1 2 | env.MYVAR=%MYVAR% env.MYVAR2=%MYVAR2% |
TeamCity Agent 映像基于 windows nanoserver,它不适合我的需要,因此我必须自己创建 buildagent.properties 文件(不确定如何编辑自动创建的现有文件)。为此,我使用以下批处理脚本,我将其作为代理的 docker 容器的入口点运行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | @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 |
这似乎对我有用。