2017-05-11 1 views
0

Ich bin neu in TFS und brauche Hilfe, um folgendes Problem zu überwinden.Aufruf von Batch-Skript mit bestimmten Benutzer von TFS Build-Server

Ich habe einen Desktop, der ein lizenziertes Test-Tool und automatisierte Tests mit diesem Tool entwickelt hat. Die Lizenz des Tools ist an den Benutzer gebunden, der an diesem Desktop angemeldet ist. Jetzt habe ich eine Batchdatei für meine automatisierten Tests erstellt und möchte diese Batchdatei von TFS aufrufen. Ich habe den TFS-Agenten auf dem Desktop installiert, auf dem sich dieses Tool befindet, und auf dem TFS-Server eine Build-Definition konfiguriert, die diese Batch-Datei ausführt. Bis hier funktioniert alles gut.

Das Problem ist, wenn das Batch-Skript vom TFS-Agenten aufgerufen wird (denke ich) es als SYSTEM-Benutzer und nicht der Benutzer beteiligt ist, der an die Lizenz gebunden ist. Aus diesem Grund schlägt die Lizenzprüfung fehl und meine Tests können nicht ausgeführt werden. Gibt es eine Möglichkeit, TFS mitzuteilen, das Stapel-Skript mit einem bestimmten Benutzer auszuführen?

Antwort

0

Die Batch-Skripts werden mit dem Build-Dienstkonto ausgeführt. Wenn Sie das Stapelscript mit einem bestimmten Konto ausführen möchten, müssen Sie das Build-Agent-Dienstkonto ändern.

Für TFS 2015 Build-Agenten, den Befehl ausführen:

C:\Agent\Agent\VsoAgent.exe /ChangeWindowsServiceAccount 

zu diesem Dokument Bitte lesen Sie das Konto ändern: https://www.visualstudio.com/en-us/docs/build/actions/agents/v1-windows

Wenn Sie TFS 2017 Build-Agenten verwenden, re-configure es einfach und angeben, dass Konto, wenn Sie es neu konfigurieren.

+0

Wenn der Agent von mehr als ein Projekt verwendet wird 's keine gute Idee, um die Identität des Agenten zu wechseln. – k7s5a

0

Sie können ein PowerShell-Wrapper-Skript verwenden, um eine ausführbare Datei mit anderer Identität zu starten.

param (

    [Parameter(Mandatory=$True)] 
    [string]$username, 
    [Parameter(Mandatory=$True)] 
    [string]$password, 
    [Parameter(Mandatory=$True)] 
    [string]$executable, 
    [Parameter(Mandatory=$False)] 
    [string[]]$arguments, 
    [Parameter(Mandatory=$False)] 
    [string]$workingDirectory 
) 


$secpassword = $password | ConvertTo-SecureString -asPlainText -Force 
$password = $null 
$credentials = New-Object System.Management.Automation.PSCredential($username,$secPassword) 

$workingDirectory = if([string]::IsNullOrEmpty($workingDirectory)){(Get-Item -Path ".\").FullName} 

Start-Process $executable -ArgumentList $arguments -WorkingDirectory $workingDirectory -Credential ($credentials) 

Erstellen Sie eine versteckte Variable "Passwort" in Ihrer Build- oder Release-Definition mit dem Passwort und setzen Sie die Sichtbarkeit auf versteckt.

Rufen Sie dieses Skript mit dem Power Schritt:

-username "username" -password = $(password) -executable "myExecutable" -arguments '-param "param1"','-param2 "param2"','-param3"d:\directory\with blanks in a path\"' 
Verwandte Themen