Как выполнить XSLT для XML-файла в VSTS (Azure DevOps), используя Saxon? - PullRequest
0 голосов
/ 13 сентября 2018

Я работаю в Visual Studio Team Services (теперь это Azure DevOps).Я использую PHPUnit и экспортирую результаты теста как JUnit для VSTS для использования;Тем не менее, я получаю сообщение об ошибке при попытке запустить задачу PublishTestResults с XML-файлом PHPUnit:

"##[warning]Invalid results file. Make sure the result format of the file '/home/vsts/work/1/s/styled-results.xml' matches 'JUnit' test results format."

Так что после долгого исследования проблемы я нашел еще одного человека, пытающегося опубликовать файл JUnit, сгенерированный PHPUnitVSTS здесь .Оказывается, они просто не поддерживают вывод PHPUnit. Участник сообщества опубликовал эту суть XSL-файла, чтобы преобразовать XML в формат, понятный VSTS (Azure DevOps).

Создатель сущности упомянул, что он использовал saxonb взадача сценария на VSTS для обработки XSLT.Я понятия не имею, как запустить saxonb на VSTS.Я не знаю ни имени исполняемого файла для вызова, опций и т. Д. Я пробовал документы Saxon, но не могу заставить его работать с агентом сборки VSTS Ubuntu 16.04.

Я долженТакже обратите внимание, что я попытался выполнить преобразование XSL через PowerShell , но безуспешно.

1 Ответ

0 голосов
/ 13 сентября 2018

Вы можете загрузить Java-версию Saxon 9 HE в виде JAR и запустить этот JAR в VSTS (Azure DevOps).Я работаю на хост-агенте Ubuntu 16.04 (который поставляется с уже установленными Java, PHP и т. Д.).

Я выполнил jar просто, выполнив двоичный файл java и передав мой JAR в то же место, что и мои файлы XML и XSL:

java -jar saxon9he.jar -xsl:phpunit_to_junit.xsl -s:test-results.xml

При этом была сгенерирована папка, содержащая мои тестыотформатированный для VSTS (Azure DevOps) для использования.Ваша настройка будет отличаться, так как все мои тесты имеют '-Test.xml', проверьте опцию testResultsFiles.

Я настроил свои тесты на вывод с помощью '-Test.xml', изменив следующую строку в XSL.

<xsl:variable name="filename" select="concat('TEST-',@name,'-Test.xml')" />

Следующим шагом была публикация моих тестов с использованием PublishTestResults.задача.Это то, что содержит мой файл YAML для публикации результатов.

- task: PublishTestResults@2
  displayName: 'Publish test results'
  inputs:
    testRunner: 'JUnit'
    testResultsFiles: '**/*-Test.xml' 
    searchFolder: '$(System.DefaultWorkingDirectory)'
    mergeTestResults: false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...