Azure Devops - задача PowerShell на автономном агенте - PullRequest
0 голосов
/ 24 июня 2019

У меня есть конфигурация конвейера развертывания Azure Devops, и я могу без проблем выполнить развертывание на собственной виртуальной машине.

У меня есть следующий скрипт PowerShell, который корректно очищает мой каталог назначения, оставляя 2 папки, которые не являются частью системы контроля версий

Get-ChildItem -Path  'C:\inetpub\wwwroot\testDeploy\' -Recurse -exclude "pod","photos" |
Select -ExpandProperty FullName |
Where {$_ -notlike  '*\pod\*' -and $_ -notlike '*\photos\*'} |
sort length -Descending |
Remove-Item -force 

Я попытался добавить задачу «Сценарий PowerShell», но яЯ не знаю, как получить сценарий PowerShell в папку, к которой может получить доступ задача, например, $ (System.DefaultWorkingDirectory).Может кто-нибудь посоветовать, как мне следует либо генерировать файл, либо хранить его в репозитории, который затем будет доступен для самодостаточного агента Windows

1 Ответ

1 голос
/ 25 июня 2019

Согласитесь с Shayki, вы можете создать файл powershell ( .ps1 ) в репозиториях и вставить в него свой скрипт, чтобы добиться этого.А затем, используйте задачу powershell, чтобы выполнить скрипт, который в файле ps1.

Но, как вы сказали, вы хотите, чтобы он легко сохранялся в репозиториях.Нужно внести некоторые изменения в ваш скрипт:

Param(
    [string]$RootPath,
    [string]$File1,
    [string]$File2,
    [string]$NonLike1,
    [string]$NonLike2
)

Get-ChildItem -Path  $RootPath -Recurse -include $File1,$File2 |
Select -ExpandProperty FullName |
Where {$_ -notlike  $NonLike1 -and $_ -notlike $NonLike2} |
sort length -Descending |
Remove-Item -Recurse -force

Первое изменение заключается в том, что вам нужно заменить жесткий код на переменную.Передавайте значение вместе с задачей, это хороший способ сохранить ваш сценарий.

Вторым важным изменением является добавление -Recurse после Remove-Item, иначе вы получите ошибку, показанную ниже, в то время как значение$ RootPath - это жесткий код, такой как 'C: \ Users \'.

Remove-Item: Windows PowerShell находится в неинтерактивном режиме.Функция чтения и подсказки недоступна.

И затем вы можете добавить задачу в конвейер сборки.Добавьте Script path, где расположен файл .ps1 , и введите Аргументы со значением:

enter image description here

Если вы хотитедоступ $(System.DefaultWorkingDirectory), передать его $RootPath.

Надеюсь, мой образец поможет вам достичь того, что вы хотите.

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