Octopus Deploy не запускает скрипт PowerShell

У меня есть шаг процесса в Octopus Deploy для запуска некоторых тестов Selenium WebDriver путем вызова сценария PowerShell, но это приводит к ошибке.

Сценарий PowerShell выглядит следующим образом:

set nunitPath="C:\AutomatedTests"
cd %nunitPath%\
nunit-console SiteCore.nunit /include:BulkyWasteTests

При развертывании и выполнении шага процесса для запуска скрипта возникает следующая ошибка:

Set-Location : Cannot find path 'C:\Octopus\Work\20170110115049-7\%nunitPath%\' because it does not exist.

At C:\Octopus\Work\20170110115049-7\Script.ps1:2 char:3

+ cd %nunitPath%\

+ CategoryInfo          : ObjectNotFound: (C:\Octopus\Work...-7\%nunitPath %\:String) [Set-Location],    ItemNotFoundException 
+ FullyQualifiedErrorId :     PathNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

The remote script failed with exit code 1

Я не понимаю, почему ошибка сообщает о расположении, отличном от местоположения, указанного в сценарии PowerShell. Любая помощь очень ценится.


person Michael Piraner    schedule 10.01.2017    source источник


Ответы (2)


cd — это псевдоним для Set-Location, поэтому вы можете сказать, что это вторая строка, которую вам нужно изменить, посмотрев на ошибку. Ваша строка cd пытается установить местоположение в переменной среды% nunitpath%, а не в переменной сценария nunitPath.

Чтобы сослаться на переменную скрипта, используйте $nunitpath

Итак, ваш скрипт должен выглядеть так:

set nunitPath "C:\AutomatedTests"
cd $nunitpath
nunit-console SiteCore.nunit /include:BulkyWasteTests

Отредактировано с дополнительным правильным комментарием @4c74356b41.

person Jim Moyle    schedule 10.01.2017
comment
set не работает таким образом в powershell, так как это псевдоним set-variable, должен быть set nunitPath "C:\AutomatedTests" - person 4c74356b41; 10.01.2017
comment
Я изменил синтаксис скрипта, чтобы он был правильным, но все равно получаю ту же ошибку. Возможно, это проблема с разрешением на сервере? - person Michael Piraner; 16.01.2017
comment
По крайней мере, вы должны получить другую ошибку, можете ли вы опубликовать это? - person Jim Moyle; 16.01.2017
comment
Я решил последнюю ошибку, которая была: ObjectNotFound: (nunit-console:String) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: CommandNotFoundException - person Michael Piraner; 19.01.2017
comment
Однако теперь я получаю другую ошибку: OpenQA.Selenium.WebDriverException: было создано исключение с нулевым ответом при отправке HTTP-запроса на удаленный сервер WebDriver для URL-адреса localhost:53393/сессия. Базовое соединение было закрыто: при приеме произошла непредвиденная ошибка. ----› System.Net.WebException : базовое соединение было закрыто: при приеме произошла непредвиденная ошибка. ----› System.IO.IOException : Невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. - person Michael Piraner; 19.01.2017

PowerShell не использует синтаксис %variablename% для расширения ссылок на переменные среды в строке. Это синтаксис cmd.exe. В PowerShell вместо этого напишите $env:variablename.

person Bill_Stewart    schedule 10.01.2017
comment
Спасибо за ваш ответ - person Michael Piraner; 12.01.2017