Получение параметров TeamCity (Docker Linux) или системных свойств в Cake (C #) ничего не возвращает - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь получить доступ к имени ветки в Cake на TeamCity, работающем в контейнере Docker Linux, но всякий раз, когда я пытаюсь получить любой из «параметров конфигурации», значения ничего не возвращают.

InВ моей ветке следующие значения параметров сборки видны в TeamCity:

Параметры конфигурации

  • vcsroot.branch: refs /head / 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

Как ни странно, на наших не-докерских агентах TeamCity для Windows значения, похоже, возвращаются нормально.У меня такое ощущение, что я упускаю что-то здесь, до боли простое, но я относительный новичок, когда дело доходит до Cake, TeamCity и Docker.Любая помощь будет принята с благодарностью.Спасибо!

Редактировать: чтобы пояснить, большинство переменных среды возвращаются, как и ожидалось;единственное, что я заметил, что нет, это тот, который ссылается на параметр конфигурации.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я понял это ...

Во-первых, я пропустил подтекст на странице параметров проекта TC для параметров конфигурации;он сообщает Configuration parameters are not passed into build, can be used in references only.

Во-вторых, я не осознавал, что ни одно из свойств системы не было видно (не знаю, если это проблема), но его подтекст также гласит System properties will be passed into the build (without system. prefix), they are only supported by the build runners that understand the property notion.

Поэтому, чтобы получить значение параметра конфигурации, мне нужно было создать переменную среды с использованием параметра конфигурации в качестве его значения:

env.TCBranch = %teamcity.build.branch%

Было немного тревожно, что teamcity.build.branch не сделалотображаются при вводе значения в опережающем типе, но это работает.

Возникает вопрос о том, почему значение среды env.vcsroot.branch не работает, и я предполагаю, что это потому, что имя переменнойидентично другому имени переменной конфигурации.Учитывая, что эти параметры не передаются в сборку, я не понимаю, почему это должно иметь значение, но я не могу думать о том, почему иначе это не сработает.В любом случае, спасибо @devlead за предложения (см. Выше).

0 голосов
/ 10 октября 2018

Для переменных среды TeamCity заменяет не буквенно-цифровые символы на «_»

Т.е. vcsroot.branch становится vcsroot_branch

...