Report the scanned commit as the project version
The pipeline leaves repository_version empty, but tags the Dependency-Track upload with the commit it scanned. Use that when no version is stated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
dc8ed38d8c
commit
08a8477442
1 file changed
+22
-5
@@ -52,6 +52,9 @@ SEVERITY_OF_LEVEL = {
|
|||||||
|
|
||||||
SEVERITY_ORDER = ("Critical", "High", "Medium", "Low")
|
SEVERITY_ORDER = ("Critical", "High", "Medium", "Low")
|
||||||
|
|
||||||
|
# A full git commit SHA.
|
||||||
|
_COMMIT = re.compile(r"[0-9a-f]{40}")
|
||||||
|
|
||||||
|
|
||||||
def build_context(
|
def build_context(
|
||||||
sources: ReportSources,
|
sources: ReportSources,
|
||||||
@@ -167,7 +170,6 @@ def _cover(
|
|||||||
manufacturer: str | None,
|
manufacturer: str | None,
|
||||||
) -> dict[str, Any]:
|
) -> dict[str, Any]:
|
||||||
"""The first page."""
|
"""The first page."""
|
||||||
configuration = metadata.get("configuration") or {}
|
|
||||||
technologies = [name for name, _ in tools] + (["SCA"] if sca is not None else [])
|
technologies = [name for name, _ in tools] + (["SCA"] if sca is not None else [])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -180,7 +182,7 @@ def _cover(
|
|||||||
_fact("Scan Identifier", sources.scan_id, kind="mono"),
|
_fact("Scan Identifier", sources.scan_id, kind="mono"),
|
||||||
_fact("Technology", ", ".join(technologies) or None),
|
_fact("Technology", ", ".join(technologies) or None),
|
||||||
_fact("Project", project, gap=True),
|
_fact("Project", project, gap=True),
|
||||||
_fact("Version", configuration.get("repository_version")),
|
_fact("Version", _version(metadata), kind="mono"),
|
||||||
_fact("Report Created", datetime.now(UTC).strftime("%A, %B %d, %Y")),
|
_fact("Report Created", datetime.now(UTC).strftime("%A, %B %d, %Y")),
|
||||||
_fact("Manufacturer", manufacturer),
|
_fact("Manufacturer", manufacturer),
|
||||||
],
|
],
|
||||||
@@ -250,16 +252,31 @@ def _stage(stage: dict[str, Any], sources: ReportSources) -> dict[str, Any]:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def _version(metadata: dict[str, Any]) -> str | None:
|
||||||
|
"""What version of the project was scanned: the stated one, else the commit the SBOM was uploaded for.
|
||||||
|
|
||||||
|
The pipeline leaves ``repository_version`` empty but tags the Dependency-Track upload with the
|
||||||
|
commit it scanned, which is the most precise version there is.
|
||||||
|
"""
|
||||||
|
configuration = metadata.get("configuration") or {}
|
||||||
|
stated = configuration.get("repository_version")
|
||||||
|
|
||||||
|
if stated:
|
||||||
|
return str(stated)
|
||||||
|
|
||||||
|
commit = (configuration.get("deptrace_upload") or {}).get("project_version")
|
||||||
|
|
||||||
|
return commit if isinstance(commit, str) and _COMMIT.fullmatch(commit) else None
|
||||||
|
|
||||||
|
|
||||||
def _project(metadata: dict[str, Any], project: str | None) -> dict[str, Any]:
|
def _project(metadata: dict[str, Any], project: str | None) -> dict[str, Any]:
|
||||||
"""What was scanned."""
|
"""What was scanned."""
|
||||||
configuration = metadata.get("configuration") or {}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"id": "project",
|
"id": "project",
|
||||||
"title": "Project Information",
|
"title": "Project Information",
|
||||||
"overview": [
|
"overview": [
|
||||||
_fact("Project", project),
|
_fact("Project", project),
|
||||||
_fact("Version", configuration.get("repository_version")),
|
_fact("Version", _version(metadata), kind="mono"),
|
||||||
# Nothing in the pipeline counts lines, so nothing here can report them.
|
# Nothing in the pipeline counts lines, so nothing here can report them.
|
||||||
_fact("Analysed lines of code", None),
|
_fact("Analysed lines of code", None),
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in new issue
Block a user