From b1eb99cf98fdddada0f382a3b78fc511b070eb83 Mon Sep 17 00:00:00 2001 From: Nicolas Vuillamy Date: Sun, 18 Aug 2024 02:25:26 +0200 Subject: [PATCH] Fix Grafana job url for GitHub, Azure & Bitbucket (#3880) * Fix job url for GitHub, Azure & Bitbucket * [MegaLinter] Apply linters fixes * Change format of prometheus payload --------- Co-authored-by: nvuillam --- megalinter/reporters/ApiReporter.py | 6 ++--- megalinter/utils.py | 34 ++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/megalinter/reporters/ApiReporter.py b/megalinter/reporters/ApiReporter.py index e08ba13af39..ea7f55925df 100644 --- a/megalinter/reporters/ApiReporter.py +++ b/megalinter/reporters/ApiReporter.py @@ -255,17 +255,15 @@ def build_metrics_payload(self): all_metrics_lines = [] for linter in self.master.linters: if linter.is_active is True: - metric_id = linter.linter_name metric_line = ( - metric_id - + "," + "linter_run," + metric_base_tags + f"descriptor={linter.descriptor_id}," + f"linter={linter.linter_name}," + f"linterKey={linter.name}" + " " ) - metric_line += f"metric={linter.total_number_errors}" + metric_line += f"numberErrorsFound={linter.total_number_errors}" # Number of files & errors if linter.cli_lint_mode != "project": metric_line += f",numberFilesFound={len(linter.files)}" diff --git a/megalinter/utils.py b/megalinter/utils.py index 7d5594d224f..a27fe8d923d 100644 --- a/megalinter/utils.py +++ b/megalinter/utils.py @@ -6,6 +6,7 @@ import os import re import tempfile +import urllib.parse from fnmatch import fnmatch from typing import Any, Optional, Pattern, Sequence @@ -371,10 +372,41 @@ def get_git_context_info(request_id, path): [ "GITHUB_JOB_URL", "CI_JOB_URL", - # TODO: Handle Azure, BitBucket & Jenkins ], "", ) + # GitHub job url + if job_url == "" and config.get(request_id, "GITHUB_REPOSITORY", "") != "": + github_server_url = config.get( + request_id, "GITHUB_SERVER_URL", "https://github.com" + ) + github_repo = config.get(request_id, "GITHUB_REPOSITORY") + run_id = config.get(request_id, "GITHUB_RUN_ID") + job_url = f"{github_server_url}/{github_repo}/actions/runs/{run_id}" + # Azure Job url + elif job_url == "" and config.get(request_id, "SYSTEM_COLLECTIONURI", "") != "": + SYSTEM_COLLECTIONURI = config.get(request_id, "SYSTEM_COLLECTIONURI") + SYSTEM_TEAMPROJECT = urllib.parse.quote( + config.get(request_id, "SYSTEM_TEAMPROJECT") + ) + BUILD_BUILDID = config.get( + request_id, + "BUILD_BUILDID", + config.get(request_id, "BUILD_BUILD_ID"), + ) + job_url = f"{SYSTEM_COLLECTIONURI}{SYSTEM_TEAMPROJECT}/_build/results?buildId={BUILD_BUILDID}" + # BitBucket job url + elif job_url == "" and config.get(request_id, "BITBUCKET_STEP_UUID", "") != "": + bitbucket_project_url = config.get(request_id, "BITBUCKET_GIT_HTTP_ORIGIN", "") + bitbucket_pipeline_job_number = config.get( + request_id, "BITBUCKET_BUILD_NUMBER", "" + ) + pipeline_step_run_uuid = config.get(request_id, "BITBUCKET_STEP_UUID", "") + pipeline_step_run_uuid = urllib.parse.quote(pipeline_step_run_uuid) + job_url = ( + f"{bitbucket_project_url}/pipelines/results/" + f"{bitbucket_pipeline_job_number}/steps/{pipeline_step_run_uuid}" + ) return {"repo_name": repo_name, "branch_name": branch_name, "job_url": job_url}