Протестируйте модуль/сценарий Powershell как для Windows (меньше 5.1), так и для ядра (6 или более) с помощью AppVeyor CI

#powershell #appveyor #pester #pester-5

Вопрос:

У меня есть модуль PowerShell на github, который обеспечивает автоматизацию в AppVeyor, включая тестирование и публикацию.

Одно из недавних изменений нарушило работу новой версии Windows PowerShell. Некоторые группы все еще работают в Windows PowerShell, и они сообщили мне об этом (бывшие коллеги).

Мой вопрос в том, может ли и как данный модуль быть протестирован для обеих версий с помощью Pester. Очевидно, что в системе Windows вы можете запустить тест с pwsh помощью или powershell , но мне интересно, есть ли более чистая установка, работающая на Pester v5.

Кроме того, мне интересно, как это было бы возможно с AppVeyor, потому что в документе нет изображения как с v5, так и с v7 powershell? В качестве альтернативы в документе упоминается, что можно использовать несколько изображений, но я не понимаю, что произойдет. Цель состоит в том, чтобы протестировать на Windows и core и опубликовать один раз.

Комментарии:

1. Что касается вашего последнего вопроса: Используйте несколько изображений

Ответ №1:

Раньше я делал это через AppVeyor для некоторых моих модулей PowerShell. Мой вариант использования на самом деле состоял в том, чтобы тестировать как под Linux, так и под Windows, но при этом я эффективно тестировал ядро PS и Windows PowerShell. Модуль больше не использует AppVeyor, но я вернулся в историю фиксации и вытащил нижеприведенное из его appveyor.yml.

Как сказал Матиас, вы хотите использовать несколько изображений, и при необходимости вы также можете использовать разные изображения для запуска разных сценариев сборки:

 
image:
- WMF 5
- Ubuntu
- Visual Studio 2017

# Skip on updates to the readme.
# We can force this by adding [skip ci] or [ci skip] anywhere in commit message 
skip_commits:
  message: /updated README.*|update README.*s/

build: false

#Kick off the CI/CD pipeline
test_script:
  - pwsh: .build.ps1

for:
-
  matrix:
    only:
      - image: WMF 5
  
  test_script:
  - ps: .build.ps1
 

Я думаю, что для этого используются 3 образа, потому что он тестировался на Windows PowerShell, PS Core в Ubuntu и PS Core в Windows.

Комментарии:

1. Спасибо. Ваши цели идентичны моим, и образ linux/windows-это то, как я об этом думал. Из вашего файла yaml я не уверен, что понимаю, чем это отличается для каждого экземпляра, потому что у вас один и тот же build.ps1 вызов без каких-либо условий. Мой вопрос в том, как складываются изображения для тестирования и одной публикации. Я предполагаю, что все изображения проходят тест, а последнее публикуется (если другие изображения в порядке), и вы контролируете это с помощью переменных и параметров и т. Д.

2. Ваше право, это та же сборка.ps1, но один вызывается с помощью pwsh , который использует ядро PowerShell, а другой с помощью ps , который использует Windows PowerShell. Я думаю, что когда я использовал его, я просто опубликовал последнее изображение, но будьте осторожны, я думаю, что по умолчанию они могут выполняться параллельно.