Convert ansible-lint outputs to a jUnit valid xml tests result file.
Install ansible-lint-to-junit-xml
in your preferred Python env
pip install ansible-lint-to-junit-xml
Run ansible-lint
on the desired files and pipe to ansible-lint-to-junit-xml
ansible-lint -q -p <file or directly> | ansible-lint-to-junit-xml > results/ansible-lint-results.xml
Alternatively you can run ansible-lint
separately from ansible-lint-to-junit-xml
and use a file to pass the output
ansible-lint -q -p <file or directly> > ansible-lint-results.txt
ansible-lint-to-junit-xml ansible-lint-results.txt > results/ansible-lint-results.xml
Note: ansible-lint
must run with -p
for the output to be machine parsable
- Pipe output directly from
ansible-lint
call - Output XML file is compliant with jenkins junit5 Schema.
- Built using Nekroze/cookiecutter-pypackage
- This project appeared as an alternative to wasilak's ansible-lint-junit.
Running ansible-lint
on a file results in:
playbooks/test_playbook.yml:41: [E303] curl used in place of get_url or uri module playbooks/tasks/example_task.yml:28: [E601] Don't compare to literal True/False
Running ansible-lint
and piping the output to ansible-lint-to-junit-xml
looks line this:
ansible-lint -q -p playbooks/test_playbook.yml | ansible-lint-to-junit-xml
Would result in:
<?xml version="1.0" ?>
<testsuites>
<testsuite errors="2" name="ansible-lint" tests="2">
<testcase name="[E303] curl used in place of get_url or uri module">
<failure message="playbooks/test_playbook.yml:41: [E303] curl used in place of get_url or uri module" type="ansible-lint">
ansible-lint error: [E303] curl used in place of get_url or uri module
ansible-lint error description: [E303] curl used in place of get_url or uri module
filename: playbooks/test_playbook.yml
line nr: 41
</failure>
</testcase>
<testcase name="[E601] Don't compare to literal True/False">
<failure message="playbooks/tasks/example_task.yml:28: [E601] Don't compare to literal True/False" type="ansible-lint">
ansible-lint error: [E601] Don't compare to literal True/False
ansible-lint error description: [E601] Don't compare to literal True/False
filename: playbooks/tasks/example_task.yml
line nr: 28
</failure>
</testcase>
</testsuite>
</testsuites>