2

Мы запускаем TFS и управление выпуском в помещениях, и я хочу развернуть свои приложения в удаленном центре обработки данных. Доступ через Интернет, поэтому нет доступных акций Windows. Я использую шаблоны vNext, и afaik RM, по-видимому, поддерживает только непустые пути по общим ресурсам Windows.Как развернуть с управлением выпуском в удаленный центр обработки данных

Как я могу использовать Управление выпуском для развертывания программного обеспечения в этом центре обработки данных?

Im работает над этим решением: Используйте WebDav на базе IIS, расположенной внутри центра обработки данных. Сервер RM и Target могут использовать клиент WebDav, встроенный в окна и доступ к нему по пути.

Я еще не получил этого, поскольку RM не будет использовать правильные учетные данные для входа на сервер webdav.

Обновлено моим решением Это всего лишь доказательство концепции и не тестируется на производство.

  1. настроить WebDav сайт доступным из обоих RM сервера и целевого сервера
  2. Установите функцию "опыт рабочего стола" на обоих серверах
  3. сделать следующие DLL

    using System; 
    using System.ComponentModel.Composition; 
    using System.Diagnostics; 
    using System.IO; 
    using Microsoft.TeamFoundation.Release.Common.Helpers; 
    using Microsoft.TeamFoundation.Release.Composition.Definitions; 
    using Microsoft.TeamFoundation.Release.Composition.Services; 
    namespace DoTheNetUse 
    { 
        [PartCreationPolicy(CreationPolicy.Shared)] 
        [Export(typeof(IThreadSafeService))] 
        public class DoTheNetUse : BaseThreadSafeService 
        { 
        public DoTheNetUse() : base("DoTheNetUse") 
        {} 
    
        protected override void DoAction() 
        { 
        Logger.WriteInformation("DoAction: [DoTheNetUse]"); 
        try 
        { 
        Logger.WriteInformation("# DoTheNetUse.Start #"); 
    
        Logger.WriteInformation("{0}, {1}", Environment.UserDomainName, Environment.UserName); 
        { 
         Logger.WriteInformation("Net use std"); 
         var si = new ProcessStartInfo("cmd.exe", @"/c ""net use \\sharedwebdavserver.somewhere\DavWWWRoot\ /user:webdavuser webdavuserpassword"""); 
         si.UseShellExecute = false; 
         si.RedirectStandardOutput = true; 
         si.RedirectStandardError = true; 
    
         var p = Process.Start(si); 
    
         p.WaitForExit(); 
         Logger.WriteInformation("Net use output std:" + p.StandardOutput.ReadToEnd()); 
         Logger.WriteInformation("Net use output err:" + p.StandardError.ReadToEnd()); 
        } 
        //########################################################## 
         Logger.WriteInformation("# Done #"); 
         } 
         catch (Exception e) 
         { 
         Logger.WriteError(e); 
         } 
        } 
        } 
    } 
    
  4. Имя его " ReleaseManagementMonitor2.dll "

  5. Поместить его в подкаталог a к службе «ReleaseManagementMonitor»
  6. Настроить общий путь в соответствии с нижеприведенным решением.

НЕ OVERWITE СУЩЕСТВУЮЩЕЙ "ReleaseManagementMonitor2.dll"

Причина, по которой это работает MEF. Служба ReleaseManagementMonitor пытается загрузить DLL «ReleaseManagementMonitor2.dll» из всех подпапок. Эта DLL реализует сервисный интерфейс, который распознает RM. Он запускает «сетевое использование», чтобы применить учетные данные к сеансу, который выполняется службой, и тем самым предоставляет доступ к недоступному в данный момент серверу webdav.

Это решение сертифицировано "Works on my machine"

ответ

0

RM действительно работает только с UNC, вы правы на этом.

Вы можете использовать, что сделать свой сценарий работы -
В теории

  • Создать граничную машину на домене RM, где ваши капли могут быть скопированы.
  • Действие развертывания, выполняющееся в вашем центре обработки данных, затем может копировать бит с этой граничной машины, используя учетные данные, имеющие доступ к этому домену. (Эти учетные данные, предоставленные Вами в консоли WPF)

Как это работает

1. Иметь специальную машину на домене RM сервера (скажем, D1), который будет использоваться в качестве границы машина.

2. Определите этот аппарат как граничную машину в RM, указав общий путь, который будет использоваться вашим центром обработки данных. Перейдите на вкладку настроек в консоли WPF, создайте новую переменную - {Key = RMSharedUNCPath, Value = \\ BoundaryMachine \ DropsLocation}. Теперь RM понимает, что вы хотите использовать эту машину в качестве вашей граничной машины.

3. Убедитесь, что Вы заботитесь этих разрешений

  • RM-сервер должен иметь разрешение на запись на акцию \\ BoundaryMachine \ DropsLocation.
  • Передайте учетные данные домена D1 на целевой компьютер в центре обработки данных (Domain D2), который можно использовать для доступа к общей папке.

4. Полномочия могут быть переданы FRON консоли WPF, вы должны определить следующие две переменные конфигурации на вкладке настроек снова.

  • Ключ = RMSharedUNCPathUser; Значение = имя домена D1
  • Ключ = RMSharedUNCPathPwd; Значение = пароль для пользователя, указанного выше.

enter image description here

PS - Имена переменных чувствительны к регистру.

Кроме того, чтобы Р.М. знать, что вы хотите использовать механизм SharedUNC, установите соответствующий флажок для сервера RM и подключиться к нему через IP, а не имя DNS, поскольку они должны находиться в разных доменах, т.е.

enter image description here

+0

Подробнее о работе с ненадежными доменами - http://blogs.msdn.com/b/biprasad/archive/2015/02/03/using-release-management- to-deploy-to-untrusted-target-server.aspx и http: //blogs.msdn.com/b/visualstudioalm/archive/2013/12/12/configuration-release-management-to-work-through-untrusted.aspx – divyanshm

+0

Это именно то, что я делаю atm, и у меня это работает на сервере webdav, но это действительно хакерское решение. Если бы я мог использовать только sftp или что-то подобное ... –

+0

Можете ли вы использовать что-то подобное для загрузки бит на целевой машине - https://social.technet.microsoft.com/Forums/windowsserver/en-US/1c9e20fd-19d7-41b4-8edb-d6673ab35bec/sftp-in-powershell – divyanshm

0

Try использовать Get-Content на локальном сервере-то Set-Content на удаленном сервере, проходящей содержимое файла через;

Может упаковать все в архив какого-либо рода.

+0

Можете ли вы опубликовать пример? –

0

Управление выпуском копирует файл VisualStudioRemoteDeployer.exe в папку C: \ Windows \ DtlDownloads \ VisualStudioRemoteDeployer на целевом сервере, а затем копирует скрипты из указанного места на целевой сервер с помощью robocopy.

Таким образом, вы должны предоставить разрешения с вашего целевого сервера на место вашего сценария.

+0

Это не помогает получить файлы на удаленную машину –

Смежные вопросы