Skip to main content
 首页 » 编程设计

c#之在 Cake (C#) 中获取 TeamCity (Docker Linux) 参数或系统属性不返回任何内容

2024年02月04日38langtianya

我正在尝试访问在 Linux Docker 容器内运行的 TeamCity 上的 Cake 中的分支名称,但每当我尝试获取任何“配置参数”时,值都没有返回任何值。

在我的分支中,以下构建参数值在 TeamCity 上可见:

配置参数

  • vcsroot.branch: refs/heads/master
  • teamcity.build.branch:5/合并

环境变量

  • env.vcsroot.branch: 5/合并

env.vcsroot.branch变量的值为 %teamcity.build.branch%。

我的蛋糕脚本只是试图吐出值,而下面的所有值都返回空值:

var branch = EnvironmentVariable("vcsroot.branch"); 
var tcbranch = EnvironmentVariable("teamcity.build.branch"); 
var agent = EnvironmentVariable("system.agent.name"); 
var confName = EnvironmentVariable("system.teamcity.buildConfName"); 
var buildId = EnvironmentVariable("teamcity.build.id"); 
var vcsRootBranch = EnvironmentVariable("vcsroot.Root_TemplatedVcsRoot1.branch"); 
var argOrEnv = ArgumentOrEnvironmentVariable("teamcity.build.branch", "vcsroot.branch", "Unfound"); 
 
Information($"vcsroot.branch = {branch}"); 
Information($"teamcity.build.branch = {tcbranch}"); 
Information($"system agent name = {agent}"); 
Information($"system TC build cof name= {confName}"); 
Information($"param buildId = {buildId}"); 
Information($"vcsroot template branch = {vcsRootBranch}"); 
Information($"test argument or env variables = {argOrEnv}"); 

实际输出:

[12:34:51][Step 1/2] vcsroot.branch =  
[12:34:51][Step 1/2] teamcity.build.branch =  
[12:34:51][Step 1/2] system agent name =  
[12:34:51][Step 1/2] system TC build cof name=  
[12:34:51][Step 1/2] param buildId =  
[12:34:51][Step 1/2] vcsroot template branch =  
[12:34:51][Step 1/2] test argument or env variables = Unfound 

奇怪的是,在我们基于 Windows 的非 docker TeamCity 代理上,这些值似乎返回正常。我有一种感觉,我在这里遗漏了一些非常简单的东西,但在 Cake、TeamCity 和 Docker 方面,我是一个相对的新手。任何帮助将不胜感激。谢谢!

编辑:澄清一下,大多数环境变量都按预期返回;我注意到唯一没有引用配置参数的参数。

请您参考如下方法:

对于环境变量,TeamCity 将非字母数字字符替换为“_”

即 vcsroot.branch 变为 vcsroot_branch