Конвейер выпуска TFS (предварительно) - обнаружение и использование имени другого компьютера в группе развертывания - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть веб-сайт ( сайт A ), развернутый на машине A , который зависит от службы ( служба B ), развернутой на машинеB .

Машины A и B находятся в одной группе развертывания, различаются по тегам (App и Service соответственно), и у меня есть 2 этапа развертывания (по одному для каждого тега), нажимая кодв соответствующие поля

Мне нужно записать значение в конфигурацию сайта A, чтобы указать местоположение службы B.

Есть ли способ узнать имя машины, котораяСлужба B была развернута, чтобы мое развертывание было действительно динамичным?

Другими словами, могу ли я найти имя машины с данным тегом развертывания и использовать его в переменной?

IЯ пытался запустить локальный PowerShell на агентах развертывания для обновления переменной, но это обновление, похоже, не возвращает его управляющему агенту, поэтому он не может передавать значения между компьютерами.

Мой запасной вариантпросто использовать кИмена серверов и записать значения в конфигурацию, но это похоже на массовый взлом, учитывая динамичность остальной системы.

Я использую TFS 2018 в предварительном порядке - конвейер развертывания на основе графического интерфейса (без YAML)

1 Ответ

1 голос
/ 13 декабря 2019

Есть предопределенные переменные агента , которые позволяют вам ссылаться на имя машины в вашем конвейере.

1, Вы можете обратиться к имени машины, поместив предопределенную переменную в "$ () ", например"$(Agent.MachineName)" or "$(Agent.Name)"

enter image description here

Этот метод получает имя агента из свойства Agent.Name в разделе Возможности агента.

enter image description here

2, Есть еще один обходной путь. Вы также можете добавить задачу powershell в скрипт script ниже, чтобы получить имя локального компьютера, на котором размещен агент, и назначить его переменной .

Необходимо определить переменную (например .MachineName) на вкладке Переменные вашего конвейера

enter image description here

echo "##vso[task.setvariable variable=MachineName]$([System.Net.Dns]::GetHostName())"

enter image description here

Второй метод получает имя машины из свойств локального компьютера.

enter image description here

...