{% set branch = env.get('SYSTEM_PULLREQUEST_SOURCEBRANCH') if env.get('SYSTEM_PULLREQUEST_SOURCEBRANCH') else env.get('BUILD_SOURCEBRANCHNAME') %}
{% set build = env.get('BUILD_BUILDNUMBER') %}
{% set build_url = '%s%s/_build/results?buildId=%s' % (env.get('SYSTEM_TEAMFOUNDATIONCOLLECTIONURI'), env.get('SYSTEM_TEAMPROJECT'), env.get('BUILD_BUILDID')) %}
{% set commit = env.get('BUILD_SOURCEVERSION') %}
{% set isfork = env.get('SYSTEM_PULLREQUEST_ISFORK') == 'True' %}
{% set rel_url = env.get('RELEASE_RELEASEWEBURL') %}
{% set release = env.get('RELEASE_RELEASENAME') %}
{% set repo = env.get('BUILD_REPOSITORY_NAME') if isfork else ('Azure/' + repo_name) %}
{% macro pluralize(num, singular, plural) -%}
{% if num == 1 %}{{ singular }}{% else %}{{ plural }}{% endif %}
{%- endmacro %}
{{ repo_name|capitalize }} Dependency Report
{{ repo_name|capitalize }} Dependency Report
Generated at {{ curtime.replace(microsecond=0).isoformat() }}Z
{% if release %}
for release {{ release }}
{% elif build %}
for build {{ build }}
{% if branch %}
from branch {{ branch }}
{% if isfork %}
in repo {{ repo }}
{% endif %}
{% endif %}
{% if commit %}
({{ commit[:7] }})
{% endif %}
{% endif %}
{{ dependencies|length - external|length }} internal and {{ external|length }} external package {{ pluralize(dependencies|length,'dependency was','dependencies were') }} analyzed to determine if any packages declare irreconcilable dependency versions.
{% if incompatible %}
{{ incompatible|length }} incompatible package dependency {{ pluralize(incompatible|length,'version was','versions were') }} discovered.
{% else %}
No incompatible package dependency versions were discovered.
{% endif %}
{% if known_reqs %}
{{ known_reqs|length }} {{ pluralize(known_reqs|length,'dependency was','dependencies were') }} discovered in the Shared Requirements.
{% if new_reqs %}
{{ new_reqs|length }} {{ pluralize(new_reqs|length,'dependency is','dependencies are') }} missing from the shared requirements.
{% endif %}
{% if not new_reqs %}
All declared dependencies were validated against those in the shared requirements file.
{% endif %}
{% else %}
No shared requirements file present in the repo, known requirements could not be validated.
{% endif %}
This report scanned {{ packages|length }} {{ pluralize(packages|length,'package','packages') }}.
{% for dep_name in ordered_deps %}
{% if loop.index == 1 %}
| Dependencies Discovered in Packages |
{% endif %}
{% if dep_name in external %}
{% set dep_type = "external" %}
{% else %}
{% set dep_type = "internal" %}
{% endif %}
{% if dep_name in incompatible %}
{% set dep_type = "incompatible " + dep_type %}
{% endif %}
| {{ dep_type|title }} Dependency: {{ dep_name }} |
{% for requirement, packages in dependencies[dep_name]|dictsort %}
| {{ requirement if requirement else '(empty)' }} |
{% for package_name in packages|sort %}
{{ package_name }}
{% endfor %}
|
{% endfor %}
{% endfor %}
| Known Dependencies |
{% if known_reqs %}
| Dependency |
{% endif %}
{% for name in known_reqs|sort %}
| {{ name }} |
{% endfor %}
{% if not known_reqs %}
| Unable to open shared_requirements.txt, shared requirements have not been validated |
{% endif %}
{% if new_reqs %}
{% for name in new_reqs|sort %}
{% if loop.index == 1 %}
| Dependencies Missing from Shared Requirements |
{% endif %}
| Missing Dependency: {{ name }} |
{% for requirement, packages in dependencies[name]|dictsort %}
| {{ requirement if requirement else '(empty)' }} |
{% for package_name in packages|sort %}
{{ package_name }}
{% endfor %}
|
{% endfor %}
{% endfor %}
{% endif %}
| Packages Scanned for this Report |
| Package Analyzed | Package Version | Package Source |
{% for name, info in packages|dictsort %}
| {{ name }} |
{{ info.version }} |
{{ info.source }} |
{% endfor %}