Как выполнить XSLT для XML-файла в VSTS (Azure DevOps) с помощью Saxon?

Я работаю в 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, созданный PHPUnit, в VSTS здесь. Оказывается, они просто не поддерживают вывод PHPUnit. Участник сообщества опубликовал эту суть файла XSL для преобразования XML в формат, понятный VSTS (Azure DevOps).

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

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

Итак, что это за ОС, к которой у вас есть доступ для запуска Saxon, это система Windows с .NET framework 4 или новее? Затем вы можете установить .NET-версию Saxon 9.8 HE из sourceforge.net/projects/saxon/files/Saxon-HE/9.8 и запустить ее, как описано в документации (Transform -s:input.xml -xsl:sheet.xsl) в saxonica.com/html/documentation/using-xsl/commandline. Если у вас установлена ​​Java или вы можете ее установить, вы можете использовать версию Saxon 9.8 HE для Java.

Martin Honnen 13.09.2018 17:14

Понятия не имею, почему вы спрашиваете о древнем Saxon-B, он доступен на sourceforge.net/projects/saxon/files/Saxon-B, документация по ссылке для скачивания с saxon.sourceforge.net.

Martin Honnen 13.09.2018 17:16

Я уже упоминал, что запускаю это на агенте сборки Ubuntu 16.04 выше. Я спрашиваю о Saxon-B, потому что это то, что OP исправления сказал, что он использовал, до 8 утра я понятия не имел, что такое Saxon. В настоящее время я пытаюсь запустить JAR-файл Saxon 9 HE на моем агенте сборки, добавив JAR в свое репо. Спасибо за помощь и ссылки.

Colin 13.09.2018 17:30

Да, я видел это с Ubuntu, но, поскольку вы также упомянули PowerShell, я не был уверен и до сих пор не уверен, доступны ли инструменты Windows или платформа .NET. Но я думаю, что подойдет версия Saxon для Java.

Martin Honnen 13.09.2018 19:19

Да, PowerShell доступен, поскольку я использую агент сборки, размещенный на сервере Microsoft. В итоге я заставил все работать, добавив банку в свой репозиторий и выполнив эту банку после запуска тестов. После этого я выгружаю весь каталог, содержащий банку и результаты тестов, чтобы они не попадали в продакшн.

Colin 13.09.2018 21:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
849
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Я выполнил банку, просто выполнив двоичный файл 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

Вы можете Примите это как ответ, это может быть полезно для других членов сообщества, читающих эту ветку.

Andy Li-MSFT 17.09.2018 08:07

Для примера вы можете увидеть это здесь: github.com/Microsoft/azure-pipelines-tasks/issues/8305

Umbert P. 05.11.2018 11:26

Другие вопросы по теме