Создание символических ссылок в шаблоне рабочего процесса сборки TFS 2010 - PullRequest
2 голосов
/ 09 февраля 2012

Сценарий состоит в том, что мы копируем файлы в наши папки размещения, но мы также хотим создать символическую ссылку «Последняя», которая указывает на самую последнюю сборку этого определения сборки.В прошлом я создавал «Последние» папки с помощью команды delete directory / copy, но я не хочу занимать место на жестком диске или добавлять потенциально минуты к времени выполнения сборки.

Кто-нибудь знает способ создания символических ссылок во время сборки в TFS2010 / Team Build 2010?Проблема полностью заключается в том факте, что для создания символической ссылки вы уже должны быть повышены / выполнены от имени администратора, и, насколько я могу судить, сборка не запускается с повышенными правами / от имени администратора. Я пытался запустить сборкуслужба под учетной записью пользователя, которая является локальным администратором и все еще не работает.

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

  • Использовал действие рабочего процесса InvokeProcess для непосредственного выполнения различных форм «cmd.exe / c mklink / d ...»
  • Использовал InvokeProcess для выполнения пакетного сценария, который содержалкоманда mklink.
  • Попытка с использованием RUNAS [команда mklink] (которая завершается неудачно, потому что вам предлагается ввести пароль вручную).
  • Попытка с использованием действия InvokeProcess в утилите командной строки C #, которую я написалкоторый запускается с повышенными правами через параметр requireAdmin в файле манифеста приложения.Эта утилита вообще не запрашивает повышение прав (UAC).

Если у кого-то есть какие-либо идеи или они уже сделали это, я был бы очень признателен за любые представленные предложения.

1 Ответ

0 голосов
/ 17 февраля 2012

Дуат Ле, предложив отключить UAC, решил проблему.

Вот что нужно сделать, чтобы это заработало.

  1. UAC необходимо отключить для учетной записи, на которой запущена служба сборки на сервере сборки.
  2. Учетная запись, под которой работает сервер сборки, должна быть локальным администратором на сервере, на котором вы пытаетесь установить символическую ссылку.
  3. После отключения контроля учетных записей я использовал действие InvokeProcess в рабочем процессе, задав ему следующие значения:

    • Аргументы:
      "/c mklink /d ""<symlink name>"" ""<directory for symlink to point to>"""

    • Имя файла: "cmd.exe"

    • WorkingDirectory: "<some dir>"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...