Есть ли в выпусках TFS способ выполнения сценария powershell для загрузки артефактов на одном и том же агенте? - PullRequest
0 голосов
/ 08 февраля 2019

Проблема: мы проводим тесты Selenium с использованием конвейеров выпуска.Если развертывание среды, в которой выполняются эти тесты, отменено, драйверы могут быть не уничтожены, и это заблокирует рабочую папку.Поэтому, когда развертывание происходит снова в той же среде в определении выпуска (не имеет значения, является ли это новым выпуском или повторным развертыванием), агент выпуска выдаст ошибку, что рабочая папка заблокирована.

Итак, у нас есть задача powershell со встроенным сценарием, который выполняет очистку (он встроен, поэтому нет зависимостей), но, к сожалению, конвейер выпуска TFS пытается загрузить артефакты в заблокированную папку перед запуском упомянутого сценария powershell.

Есть ли способ выполнить встроенный PowerShell до того, как конвейер выпуска загрузит артефакты?

У нас есть частичное решение, которое использует несколько этапов, но это будет работать только в течение очереди развертыванияне занят, и мы приближаемся к тому моменту, когда это будет в будущем, и когда очередь занята, TFS может выбирать разных агентов для разных этапов развертывания конкретной среды, в результате чего этот подход не работает.Так что бонусный вопрос от этого: альтернативно, можно ли заблокировать агент для развертывания конкретной среды, чтобы агент не переключался между фазами?

Я выполнил поиск обоих решений, и похоже, что неткоробочные решения, или я пропустил один?если нет, то есть ли какой-нибудь творческий способ достичь любого из них?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

У меня была похожая проблема с загрузкой артефакта, вы можете отключить этот шаг, щелкнув по имени среды, разверните Дополнительные параметры и затем выберите «пропустить загрузку артефакта»:

enter image description here

0 голосов
/ 09 февраля 2019

Вы подходите к этому не с того конца.Если процесс не удался, необходимо его очистить .Таким образом, добавьте задачу в конце выпуска с условием canceled() (или, возможно, ne(succeeded()) для выполнения операций очистки.

Также,вы не указали, на каком языке вы проводите тестирование Selenium, но в C # вы можете обернуть создание вашего веб-драйвера в блок using, чтобы убедиться, что он правильно очищает драйвер. Существуют якобы похожие конструкции или шаблоны на других языках.По сути, «если веб-драйвер выходит из области видимости, очистите его, точка».

...