{% 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 %}
{{ dependencies|length - external|length }} internal and {{ external|length }} external package {{ pluralize(dependencies|length,'dependency was','dependencies were') }} analyzed to determine if any packages declare inconsistent dependency versions.
{% if inconsistent %}
{{ inconsistent|length }} inconsistent package dependency {{ pluralize(inconsistent|length,'version was','versions were') }} discovered.
{% else %}
No inconsistent package dependency versions were discovered.
{% endif %}
{% if frozen %}
{{ frozen|length }} dependency {{ pluralize(frozen|length,'version was','versions were') }} discovered in the lockfile.
{% if override_count %}
{{ override_count }} dependency version {{ pluralize(override_count,'override is','overrides are') }} present, causing dependency versions to differ from the version in the lockfile.
{% endif %}
{% if new_reqs %}
{{ new_reqs|length }} {{ pluralize(new_reqs|length,'dependency is','dependencies are') }} missing from the lockfile.
{% endif %}
{% if non_overridden_reqs_count %}
{{ non_overridden_reqs_count }} dependency {{ pluralize(non_overridden_reqs_count,'version does','versions do') }} not match the version in the lockfile.
{% endif %}
{% if not new_reqs and not non_overridden_reqs_count %}
All declared dependency versions were validated against those in the lockfile.
{% endif %}
{% else %}
No lockfile is present in the repo, declared dependency versions were not able to be validated.
{% endif %}
This report scanned {{ packages|length }} {{ pluralize(packages|length,'package','packages') }}.
Dependencies Discovered in Packages | |
---|---|
{{ dep_type|title }} Dependency: {{ dep_name }} | |
{{ requirement if requirement else '(empty)' }} |
{% for package_name in packages|sort %}
{{ package_name }}
{% if dep_name in overrides and requirement in overrides[dep_name] and package_name in overrides[dep_name][requirement] %}
override
{% endif %}
{% endfor %} |
Dependencies Frozen in Lockfile | ||||
---|---|---|---|---|
Dependency | Frozen Version | Dependency State | ||
{{ name }} | {{ versions[0] if versions[0] else '(empty)' }} | {% if name in missing_reqs %}⚠️ No packages reference this dependency | {% elif name in changed_reqs %}
❌ One or more packages reference a different version of this dependency
{% for spec, libs in dependencies[name]|dictsort %}
{% if spec != versions[0] %}
{% for package in libs|sort %}
{{ package }} ({{ spec }})
{% endfor %} {% endif %} {% endfor %} |
{% else %}
✅ All packages validated against this dependency and version | {% endif %}
Unable to open shared_requirements.txt, shared requirements have not been validated |
Dependencies Missing from Lockfile | |
---|---|
Missing Dependency: {{ name }} | |
{{ requirement if requirement else '(empty)' }} |
{% for package_name in packages|sort %}
{{ package_name }} {% endfor %} |
Packages Scanned for this Report | ||
---|---|---|
Package Analyzed | Package Version | Package Source |
{{ name }} | {{ info.version }} | {{ info.source }} |