diff --git a/src/macaron/config/defaults.ini b/src/macaron/config/defaults.ini index a58d375c3..a20c52937 100644 --- a/src/macaron/config/defaults.ini +++ b/src/macaron/config/defaults.ini @@ -460,3 +460,5 @@ hostname = search.maven.org # The search REST API. See https://central.sonatype.org/search/rest-api-guide/ search_endpoint = solrsearch/select request_timeout = 20 +[check.two_person] +required_reviewers = 1 diff --git a/src/macaron/slsa_analyzer/checks/two_person_reviewed_check.py b/src/macaron/slsa_analyzer/checks/two_person_reviewed_check.py new file mode 100644 index 000000000..c202bfa13 --- /dev/null +++ b/src/macaron/slsa_analyzer/checks/two_person_reviewed_check.py @@ -0,0 +1,224 @@ +# Copyright (c) 2023 - 2023, Oracle and/or its affiliates. All rights reserved. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/. + +"""This module contains the TwoPersonReviewedCheck class.""" + +import logging +import os + +from sqlalchemy import ForeignKey +from sqlalchemy.orm import Mapped, mapped_column + +from macaron.config.defaults import defaults +from macaron.database.database_manager import ORMBase +from macaron.database.table_definitions import CheckFacts +from macaron.slsa_analyzer.analyze_context import AnalyzeContext +from macaron.slsa_analyzer.checks.base_check import BaseCheck +from macaron.slsa_analyzer.checks.check_result import CheckResult, CheckResultType +from macaron.slsa_analyzer.git_service.api_client import GhAPIClient +from macaron.slsa_analyzer.registry import registry +from macaron.slsa_analyzer.slsa_req import ReqName + +logger: logging.Logger = logging.getLogger(__name__) + + +class TwoPersonReviewedTable(CheckFacts, ORMBase): + """Check result table for two-person_reviewed.""" + + __tablename__ = "_two_person_reviewed_check" + # The primary key. + id: Mapped[int] = mapped_column(ForeignKey("_check_facts.id"), primary_key=True) # noqa: A003 + __mapper_args__ = { + "polymorphic_identity": "_two_person_reviewed_check", + } + + +class TwoPersonReviewedCheck(BaseCheck): + """This Check checks whether the target submitted code has been reviewed by two people.""" + + def __init__(self) -> None: + """Initiate the BuildScriptCheck instance.""" + check_id = "mcn_two_person_reviewed_1" + description = "Check whether the merged pull requests has been reviewd and approved by at least one reviewer." + depends_on: list[tuple[str, CheckResultType]] = [] + eval_reqs = [ReqName.TWO_PERSON_REVIEWED] + super().__init__( + check_id=check_id, + description=description, + depends_on=depends_on, + eval_reqs=eval_reqs, + # result_on_skip=CheckResultType.FAILED, + ) + + def _get_graphql_query(self, with_commit_sha: bool) -> str: + """Get the graphql query based on whether the commit sha is provided. + + Parameters + ---------- + with_commit_sha : bool + Whether providing commit sha. + commit_sha : str | None + The commit sha provided by user. + + Returns + ------- + str + The graphql query + """ + if with_commit_sha: + return """ + query ($owner: String!, $name: String!, $commit_sha: String!) { + repository(owner: $owner, name: $name) { + object(expression: $commit_sha) { + ... on Commit { + associatedPullRequests(first: 10) { + edges { + node { + reviewDecision + state + baseRefName + author { + __typename + } + mergedBy { + __typename + } + } + } + } + } + } + } + } + """ + return """ + query ($owner: String!, $name: String!, $cursor: String, $branch_name: String) { + repository(owner: $owner, name: $name) { + pullRequests(first: 100, states: MERGED, after: $cursor, baseRefName: $branch_name) { + totalCount + pageInfo { + hasNextPage + endCursor + } + edges { + node { + reviewDecision + author { + __typename + } + mergedBy { + __typename + } + } + } + } + } + } + """ + + def _extract_data(self, ctx: AnalyzeContext, client: GhAPIClient, commit_sha: str | None) -> dict: + """Implement the check in this method. + + Parameters + ---------- + ctx : AnalyzeContext + The object containing processed data for the target repo. + check_result : CheckResult + The object containing result data of a check. + + Returns + ------- + CheckResultType + The result type of the check (e.g. PASSED). + """ + approved_pr_num = 0 + merged_pr_num = 0 + has_next_page = True + end_cursor = None + variables = { + "owner": ctx.component.repository.owner, + "name": ctx.component.repository.name, + "cursor": end_cursor, + "branch_name": ctx.component.repository.branch_name, + } + + # "commitSha": ctx.component.repository.commit_sha, + if commit_sha: + variables["commit_sha"] = commit_sha + result = client.graphql_fetch_associated_prs(variables=variables) + merged_pr_num = result["merged_pr_num"] + approved_pr_num = result["approved_pr_num"] + else: + while has_next_page: + variables["end_cursor"] = end_cursor + pull_requests = client.graphql_fetch_pull_requests(variables=variables) + merged_pr_num = pull_requests["merged_pr_num"] + has_next_page = pull_requests["has_next_page"] + end_cursor = pull_requests["end_cursor"] + approved_pr_num += pull_requests["approved_pr_num"] + # logger.info(f"[merge_pr]: {merged_pr_num} / [approved_pr]: {approved_pr_num}") + + return {"approved_pr_num": approved_pr_num, "merged_pr_num": merged_pr_num} + + def run_check(self, ctx: AnalyzeContext, check_result: CheckResult) -> CheckResultType: + """Implement the check in this method. + + Parameters + ---------- + ctx : AnalyzeContext + The object containing processed data for the target repo. + check_result : CheckResult + The object containing result data of a check. + + Returns + ------- + CheckResultType + The result type of the check (e.g. PASSED). + """ + check_result["result_tables"] = [TwoPersonReviewedTable()] + required_reviewers = defaults.get_list("check.two_person", "required_reviewers", fallback=[]) + logger.info("Reviewers number required: %s", {required_reviewers[0]}) + commit_sha: str | None = ctx.component.repository.commit_sha + with_commit_sha: bool = bool(commit_sha) + query: str = self._get_graphql_query(with_commit_sha=with_commit_sha) + token = os.getenv("GITHUB_TOKEN") + headers: dict = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + } + client = GhAPIClient( + { + "headers": headers, + "query": query, + } + ) + # TODO filter mannequin from with merge-by + # GitHub GraphQL API endpoint + + data = self._extract_data( + ctx=ctx, + client=client, + commit_sha=commit_sha, + ) + + approved_pr_num: int = data["approved_pr_num"] + merged_pr_num: int = data["merged_pr_num"] + + logger.info( + "%d pull requests have been reviewed by at least two person, and the pass rate is %d / %d", + approved_pr_num, + approved_pr_num, + merged_pr_num, + ) + check_result["justification"].extend( + [ + f"{str(approved_pr_num)} pull requests have been reviewed by at least two person.", + f"The pass rate is {str(approved_pr_num)} / {str(merged_pr_num)}", + ] + ) + if approved_pr_num == merged_pr_num: + return CheckResultType.PASSED + return CheckResultType.FAILED + + +registry.register(TwoPersonReviewedCheck()) diff --git a/src/macaron/slsa_analyzer/git_service/api_client.py b/src/macaron/slsa_analyzer/git_service/api_client.py index 5ac0f0cd4..3f71ab1c5 100644 --- a/src/macaron/slsa_analyzer/git_service/api_client.py +++ b/src/macaron/slsa_analyzer/git_service/api_client.py @@ -12,7 +12,7 @@ from macaron.config.defaults import defaults from macaron.slsa_analyzer.asset import AssetLocator -from macaron.util import construct_query, download_github_build_log, send_get_http, send_get_http_raw +from macaron.util import construct_query, download_github_build_log, send_get_http, send_get_http_raw, send_post_graphql logger: logging.Logger = logging.getLogger(__name__) @@ -620,6 +620,112 @@ def download_asset(self, url: str, download_path: str) -> bool: return True + def graphql_fetch_associated_prs(self, variables: dict) -> dict: + """Fetch the associated pull requests given the user provided digest. + + Parameters + ---------- + variables : dict + The variables that are passed to the graphql query. + + Returns + ------- + dict + The results for one page of the pull requests' data. + """ + url = "https://api.github.com/graphql" + + response = send_post_graphql( + url=url, query=self.query_list, timeout=None, headers=self.headers, variables=variables + ) # nosec B113:request_without_timeout + + if response is None: + return {} + + response_json = response.json() + + approved_pr_num = 0 + merged_pr_num = 0 + ignore_analyse_list = ["Bot"] + branch_name = variables["branch_name"] + edges = response_json.get("data").get("repository").get("object").get("associatedPullRequests").get("edges") + for edge in edges: + node = edge.get("node") + review_decision = node.get("reviewDecision") + state = node.get("state") + base_ref_name = node.get("baseRefName") # branch name + author = node.get("author").get("__typename") + merge_by = node.get("mergedBy").get("__typename") + if author in ignore_analyse_list or merge_by in ignore_analyse_list: + continue + if base_ref_name == branch_name and state == "MERGED": + merged_pr_num += 1 + if review_decision == "APPROVED": + approved_pr_num += 1 + return {"merged_pr_num": merged_pr_num, "approved_pr_num": approved_pr_num} + + def graphql_fetch_pull_requests(self, variables: dict) -> dict: + """Fetch the pull requests from the specified branch (if specified). + + Parameters + ---------- + url : str + The graphql URL. + variables : dict + The variables that are passed to the graphql query. + + Returns + ------- + dict + The results for one page of the pull requests' data. + """ + + def filter_response(approved_pr_num: int) -> int: + """Filter the merges that are trigger by the dependent bot, and only remain the approved pull requests. + + Parameters + ---------- + approved_pr_num : int + The number of the pull requests are merged and approved by the reviewers. + + Returns + ------- + tuple + The dependabot_num and approved_pr_num cumulative results. + """ + ignore_analyse_list = ["Bot"] + for edge in response_json.get("data").get("repository").get("pullRequests").get("edges"): + node = edge.get("node") + review_decision = node.get("reviewDecision") + author = node.get("author").get("__typename") + merge_by = node.get("mergedBy").get("__typename") + if author in ignore_analyse_list or merge_by in ignore_analyse_list: + continue + if review_decision == "APPROVED": + approved_pr_num += 1 + return approved_pr_num + + url = "https://api.github.com/graphql" + response = send_post_graphql( + url=url, query=self.query_list, timeout=None, headers=self.headers, variables=variables + ) # nosec B113:request_without_timeout + + if response is None: + return {} + + response_json = response.json() + approved_pr_num = 0 + filtered_response = filter_response(approved_pr_num) + + pull_requests = response_json.get("data").get("repository").get("pullRequests") + + return { + "merged_pr_num": pull_requests.get("totalCount"), # nosec B113:request_without_timeout + "has_next_page": pull_requests.get("pageInfo").get("hasNextPage"), # nosec B113:request_without_timeout + "end_cursor": pull_requests.get("pageInfo").get("endCursor"), # nosec B113:request_without_timeout, + "approved_pr_num": filtered_response, # nosec B113:request_without_timeout, + } + def get_default_gh_client(access_token: str) -> GhAPIClient: """Return a GhAPIClient instance with default values. diff --git a/src/macaron/util.py b/src/macaron/util.py index 697e9dabc..7575ad235 100644 --- a/src/macaron/util.py +++ b/src/macaron/util.py @@ -99,6 +99,57 @@ def send_get_http_raw(url: str, headers: dict | None = None, timeout: int | None return response +def send_post_graphql(url: str, query: str, headers: dict, timeout: int | None, variables: dict) -> Response | None: + """Send the POST HTTPS request with the given parameters. + + This method also handle logging when the API server return error status code. + + Parameters + ---------- + url : str + The url of the request. + query : str + The graphql query. + headers : dict + The dict that describes the headers of the request. + timeout : int | None + The request timeout (optional). + variables : dict + The variables that are passed to graphql query. + + Returns + ------- + Response | None + The response object or None if there is an error. + """ + logger.debug("POST - %s", url) + try: + response = requests.post( + url=url, + headers=headers, + timeout=timeout or defaults.getint("requests", "timeout", fallback=10), + json={"query": query, "variables": variables}, + ) # nosec B113:request_without_timeout + except requests.exceptions.RequestException as error: + logger.debug(error) + return None + while response.status_code != 200: + logger.error( + "Receiving error code %s from server. Message: %s.", + response.status_code, + response.text, + ) + if response.status_code == 403: + check_rate_limit(response) + else: + return None + response = requests.post( + url=url, headers=headers, timeout=defaults.getint("requests", "timeout", fallback=10) + ) # nosec B113:request_without_timeout + + return response + + def check_rate_limit(response: Response) -> None: """Check the remaining calls limit to GitHub API and wait accordingly. diff --git a/tests/e2e/expected_results/docker_test/docker_test.json b/tests/e2e/expected_results/docker_test/docker_test.json index 6940d8964..75b0ca136 100644 --- a/tests/e2e/expected_results/docker_test/docker_test.json +++ b/tests/e2e/expected_results/docker_test/docker_test.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:09:42" + "timestamps": "2023-10-06 15:22:04", + "has_passing_check": true }, "target": { "info": { @@ -65,7 +66,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -82,7 +83,9 @@ "The build is triggered by": "https://github.com/timyarkov/docker_test/blob/404a51a2f38c4470af6b32e4e00b5318c2d7c0cc/.github/workflows/github-actions-basic.yml" }, "Deploy command: ['docker', 'push', 'mock_proj']", - "However, could not find a passing workflow run." + "However, could not find a passing workflow run.", + "The target repository does not use npm to deploy.", + "The target repository does not use yarn to deploy." ], "result_type": "PASSED" }, @@ -108,6 +111,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -142,7 +157,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -207,19 +222,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -227,23 +246,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/jackson-databind/jackson-databind.json b/tests/e2e/expected_results/jackson-databind/jackson-databind.json index 4d2999187..b470de86a 100644 --- a/tests/e2e/expected_results/jackson-databind/jackson-databind.json +++ b/tests/e2e/expected_results/jackson-databind/jackson-databind.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:24:16" + "timestamps": "2023-10-06 15:28:03", + "has_passing_check": true }, "target": { "info": { @@ -111,7 +112,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -154,6 +155,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -188,7 +201,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -253,19 +266,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -273,23 +290,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/maven/guava.json b/tests/e2e/expected_results/maven/guava.json index a608b9803..3d149ec81 100644 --- a/tests/e2e/expected_results/maven/guava.json +++ b/tests/e2e/expected_results/maven/guava.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:28:04" + "timestamps": "2023-10-06 15:29:26", + "has_passing_check": true }, "target": { "info": { @@ -66,7 +67,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -109,6 +110,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -143,7 +156,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -208,19 +221,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -228,23 +245,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/maven/maven.json b/tests/e2e/expected_results/maven/maven.json index d33a87a2f..d3dbbbb86 100644 --- a/tests/e2e/expected_results/maven/maven.json +++ b/tests/e2e/expected_results/maven/maven.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:28:08" + "timestamps": "2023-10-06 15:29:30", + "has_passing_check": true }, "target": { "info": { @@ -111,7 +112,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -149,6 +150,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "1 pull requests have been reviewed by at least two person.", + "The pass rate is 1 / 1" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -183,7 +196,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -248,19 +261,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -268,23 +285,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/maven/mockito.json b/tests/e2e/expected_results/maven/mockito.json index ee4791623..7b7a90609 100644 --- a/tests/e2e/expected_results/maven/mockito.json +++ b/tests/e2e/expected_results/maven/mockito.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:28:04" + "timestamps": "2023-10-06 15:29:26", + "has_passing_check": true }, "target": { "info": { @@ -66,7 +67,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -109,6 +110,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "1 pull requests have been reviewed by at least two person.", + "The pass rate is 1 / 1" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -143,7 +156,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -208,19 +221,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -228,23 +245,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/micronaut-core/caffeine.json b/tests/e2e/expected_results/micronaut-core/caffeine.json index 88ac3fe9a..84dd16b37 100644 --- a/tests/e2e/expected_results/micronaut-core/caffeine.json +++ b/tests/e2e/expected_results/micronaut-core/caffeine.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 22:55:15" + "timestamps": "2023-10-06 15:26:29", + "has_passing_check": true }, "target": { "info": { @@ -21,7 +22,7 @@ "predicateType": "https://slsa.dev/provenance/v0.2", "predicate": { "builder": { - "id": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/build.yml" + "id": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/release.yml" }, "buildType": "Custom github_actions", "invocation": { @@ -30,14 +31,14 @@ "digest": { "sha1": "05a040c2478341bab8a58a02b3dc1fe14d626d72" }, - "entryPoint": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/build.yml" + "entryPoint": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/release.yml" }, "parameters": {}, "environment": {} }, "buildConfig": { - "jobID": "build", - "stepID": "Publish Snapshot" + "jobID": "release", + "stepID": "Releasing" }, "metadata": { "buildInvocationId": "", @@ -111,7 +112,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -124,10 +125,10 @@ ], "justification": [ { - "The target repository uses build tool gradle to deploy": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/build.yml", - "The build is triggered by": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/build.yml" + "The target repository uses build tool gradle to deploy": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/release.yml", + "The build is triggered by": "https://github.com/ben-manes/caffeine/blob/05a040c2478341bab8a58a02b3dc1fe14d626d72/.github/workflows/release.yml" }, - "Deploy command: ['./gradlew', 'publishToSonatype']", + "Deploy command: ['./gradlew', 'publishToSonatype', 'closeAndReleaseSonatypeStagingRepository', '-Prelease']", "However, could not find a passing workflow run.", "The target repository does not use maven to deploy." ], @@ -155,6 +156,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -189,7 +202,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -254,19 +267,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -274,23 +291,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/micronaut-core/micronaut-core.json b/tests/e2e/expected_results/micronaut-core/micronaut-core.json index 6994537a9..d9194ff97 100644 --- a/tests/e2e/expected_results/micronaut-core/micronaut-core.json +++ b/tests/e2e/expected_results/micronaut-core/micronaut-core.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-13 10:04:00" + "timestamps": "2023-10-06 15:26:29", + "has_passing_check": true }, "target": { "info": { @@ -20,489 +21,489 @@ "predicateType": "https://slsa.dev/provenance/v0.2", "subject": [ { - "name": "build/repo/io/micronaut/micronaut-aop/4.1.5/micronaut-aop-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-aop/4.1.8/micronaut-aop-4.1.8.jar", "digest": { - "sha256": "73802ebdf244ba4a614e5e7d026c00e25e6fc718bd927a8dae4a49f36d41c878" + "sha256": "59de29bd6fddde20e51eaa065925cd22f1a9a51eddd784c4d97699ae3fccf71b" } }, { - "name": "build/repo/io/micronaut/micronaut-aop/4.1.5/micronaut-aop-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-aop/4.1.8/micronaut-aop-4.1.8.pom", "digest": { - "sha256": "2e2ce2ec9c717bfcd7382e204e075dc7f7e2c36a8355b50083492ae88e936cec" + "sha256": "ee957c1593d181dbd8ed8efbdf61b9b938db1c233a50c87ca765a6277e629a7a" } }, { - "name": "build/repo/io/micronaut/micronaut-buffer-netty/4.1.5/micronaut-buffer-netty-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-buffer-netty/4.1.8/micronaut-buffer-netty-4.1.8.jar", "digest": { - "sha256": "cd97191240ed8d454d6d781118afa62723d4495a7a0f968f91e4de1480b61740" + "sha256": "d977c7e50e95cb09efa858d71b0a03b262c8c015c48786c134dc371f6e2d714f" } }, { - "name": "build/repo/io/micronaut/micronaut-buffer-netty/4.1.5/micronaut-buffer-netty-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-buffer-netty/4.1.8/micronaut-buffer-netty-4.1.8.pom", "digest": { - "sha256": "71461285342a72a609847631546cfe0f5be06b2c85f908823a299d66efe3ece6" + "sha256": "9fcf9bef1d1e3cdf2df1cef7061d7eee93aed0c0aa2aaafbf8b3737ef5c6fc47" } }, { - "name": "build/repo/io/micronaut/micronaut-context-propagation/4.1.5/micronaut-context-propagation-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-context-propagation/4.1.8/micronaut-context-propagation-4.1.8.jar", "digest": { - "sha256": "eeb9c121c6d775c96a0fe59940f912a5166c99dea1c91b0543c299e838382919" + "sha256": "b7a2402103caec78c414f2504a0b171781ddcc3d126aceb2213844a867ff9a32" } }, { - "name": "build/repo/io/micronaut/micronaut-context-propagation/4.1.5/micronaut-context-propagation-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-context-propagation/4.1.8/micronaut-context-propagation-4.1.8.pom", "digest": { - "sha256": "fd584c1e901b9ffbacbc40099a8b4feecb34e947d5021f74deba5500357c2896" + "sha256": "703c457c6723a25f735483b97c640a318001ac402fce229a0f353a8b7eb1c75a" } }, { - "name": "build/repo/io/micronaut/micronaut-context/4.1.5/micronaut-context-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-context/4.1.8/micronaut-context-4.1.8.jar", "digest": { - "sha256": "247700e354746733ed8333fa4d498d157fca38d2570d7d8ca88fe4792c0eb39e" + "sha256": "31e9d0831cf91809ae9ad2e3e021d9cb2175a1104a14229f540122f93b2946b6" } }, { - "name": "build/repo/io/micronaut/micronaut-context/4.1.5/micronaut-context-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-context/4.1.8/micronaut-context-4.1.8.pom", "digest": { - "sha256": "8a6cfa79fbba8abcd8d234298a2d919016ada8fee686fb1e59395c66e25081a7" + "sha256": "c6430add705c4416dfbc1ea8fe936bed4601559a17bb6f705a6e3ee8f9cc2171" } }, { - "name": "build/repo/io/micronaut/micronaut-core-bom/4.1.5/micronaut-core-bom-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-core-bom/4.1.8/micronaut-core-bom-4.1.8.pom", "digest": { - "sha256": "2e2ffdd880006aeb3cd8919ca567f1677da872c8d4122a2fa3031673a5f6a380" + "sha256": "4e02f1e7a94b5a580686567c3b89ec2fda6c3ea9b141a9b187fde0b1053550ed" } }, { - "name": "build/repo/io/micronaut/micronaut-core-processor/4.1.5/micronaut-core-processor-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-core-processor/4.1.8/micronaut-core-processor-4.1.8.jar", "digest": { - "sha256": "f583e864c961919a8694c46cc7722a8f61b5d320f2b5e25e0e04392e519881d2" + "sha256": "35875e76de9d02475fe9c03fe4b7278b3ef2d72bedf012a2e1f0f1d62f2fd32c" } }, { - "name": "build/repo/io/micronaut/micronaut-core-processor/4.1.5/micronaut-core-processor-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-core-processor/4.1.8/micronaut-core-processor-4.1.8.pom", "digest": { - "sha256": "0c073217c3904f0952abb2133cf3e1b07793134d66c6ed01764bc000ff6f4a1e" + "sha256": "9979d1623ded86c3fff7c515dc667d4441991aed2abcc62d69a3886b68370879" } }, { - "name": "build/repo/io/micronaut/micronaut-core-reactive/4.1.5/micronaut-core-reactive-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-core-reactive/4.1.8/micronaut-core-reactive-4.1.8.jar", "digest": { - "sha256": "717cccd4a147d03d7d39588e91f7efdf537c93271687183358a007e7e4e4dab3" + "sha256": "8a235644af71ab07907f76fac79f1c98c4cfa68269e42a17071ee01107e46c7d" } }, { - "name": "build/repo/io/micronaut/micronaut-core-reactive/4.1.5/micronaut-core-reactive-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-core-reactive/4.1.8/micronaut-core-reactive-4.1.8.pom", "digest": { - "sha256": "75f1f0e86d7b6b630c3d5ef74d61070b4d767414d6c8db8f2c13fb63c295eefa" + "sha256": "89491f420ec46f3bb0590ae77133a1d356fea985f6ec8cff60bb2969056235ba" } }, { - "name": "build/repo/io/micronaut/micronaut-core/4.1.5/micronaut-core-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-core/4.1.8/micronaut-core-4.1.8.jar", "digest": { - "sha256": "20deddcb13c9861d9134bb1aeb1a4c654f479430bbd8e82db1f10539bac80680" + "sha256": "c5c08e4db083fc789223b13649969f069ea2cc5ccccfedc5bba6cc12cb7b6b5f" } }, { - "name": "build/repo/io/micronaut/micronaut-core/4.1.5/micronaut-core-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-core/4.1.8/micronaut-core-4.1.8.pom", "digest": { - "sha256": "bb3fb4b4f770b22a539e6ddb904c3fdead1fe1b9faf0bfe4a77ad79dba5f361e" + "sha256": "66033fb3501755ab007f8e85d70171b632fcaec4a3367818f63761b4f9dc718c" } }, { - "name": "build/repo/io/micronaut/micronaut-discovery-core/4.1.5/micronaut-discovery-core-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-discovery-core/4.1.8/micronaut-discovery-core-4.1.8.jar", "digest": { - "sha256": "72d4761f50b813397eaea8d86e30e0ca9831421912076fec0c034a6a88455624" + "sha256": "3f345334e1e478a5c307e24fcd8135ff0e5f26cc7c68a4e5f8fbf6a201b7cd38" } }, { - "name": "build/repo/io/micronaut/micronaut-discovery-core/4.1.5/micronaut-discovery-core-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-discovery-core/4.1.8/micronaut-discovery-core-4.1.8.pom", "digest": { - "sha256": "54c7ecfbb43baf81889f2b940bd62572ed1177ca00adbac360f587e384869f9d" + "sha256": "aa7ba34aa2ed422bd6fd95c86264251807610b668cbfc63ce339a76e4d8366e1" } }, { - "name": "build/repo/io/micronaut/micronaut-function-client/4.1.5/micronaut-function-client-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-function-client/4.1.8/micronaut-function-client-4.1.8.jar", "digest": { - "sha256": "a4326b92bd6834bfa509b83a4c835169823f4c9cc98979ac66271c2bc8fccb35" + "sha256": "5ada207bba9bacd378aa0e01ad60338cdb374a0c40e816206ad2e4e44507a8b4" } }, { - "name": "build/repo/io/micronaut/micronaut-function-client/4.1.5/micronaut-function-client-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-function-client/4.1.8/micronaut-function-client-4.1.8.pom", "digest": { - "sha256": "700eb2ccdb9e4ac5a7534236e9f59ed70dba702107b620478e2d3d08625d772e" + "sha256": "4ed7540f5efb407b400d61f01dbab212c411be2220b8d02166a9eb53df5a4230" } }, { - "name": "build/repo/io/micronaut/micronaut-function-web/4.1.5/micronaut-function-web-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-function-web/4.1.8/micronaut-function-web-4.1.8.jar", "digest": { - "sha256": "0dac163a6bc4f3ad018a882641cc03f8ff8cc831599925628034669e36659d45" + "sha256": "e4ea48049b5b9255466ebac9aaecce10642743c08d7ac824bed115d83164054e" } }, { - "name": "build/repo/io/micronaut/micronaut-function-web/4.1.5/micronaut-function-web-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-function-web/4.1.8/micronaut-function-web-4.1.8.pom", "digest": { - "sha256": "03f3c7227c71f756029e188d2d880b02bfb12b3441bd4e3540fe26129f09b257" + "sha256": "84a55381355661e0d5854e63d09c7a219af94c140ae0207d95a2c390e2f29afc" } }, { - "name": "build/repo/io/micronaut/micronaut-function/4.1.5/micronaut-function-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-function/4.1.8/micronaut-function-4.1.8.jar", "digest": { - "sha256": "ac43bedc4f66837515efc974556da3a0aacbdb0c7b3b3e72bd04f5bcda6e0862" + "sha256": "39076dab03aa891c0dbd5b23b0431a9b39fdbb7e07c0f88df7902ffa03f37619" } }, { - "name": "build/repo/io/micronaut/micronaut-function/4.1.5/micronaut-function-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-function/4.1.8/micronaut-function-4.1.8.pom", "digest": { - "sha256": "e88f360a124512b37df7a05f3cab2832dd3d518f54e3f39bd6e7b58db2425c05" + "sha256": "afb5ce6a07d56df429a4172fcd12c1835d01cd2dbf7af55280e861a7116bce79" } }, { - "name": "build/repo/io/micronaut/micronaut-graal/4.1.5/micronaut-graal-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-graal/4.1.8/micronaut-graal-4.1.8.jar", "digest": { - "sha256": "118be909e46f27c99ff3a5d731c199103e92f8432b76d31e0eb2f21d430d901f" + "sha256": "d81487d7d782a92d399c4e74761b40db6fbcb7c66cbf8939dac9975460fc73d3" } }, { - "name": "build/repo/io/micronaut/micronaut-graal/4.1.5/micronaut-graal-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-graal/4.1.8/micronaut-graal-4.1.8.pom", "digest": { - "sha256": "fa6732db0961ce05f5aa863a2f4009b8e1623670b2d67c9750fea814a25072f9" + "sha256": "c7936b3fffebbfb6382f9900d58d9a79d8477f2a5cd01ebdf58442c3875832ce" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client-core/4.1.5/micronaut-http-client-core-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-client-core/4.1.8/micronaut-http-client-core-4.1.8.jar", "digest": { - "sha256": "5c93939d5bf0db8a2c37ec8d38fb7685bf48f3a3751d30959e6e9a29b582b79d" + "sha256": "d68c1cf53b57c337cb76a182c403012a7464c13666c4417a09e4986086710d1c" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client-core/4.1.5/micronaut-http-client-core-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-client-core/4.1.8/micronaut-http-client-core-4.1.8.pom", "digest": { - "sha256": "fdf1597373951c1b788a432bd5f2d51e7318b5cda8c266436b3cbabeb8b21f91" + "sha256": "d3d765b696f0392c99e65460fdb7099e05486eeae32b6e83a205f69fbb98b9c4" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client-jdk/4.1.5/micronaut-http-client-jdk-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-client-jdk/4.1.8/micronaut-http-client-jdk-4.1.8.jar", "digest": { - "sha256": "003a217ecb74e8d01c78994b8e94489a740573dbe8d7b0548647c650fb97152c" + "sha256": "40aa7c65eb3304ec28fa4ef3544186f521ef9ef06bbaf8e729d1ca0a26897a7a" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client-jdk/4.1.5/micronaut-http-client-jdk-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-client-jdk/4.1.8/micronaut-http-client-jdk-4.1.8.pom", "digest": { - "sha256": "fe076caedff9e4b283c4020646090d815dc96cfd01cb8e0bd2171750aa3d5895" + "sha256": "da8e9e99106290caf6f6c2836a438109d88b427e9d3ebe47f2737bfef9fa1237" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client-tck/4.1.5/micronaut-http-client-tck-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-client-tck/4.1.8/micronaut-http-client-tck-4.1.8.jar", "digest": { - "sha256": "dc8a0720d4b01228bfc4363ac613135128d9a68b75ea3da6d4cb22769ea3e1c5" + "sha256": "349d292efc448c0c4ddaac827d74edf343f884a3b563400b7415ba8666a8c899" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client-tck/4.1.5/micronaut-http-client-tck-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-client-tck/4.1.8/micronaut-http-client-tck-4.1.8.pom", "digest": { - "sha256": "c9f5167b5f0b4c5ce872ecb73acea46a011a8416c6dcb5035a003b5e6669c75a" + "sha256": "c83675c4ca59e217ddbe2a383740be9d38778c568aa0a62f2c961237eb793737" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client/4.1.5/micronaut-http-client-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-client/4.1.8/micronaut-http-client-4.1.8.jar", "digest": { - "sha256": "7a9aaae999986d0d0a3e7d4d1cd250aff0d1a7620d89fa6096520b031c981a00" + "sha256": "35f7b4b968bf82618dc2bd9c578166e6bcee4fdb1f9bbd5835d7c001e4acd1a2" } }, { - "name": "build/repo/io/micronaut/micronaut-http-client/4.1.5/micronaut-http-client-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-client/4.1.8/micronaut-http-client-4.1.8.pom", "digest": { - "sha256": "34cf5b7855a3cfa376dd3c98e25dc346896354ad444a1053e35b5bba2f477bae" + "sha256": "2aeebfd92d4ae954f19cd269fc464ad78ca0841933c3722d285c7e604b5bf067" } }, { - "name": "build/repo/io/micronaut/micronaut-http-netty/4.1.5/micronaut-http-netty-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-netty/4.1.8/micronaut-http-netty-4.1.8.jar", "digest": { - "sha256": "708f7e31d84ad54b28f60c3a4fe88c310d6edb3395c63fd39b8f9ad64f0fedef" + "sha256": "d20040e9fc423d45be7ec6e80e825fa533bfe25c331463f91eede3a84cf6c5d9" } }, { - "name": "build/repo/io/micronaut/micronaut-http-netty/4.1.5/micronaut-http-netty-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-netty/4.1.8/micronaut-http-netty-4.1.8.pom", "digest": { - "sha256": "d9b875cbffd3eb41a0423bcd0ca89f89989315211a409fe0cdf5f44a0625babf" + "sha256": "564ed8239db89c22cf6f1bedfdcb9a9efe8f56708d12f9d00c46bd20a48811e7" } }, { - "name": "build/repo/io/micronaut/micronaut-http-server-netty/4.1.5/micronaut-http-server-netty-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-server-netty/4.1.8/micronaut-http-server-netty-4.1.8.jar", "digest": { - "sha256": "c5aceb034eb90a45f4db0735e613abc239dc9017dd1144cafd4a65ffaf92cd8e" + "sha256": "9fc5bd2438f7d6a172e70de3bad218d1495105696813c8e32b516a256b30f561" } }, { - "name": "build/repo/io/micronaut/micronaut-http-server-netty/4.1.5/micronaut-http-server-netty-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-server-netty/4.1.8/micronaut-http-server-netty-4.1.8.pom", "digest": { - "sha256": "e146b69ec34542914add5150c5fbcd51d5af65f9c9d4477abdb0b2388672edb3" + "sha256": "12154d3677bab749dc5b4675816557d539e2570d3c7f8eae80c414351b01e2d8" } }, { - "name": "build/repo/io/micronaut/micronaut-http-server-tck/4.1.5/micronaut-http-server-tck-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-server-tck/4.1.8/micronaut-http-server-tck-4.1.8.jar", "digest": { - "sha256": "0093d9bc21b4f8d2bb8e21d497cc584407a899a8328945a1498a509c9f2edba2" + "sha256": "02f75474b579b0cf153a3b3bf6661340b8c0f5a27019c454db73769d890ea956" } }, { - "name": "build/repo/io/micronaut/micronaut-http-server-tck/4.1.5/micronaut-http-server-tck-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-server-tck/4.1.8/micronaut-http-server-tck-4.1.8.pom", "digest": { - "sha256": "4fc2d9ca9c4f924c7c0bb39fa21f5e629723c653acab387d45b4b2db4c7e8784" + "sha256": "0f20e1dc177acc03b5422b16933be6d6ebbe13fc29f9e9af096d19cb8b382d9a" } }, { - "name": "build/repo/io/micronaut/micronaut-http-server/4.1.5/micronaut-http-server-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-server/4.1.8/micronaut-http-server-4.1.8.jar", "digest": { - "sha256": "f123492ebe049f1c21e8b354101b33f2ae98f77ede238b45c4a334aca005f4b4" + "sha256": "7496237142e9051dea0591cf54bed52a5a050251911c80dbe40e928df465a2ee" } }, { - "name": "build/repo/io/micronaut/micronaut-http-server/4.1.5/micronaut-http-server-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-server/4.1.8/micronaut-http-server-4.1.8.pom", "digest": { - "sha256": "72f777b45d0f87e2335e32fe738b2dc4ba399c6a3d3b2ea700012eab6ae7338d" + "sha256": "a2fb25e580d2ebbf36eaf06cf8f64b4b3ff9f3c3e64e21db5867b11c05cdf14e" } }, { - "name": "build/repo/io/micronaut/micronaut-http-tck/4.1.5/micronaut-http-tck-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-tck/4.1.8/micronaut-http-tck-4.1.8.jar", "digest": { - "sha256": "00a332006e434e527d1b66d77fb5767e33d76eabc79da33c8aa57ab0d38910a3" + "sha256": "02c0ce95ba5ff92f9df0089fca855b644fef990e815795ce054eba586ac93594" } }, { - "name": "build/repo/io/micronaut/micronaut-http-tck/4.1.5/micronaut-http-tck-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-tck/4.1.8/micronaut-http-tck-4.1.8.pom", "digest": { - "sha256": "a9b81430a409d72f485f55a48837e80d32cc1c94e49b10590691c6301ca0ef76" + "sha256": "2d86b0d49752f4b84203229611906829e1e6e490eab762c0eb03e3d0ebd1e367" } }, { - "name": "build/repo/io/micronaut/micronaut-http-validation/4.1.5/micronaut-http-validation-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http-validation/4.1.8/micronaut-http-validation-4.1.8.jar", "digest": { - "sha256": "897cc4cd6c3550d1f729d0376f588f47751d412d9d29f545abf1f06135fb09cd" + "sha256": "caa93de34fed248369386792a1add2ce4860187844b506f83efef14ac855979e" } }, { - "name": "build/repo/io/micronaut/micronaut-http-validation/4.1.5/micronaut-http-validation-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http-validation/4.1.8/micronaut-http-validation-4.1.8.pom", "digest": { - "sha256": "8cbd5710c992d520e8f7323c22b92ab6fb250405a43697bc61353f002fb71e14" + "sha256": "e00854a6ef9c394e30ebbe806f2f7b9453a619b9cdab5085d447f21273214522" } }, { - "name": "build/repo/io/micronaut/micronaut-http/4.1.5/micronaut-http-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-http/4.1.8/micronaut-http-4.1.8.jar", "digest": { - "sha256": "dd1f8853b1ede7f8b140069070870fbc86347163e3fbdb325be523e57eb7cf84" + "sha256": "f1c76368b6a9b8f02675da0b75b3210083c8d5346a9c79b3fc4da1667f394500" } }, { - "name": "build/repo/io/micronaut/micronaut-http/4.1.5/micronaut-http-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-http/4.1.8/micronaut-http-4.1.8.pom", "digest": { - "sha256": "e25c7daee0271119c4a19efed90e20c76ec42ac34635db359d37cad362cddf5f" + "sha256": "0c51b7ee3ca21c309c7b3925da182ee2a8178c1e4ef0908bedc1d61b47d2e29a" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-groovy-test/4.1.5/micronaut-inject-groovy-test-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-inject-groovy-test/4.1.8/micronaut-inject-groovy-test-4.1.8.jar", "digest": { - "sha256": "afcbccb1c91dd062ebdc42fc920730dbf13724dbd0196935f6afeecf04a9106f" + "sha256": "4d3efba3b94bb180bef67b077df45f70ddba46264e30adeccb4c7372ad6e46f1" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-groovy-test/4.1.5/micronaut-inject-groovy-test-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-inject-groovy-test/4.1.8/micronaut-inject-groovy-test-4.1.8.pom", "digest": { - "sha256": "d2f02d1e9348bf22a7e8ed2f3e93b4be2d481dd9b4a8fb20b26ec4b6d36e759b" + "sha256": "e3754d273777fbc2338398c89aab47953d0064a2447c17e86e8164188a329920" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-groovy/4.1.5/micronaut-inject-groovy-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-inject-groovy/4.1.8/micronaut-inject-groovy-4.1.8.jar", "digest": { - "sha256": "323544d892cf168d85c2ad76153dd165c612483b0b33e699e42a512b84d53923" + "sha256": "09e6d1a932bcc301056ac3963860efa18956e89532ec95277e6ea31ef66b51f6" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-groovy/4.1.5/micronaut-inject-groovy-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-inject-groovy/4.1.8/micronaut-inject-groovy-4.1.8.pom", "digest": { - "sha256": "553493dc236be3e226fa6613d147ad148c37442bd4b99ce5c84364650ae5f384" + "sha256": "4eec09a3f6b0a9b78a587f6a4e54218cd2507be8db5040ce5adb6bcda164c426" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-java-test/4.1.5/micronaut-inject-java-test-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-inject-java-test/4.1.8/micronaut-inject-java-test-4.1.8.jar", "digest": { - "sha256": "d508cf025a119434e0da49f6c27e4bc0fdb933db5b153725c32fd44996569d42" + "sha256": "dbd0f81807027dbb29c90b4a98cf74054519b1c07142bfc012f3de855ec7b8d3" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-java-test/4.1.5/micronaut-inject-java-test-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-inject-java-test/4.1.8/micronaut-inject-java-test-4.1.8.pom", "digest": { - "sha256": "9e50f80f1f455ef5e85c7cc40d5178c2e469e998a1800527a8308904b6c8dc8c" + "sha256": "3d2cfdff1086f57caa8965e76750389767223ced0d2dcaecad45f3bd6170bd8e" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-java/4.1.5/micronaut-inject-java-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-inject-java/4.1.8/micronaut-inject-java-4.1.8.jar", "digest": { - "sha256": "81f5b9e12f18539034a367268897df2b7becac8bf06b33803f9ba695a9beaad6" + "sha256": "cf2b45e74d40f20ef2b3c23ddc4cb7d5aa8adef042256b958820b0ab5bad8835" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-java/4.1.5/micronaut-inject-java-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-inject-java/4.1.8/micronaut-inject-java-4.1.8.pom", "digest": { - "sha256": "25bf28b2b5451248e5ecc969be482aa4c97b482805b639dac7be8cb471fc2cbc" + "sha256": "08c2c57be9637fea6220a4986a4fe4a51ebe39c6df88b18f8bfca2ad1b7c3f63" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-kotlin-test/4.1.5/micronaut-inject-kotlin-test-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-inject-kotlin-test/4.1.8/micronaut-inject-kotlin-test-4.1.8.jar", "digest": { - "sha256": "8c11ac52c0f6c9b21be5effb00303e3ed4a817467a43d4e421aaf1bb7e194cc6" + "sha256": "b44cbad81b4259b7bc114f576f79b56163b27d9a7274f84bb82721ffdccdf8ff" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-kotlin-test/4.1.5/micronaut-inject-kotlin-test-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-inject-kotlin-test/4.1.8/micronaut-inject-kotlin-test-4.1.8.pom", "digest": { - "sha256": "824e67fe23ef390a4b9e9275e2e3cd117007b67655a16e89ccd1e571210c0ef5" + "sha256": "2286d61a8fad5bae4ac3a597a8d25b4a1354613344c533171bd1fc682d877432" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-kotlin/4.1.5/micronaut-inject-kotlin-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-inject-kotlin/4.1.8/micronaut-inject-kotlin-4.1.8.jar", "digest": { - "sha256": "6d60ba5b91f3209c71bc8dc7ad8cb2a22c388fef32adea2fd21b635eee45fb8b" + "sha256": "4ff6afc8d9263a20e28714491255312edf5fb536725efff96dc4eab64eb82632" } }, { - "name": "build/repo/io/micronaut/micronaut-inject-kotlin/4.1.5/micronaut-inject-kotlin-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-inject-kotlin/4.1.8/micronaut-inject-kotlin-4.1.8.pom", "digest": { - "sha256": "d17568bb093af3b7c0ecff064f87d78550d5ced2b2916f021839e24d1ab2d53b" + "sha256": "574738890ad770a233eaddd5cd96689ca10d3670ac7c238e46cc879d8dfacbbd" } }, { - "name": "build/repo/io/micronaut/micronaut-inject/4.1.5/micronaut-inject-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-inject/4.1.8/micronaut-inject-4.1.8.jar", "digest": { - "sha256": "4d4c7416ac866a40c7ce2f5924187c552888d794955390b38ec04b9cf6110651" + "sha256": "46efc497f12035720291041e733f5d869e9c3e6bfda498e6e7e171f86a685e0e" } }, { - "name": "build/repo/io/micronaut/micronaut-inject/4.1.5/micronaut-inject-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-inject/4.1.8/micronaut-inject-4.1.8.pom", "digest": { - "sha256": "2c2cab2680c47d9fd11a9784247e8bd83743152394322200f4e101d8cc166cfa" + "sha256": "32a1697713a3ac615ccacc6687235bce8d5eebf2bd5ecf7d25b2e8ada37a3244" } }, { - "name": "build/repo/io/micronaut/micronaut-jackson-core/4.1.5/micronaut-jackson-core-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-jackson-core/4.1.8/micronaut-jackson-core-4.1.8.jar", "digest": { - "sha256": "c672fd1a288558aec6f7698b2ef35715692ef8daba004c3f8c67998d7017c7bc" + "sha256": "11b2be5840dafe723202631e92fe3dd9c980f4034cb97c45a35283a1200ba8d4" } }, { - "name": "build/repo/io/micronaut/micronaut-jackson-core/4.1.5/micronaut-jackson-core-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-jackson-core/4.1.8/micronaut-jackson-core-4.1.8.pom", "digest": { - "sha256": "5323189bd40f3cb040a7bf41dd920dd1f1b1eef91f8a7e1b14e3010649838a4a" + "sha256": "7ec4861b31d6356c011c2745607703fefefd28c8704ac7f3f90272e1acbd8a00" } }, { - "name": "build/repo/io/micronaut/micronaut-jackson-databind/4.1.5/micronaut-jackson-databind-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-jackson-databind/4.1.8/micronaut-jackson-databind-4.1.8.jar", "digest": { - "sha256": "4aac98efd029e8826c1ee6e1a469f9879ab24407aa447fe8e7fed65e8b7bc90e" + "sha256": "31cda6446687c102e46ee143d187b45fe939d13adf2d8f6c9b1f6e0fa4b5b826" } }, { - "name": "build/repo/io/micronaut/micronaut-jackson-databind/4.1.5/micronaut-jackson-databind-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-jackson-databind/4.1.8/micronaut-jackson-databind-4.1.8.pom", "digest": { - "sha256": "5dd35a71c760c3097ed2620840cddc5ee7e20268438bc0acfc5e9698168e2111" + "sha256": "859a2c15e257945155b5214fe7b268fddecceb5ce1db7b5d2fc05266e0c54ced" } }, { - "name": "build/repo/io/micronaut/micronaut-json-core/4.1.5/micronaut-json-core-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-json-core/4.1.8/micronaut-json-core-4.1.8.jar", "digest": { - "sha256": "f1e507f157f0b9805359c6596473abf85ec76df6fe43c23ba5d9b19207997a33" + "sha256": "ec5ca37b1882ee9aa2a5fbd300f37855a1e624f99ecfe27cc30eb08a5b37d16b" } }, { - "name": "build/repo/io/micronaut/micronaut-json-core/4.1.5/micronaut-json-core-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-json-core/4.1.8/micronaut-json-core-4.1.8.pom", "digest": { - "sha256": "8402a208c777ea46ace9d59b80e6ef8da6c4016bd0ca029903f1809110e8f0d1" + "sha256": "c46dfa1e8a31e50a6d77324f4921c88c0e5bd42aef623001068ffa6a96aca2ac" } }, { - "name": "build/repo/io/micronaut/micronaut-management/4.1.5/micronaut-management-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-management/4.1.8/micronaut-management-4.1.8.jar", "digest": { - "sha256": "dd1d9a8a9b00aa08de751cbab603529e3bc35f1c35e12b4cf7c9b4c3e0a100d5" + "sha256": "8323637f277075f713055fb5375871ed7b339f6ea6467c57c4ba8f2ae43a4153" } }, { - "name": "build/repo/io/micronaut/micronaut-management/4.1.5/micronaut-management-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-management/4.1.8/micronaut-management-4.1.8.pom", "digest": { - "sha256": "cd783ff62dff58d3234af80c35f75bb898817564f9c5da3d0b9dffdba7ea2a4b" + "sha256": "960177ef8e3b2706b825612af73d0e7ea074659910c72437e304ca937dec7a12" } }, { - "name": "build/repo/io/micronaut/micronaut-messaging/4.1.5/micronaut-messaging-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-messaging/4.1.8/micronaut-messaging-4.1.8.jar", "digest": { - "sha256": "48a14233d59963213c6f93d5a7400ecda026ec04cf5bf88a63f381f5242d13dc" + "sha256": "b789d1b7e60bd439c04ef80d84a9e70b64684438f7b11c2be102fa2f25b73244" } }, { - "name": "build/repo/io/micronaut/micronaut-messaging/4.1.5/micronaut-messaging-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-messaging/4.1.8/micronaut-messaging-4.1.8.pom", "digest": { - "sha256": "49450d09fc51ee0d7f2a66cb40f653773b36aa8fbe5cf4a2c0acf6ba0a703e71" + "sha256": "d583ac2be46cbd52e8b55c36f901d782bc77244916259f4220895100317a8979" } }, { - "name": "build/repo/io/micronaut/micronaut-retry/4.1.5/micronaut-retry-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-retry/4.1.8/micronaut-retry-4.1.8.jar", "digest": { - "sha256": "bbc1ad254026e8bd769e10012c626a232e77c24be2448c1b3175ee9ad74ac51f" + "sha256": "3e178e58624f1253510ecdccfc1d28dc108d90d17b9b652b616e2a1bcf757afa" } }, { - "name": "build/repo/io/micronaut/micronaut-retry/4.1.5/micronaut-retry-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-retry/4.1.8/micronaut-retry-4.1.8.pom", "digest": { - "sha256": "7ab9fd386c84eb6de27c585b8b8ef9bec1362d40f1f1c6cd2bcc426ca251efb4" + "sha256": "d610a400abd8572975bbe0bd64ce9c2b2b6dd446d980c0bbe805c7b16ca2250a" } }, { - "name": "build/repo/io/micronaut/micronaut-router/4.1.5/micronaut-router-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-router/4.1.8/micronaut-router-4.1.8.jar", "digest": { - "sha256": "1fc941814d7c5cc32e3b4f3c48a23cdec4faf06bd8b9f0929dcc001f236b997d" + "sha256": "e67a32cd89a006b86b2d4f4d688ebe82fdab32d061bb52b29535a5677e15ac35" } }, { - "name": "build/repo/io/micronaut/micronaut-router/4.1.5/micronaut-router-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-router/4.1.8/micronaut-router-4.1.8.pom", "digest": { - "sha256": "f62489a3346d0a19e2363077f164738aab8e3458b68c9b56d48cfea69b1eaebe" + "sha256": "a203142952de0136709477f73de72b93ca39e338cdbac068aa5d64e774dc3211" } }, { - "name": "build/repo/io/micronaut/micronaut-runtime-osx/4.1.5/micronaut-runtime-osx-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-runtime-osx/4.1.8/micronaut-runtime-osx-4.1.8.jar", "digest": { - "sha256": "426b65799e02e851e6694cdf4edc9f3ffb606634ce010618693f69b3d713e58b" + "sha256": "b9f8507f7047821969f9434bd00072e58ec61f89980cfbc72e7279377977786e" } }, { - "name": "build/repo/io/micronaut/micronaut-runtime-osx/4.1.5/micronaut-runtime-osx-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-runtime-osx/4.1.8/micronaut-runtime-osx-4.1.8.pom", "digest": { - "sha256": "f7fcab413f5ee9b742d58f2815251a7c4d0cfbfad9fd0f93b83746c92f7690c5" + "sha256": "1682897fc2f1bcd255bd5381c94f521d405f5cecfc957cf6729e5a93bd7e86b0" } }, { - "name": "build/repo/io/micronaut/micronaut-runtime/4.1.5/micronaut-runtime-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-runtime/4.1.8/micronaut-runtime-4.1.8.jar", "digest": { - "sha256": "c1abaf8e7009e3b86aba492de6f2624ba553c5120d24112f408707e29f2bcaa7" + "sha256": "73c437a20cd03ddef121781c87a3e20429691182c77aafb2c2d1421d485c2a48" } }, { - "name": "build/repo/io/micronaut/micronaut-runtime/4.1.5/micronaut-runtime-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-runtime/4.1.8/micronaut-runtime-4.1.8.pom", "digest": { - "sha256": "a3ce6a796903dd9a9b85a9a4622ab5033af30bc7b6626c30c7746dd72bde60c3" + "sha256": "5b357ccd47b927273a89be4e8b1feab3c3456809c4fbb109c8b357309de34dac" } }, { - "name": "build/repo/io/micronaut/micronaut-websocket/4.1.5/micronaut-websocket-4.1.5.jar", + "name": "build/repo/io/micronaut/micronaut-websocket/4.1.8/micronaut-websocket-4.1.8.jar", "digest": { - "sha256": "b1ce53a93bd25aa7513d35c22e8df6e606320fe35b10cdb68ab5b7b9cfb1383a" + "sha256": "b53556f7d46cfe263b245e1af816450869864e806bed645196e83246397ad7d9" } }, { - "name": "build/repo/io/micronaut/micronaut-websocket/4.1.5/micronaut-websocket-4.1.5.pom", + "name": "build/repo/io/micronaut/micronaut-websocket/4.1.8/micronaut-websocket-4.1.8.pom", "digest": { - "sha256": "28defaf1e40c353139166ca1e078464c17f18096339da99e2d80a5c5cb0e78ee" + "sha256": "ed196da8fd7dee37a776664faada55e18564c21fd593705f0b5106940ce26d91" } } ], @@ -513,9 +514,9 @@ "buildType": "https://github.com/slsa-framework/slsa-github-generator/generic@v1", "invocation": { "configSource": { - "uri": "git+https://github.com/micronaut-projects/micronaut-core@refs/tags/v4.1.5", + "uri": "git+https://github.com/micronaut-projects/micronaut-core@refs/tags/v4.1.8", "digest": { - "sha1": "3c6605283d2f6290321b581afa8c56a34659e324" + "sha1": "43353b4a732235a6f9de1dd89180268bc3040427" }, "entryPoint": ".github/workflows/release.yml" }, @@ -543,7 +544,7 @@ }, "release": { "assets": [], - "assets_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/releases/120862600/assets", + "assets_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/releases/123087067/assets", "author": { "avatar_url": "https://avatars.githubusercontent.com/u/864788?v=4", "events_url": "https://api.github.com/users/sdelamo/events{/privacy}", @@ -564,22 +565,22 @@ "type": "User", "url": "https://api.github.com/users/sdelamo" }, - "body": "\r\n\r\n## What's Changed\r\n### Bug Fixes \ud83d\udc1e\r\n* Fix logging with logger.config and no levels by @timyates in https://github.com/micronaut-projects/micronaut-core/pull/9859\r\n### Dependency Upgrade \ud83d\ude80\r\n* Upgraded logback to 1.4.11 by @msupic in https://github.com/micronaut-projects/micronaut-core/pull/9857\r\n### Tests \u2705\r\n* test: GraalVM logging by @sdelamo in https://github.com/micronaut-projects/micronaut-core/pull/9858\r\n\r\n**Full Changelog**: https://github.com/micronaut-projects/micronaut-core/compare/v4.1.4...v4.1.5", - "created_at": "2023-09-12T15:47:52Z", + "body": "\r\n\r\n## What's Changed\r\n### Improvements \u2b50\r\n* avoid unnecessary calls to ConcurrentLinkedDeque.size() by @s15r in https://github.com/micronaut-projects/micronaut-core/pull/9922\r\n### Dependency updates \ud83d\ude80\r\n* fix(deps): update netty monorepo to v4.1.99.final by @renovate in https://github.com/micronaut-projects/micronaut-core/pull/9932\r\n\r\n### CI \u2699\ufe0f & Build \ud83d\udc18\r\n* chore(deps): update gradle/gradle-build-action action to v2.8.1 by @renovate in https://github.com/micronaut-projects/micronaut-core/pull/9888\r\n* chore(deps): update dependency org.graalvm.buildtools.native:org.graalvm.buildtools.native.gradle.plugin to v0.9.27 by @renovate in https://github.com/micronaut-projects/micronaut-core/pull/9885\r\n\r\n## New Contributors\r\n* @s15r made their first contribution in https://github.com/micronaut-projects/micronaut-core/pull/9922\r\n\r\n**Full Changelog**: https://github.com/micronaut-projects/micronaut-core/compare/v4.1.7...v4.1.8", + "created_at": "2023-09-29T08:05:30Z", "draft": false, - "html_url": "https://github.com/micronaut-projects/micronaut-core/releases/tag/v4.1.5", - "id": 120862600, - "mentions_count": 3, - "name": "Micronaut Core 4.1.5", - "node_id": "RE_kwDOB2eaPM4HNDeI", + "html_url": "https://github.com/micronaut-projects/micronaut-core/releases/tag/v4.1.8", + "id": 123087067, + "mentions_count": 2, + "name": "Micronaut Core 4.1.8", + "node_id": "RE_kwDOB2eaPM4HVijb", "prerelease": false, - "published_at": "2023-09-12T20:42:13Z", - "tag_name": "v4.1.5", - "tarball_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/tarball/v4.1.5", + "published_at": "2023-09-29T09:16:20Z", + "tag_name": "v4.1.8", + "tarball_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/tarball/v4.1.8", "target_commitish": "4.1.x", - "upload_url": "https://uploads.github.com/repos/micronaut-projects/micronaut-core/releases/120862600/assets{?name,label}", - "url": "https://api.github.com/repos/micronaut-projects/micronaut-core/releases/120862600", - "zipball_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/zipball/v4.1.5" + "upload_url": "https://uploads.github.com/repos/micronaut-projects/micronaut-core/releases/123087067/assets{?name,label}", + "url": "https://api.github.com/repos/micronaut-projects/micronaut-core/releases/123087067", + "zipball_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/zipball/v4.1.8" }, "repository": { "allow_forking": true, @@ -603,8 +604,8 @@ "downloads_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/downloads", "events_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/events", "fork": false, - "forks": 996, - "forks_count": 996, + "forks": 1001, + "forks_count": 1001, "forks_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/forks", "full_name": "micronaut-projects/micronaut-core", "git_commits_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/git/commits{/sha}", @@ -642,8 +643,8 @@ "name": "micronaut-core", "node_id": "MDEwOlJlcG9zaXRvcnkxMjQyMzAyMDQ=", "notifications_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/notifications{?since,all,participating}", - "open_issues": 647, - "open_issues_count": 647, + "open_issues": 667, + "open_issues_count": 667, "owner": { "avatar_url": "https://avatars.githubusercontent.com/u/36880643?v=4", "events_url": "https://api.github.com/users/micronaut-projects/events{/privacy}", @@ -666,11 +667,11 @@ }, "private": false, "pulls_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/pulls{/number}", - "pushed_at": "2023-09-12T20:42:13Z", + "pushed_at": "2023-09-29T09:16:20Z", "releases_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/releases{/id}", - "size": 99112, + "size": 99323, "ssh_url": "git@github.com:micronaut-projects/micronaut-core.git", - "stargazers_count": 5806, + "stargazers_count": 5814, "stargazers_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/stargazers", "statuses_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/statuses/{sha}", "subscribers_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/subscribers", @@ -687,11 +688,11 @@ "serverless" ], "trees_url": "https://api.github.com/repos/micronaut-projects/micronaut-core/git/trees{/sha}", - "updated_at": "2023-09-12T18:43:57Z", + "updated_at": "2023-09-28T19:49:09Z", "url": "https://api.github.com/repos/micronaut-projects/micronaut-core", "visibility": "public", - "watchers": 5806, - "watchers_count": 5806, + "watchers": 5814, + "watchers_count": 5814, "web_commit_signoff_required": false }, "sender": { @@ -716,19 +717,19 @@ } }, "github_head_ref": "", - "github_ref": "refs/tags/v4.1.5", + "github_ref": "refs/tags/v4.1.8", "github_ref_type": "tag", "github_repository_id": "124230204", "github_repository_owner": "micronaut-projects", "github_repository_owner_id": "36880643", "github_run_attempt": "1", - "github_run_id": "6164653256", - "github_run_number": "162", - "github_sha1": "3c6605283d2f6290321b581afa8c56a34659e324" + "github_run_id": "6349522745", + "github_run_number": "166", + "github_sha1": "43353b4a732235a6f9de1dd89180268bc3040427" } }, "metadata": { - "buildInvocationID": "6164653256-1", + "buildInvocationID": "6349522745-1", "completeness": { "parameters": true, "environment": false, @@ -738,9 +739,9 @@ }, "materials": [ { - "uri": "git+https://github.com/micronaut-projects/micronaut-core@refs/tags/v4.1.5", + "uri": "git+https://github.com/micronaut-projects/micronaut-core@refs/tags/v4.1.8", "digest": { - "sha1": "3c6605283d2f6290321b581afa8c56a34659e324" + "sha1": "43353b4a732235a6f9de1dd89180268bc3040427" } } ] @@ -754,7 +755,7 @@ "summary": { "DISABLED": 0, "FAILED": 3, - "PASSED": 6, + "PASSED": 7, "SKIPPED": 0, "UNKNOWN": 1 }, @@ -778,10 +779,10 @@ ], "justification": [ { - "The target repository uses build tool gradle to deploy": "https://github.com/micronaut-projects/micronaut-core/blob/68f9bb0a78fa930865d37fca39252b9ec66e4a43/.github/workflows/gradle.yml", - "The build is triggered by": "https://github.com/micronaut-projects/micronaut-core/blob/68f9bb0a78fa930865d37fca39252b9ec66e4a43/.github/workflows/gradle.yml" + "The target repository uses build tool gradle to deploy": "https://github.com/micronaut-projects/micronaut-core/blob/68f9bb0a78fa930865d37fca39252b9ec66e4a43/.github/workflows/release.yml", + "The build is triggered by": "https://github.com/micronaut-projects/micronaut-core/blob/68f9bb0a78fa930865d37fca39252b9ec66e4a43/.github/workflows/release.yml" }, - "Deploy command: ['./gradlew', 'publishToSonatype', 'docs', '--no-daemon']", + "Deploy command: ['./gradlew', 'publishAllPublicationsToBuildRepository', 'publishToSonatype', 'closeAndReleaseSonatypeStagingRepository']", "However, could not find a passing workflow run." ], "result_type": "PASSED" @@ -834,7 +835,19 @@ ], "justification": [ "Successfully verified level 3: ", - "verify passed : build/repo/micronaut-aop/4.1.5/micronaut-aop-4.1.5.jar,verify passed : build/repo/micronaut-aop/4.1.5/micronaut-aop-4.1.5.pom,verify passed : build/repo/micronaut-buffer-netty/4.1.5/micronaut-buffer-netty-4.1.5.jar,verify passed : build/repo/micronaut-buffer-netty/4.1.5/micronaut-buffer-netty-4.1.5.pom,verify passed : build/repo/micronaut-context-propagation/4.1.5/micronaut-context-propagation-4.1.5.jar,verify passed : build/repo/micronaut-context-propagation/4.1.5/micronaut-context-propagation-4.1.5.pom,verify passed : build/repo/micronaut-context/4.1.5/micronaut-context-4.1.5.jar,verify passed : build/repo/micronaut-context/4.1.5/micronaut-context-4.1.5.pom,verify passed : build/repo/micronaut-core-bom/4.1.5/micronaut-core-bom-4.1.5.pom,verify passed : build/repo/micronaut-core-processor/4.1.5/micronaut-core-processor-4.1.5.jar,verify passed : build/repo/micronaut-core-processor/4.1.5/micronaut-core-processor-4.1.5.pom,verify passed : build/repo/micronaut-core-reactive/4.1.5/micronaut-core-reactive-4.1.5.jar,verify passed : build/repo/micronaut-core-reactive/4.1.5/micronaut-core-reactive-4.1.5.pom,verify passed : build/repo/micronaut-core/4.1.5/micronaut-core-4.1.5.jar,verify passed : build/repo/micronaut-core/4.1.5/micronaut-core-4.1.5.pom,verify passed : build/repo/micronaut-discovery-core/4.1.5/micronaut-discovery-core-4.1.5.jar,verify passed : build/repo/micronaut-discovery-core/4.1.5/micronaut-discovery-core-4.1.5.pom,verify passed : build/repo/micronaut-function-client/4.1.5/micronaut-function-client-4.1.5.jar,verify passed : build/repo/micronaut-function-client/4.1.5/micronaut-function-client-4.1.5.pom,verify passed : build/repo/micronaut-function-web/4.1.5/micronaut-function-web-4.1.5.jar,verify passed : build/repo/micronaut-function-web/4.1.5/micronaut-function-web-4.1.5.pom,verify passed : build/repo/micronaut-function/4.1.5/micronaut-function-4.1.5.jar,verify passed : build/repo/micronaut-function/4.1.5/micronaut-function-4.1.5.pom,verify passed : build/repo/micronaut-graal/4.1.5/micronaut-graal-4.1.5.jar,verify passed : build/repo/micronaut-graal/4.1.5/micronaut-graal-4.1.5.pom,verify passed : build/repo/micronaut-http-client-core/4.1.5/micronaut-http-client-core-4.1.5.jar,verify passed : build/repo/micronaut-http-client-core/4.1.5/micronaut-http-client-core-4.1.5.pom,verify passed : build/repo/micronaut-http-client-jdk/4.1.5/micronaut-http-client-jdk-4.1.5.jar,verify passed : build/repo/micronaut-http-client-jdk/4.1.5/micronaut-http-client-jdk-4.1.5.pom,verify passed : build/repo/micronaut-http-client-tck/4.1.5/micronaut-http-client-tck-4.1.5.jar,verify passed : build/repo/micronaut-http-client-tck/4.1.5/micronaut-http-client-tck-4.1.5.pom,verify passed : build/repo/micronaut-http-client/4.1.5/micronaut-http-client-4.1.5.jar,verify passed : build/repo/micronaut-http-client/4.1.5/micronaut-http-client-4.1.5.pom,verify passed : build/repo/micronaut-http-netty/4.1.5/micronaut-http-netty-4.1.5.jar,verify passed : build/repo/micronaut-http-netty/4.1.5/micronaut-http-netty-4.1.5.pom,verify passed : build/repo/micronaut-http-server-netty/4.1.5/micronaut-http-server-netty-4.1.5.jar,verify passed : build/repo/micronaut-http-server-netty/4.1.5/micronaut-http-server-netty-4.1.5.pom,verify passed : build/repo/micronaut-http-server-tck/4.1.5/micronaut-http-server-tck-4.1.5.jar,verify passed : build/repo/micronaut-http-server-tck/4.1.5/micronaut-http-server-tck-4.1.5.pom,verify passed : build/repo/micronaut-http-server/4.1.5/micronaut-http-server-4.1.5.jar,verify passed : build/repo/micronaut-http-server/4.1.5/micronaut-http-server-4.1.5.pom,verify passed : build/repo/micronaut-http-tck/4.1.5/micronaut-http-tck-4.1.5.jar,verify passed : build/repo/micronaut-http-tck/4.1.5/micronaut-http-tck-4.1.5.pom,verify passed : build/repo/micronaut-http-validation/4.1.5/micronaut-http-validation-4.1.5.jar,verify passed : build/repo/micronaut-http-validation/4.1.5/micronaut-http-validation-4.1.5.pom,verify passed : build/repo/micronaut-http/4.1.5/micronaut-http-4.1.5.jar,verify passed : build/repo/micronaut-http/4.1.5/micronaut-http-4.1.5.pom,verify passed : build/repo/micronaut-inject-groovy-test/4.1.5/micronaut-inject-groovy-test-4.1.5.jar,verify passed : build/repo/micronaut-inject-groovy-test/4.1.5/micronaut-inject-groovy-test-4.1.5.pom,verify passed : build/repo/micronaut-inject-groovy/4.1.5/micronaut-inject-groovy-4.1.5.jar,verify passed : build/repo/micronaut-inject-groovy/4.1.5/micronaut-inject-groovy-4.1.5.pom,verify passed : build/repo/micronaut-inject-java-test/4.1.5/micronaut-inject-java-test-4.1.5.jar,verify passed : build/repo/micronaut-inject-java-test/4.1.5/micronaut-inject-java-test-4.1.5.pom,verify passed : build/repo/micronaut-inject-java/4.1.5/micronaut-inject-java-4.1.5.jar,verify passed : build/repo/micronaut-inject-java/4.1.5/micronaut-inject-java-4.1.5.pom,verify passed : build/repo/micronaut-inject-kotlin-test/4.1.5/micronaut-inject-kotlin-test-4.1.5.jar,verify passed : build/repo/micronaut-inject-kotlin-test/4.1.5/micronaut-inject-kotlin-test-4.1.5.pom,verify passed : build/repo/micronaut-inject-kotlin/4.1.5/micronaut-inject-kotlin-4.1.5.jar,verify passed : build/repo/micronaut-inject-kotlin/4.1.5/micronaut-inject-kotlin-4.1.5.pom,verify passed : build/repo/micronaut-inject/4.1.5/micronaut-inject-4.1.5.jar,verify passed : build/repo/micronaut-inject/4.1.5/micronaut-inject-4.1.5.pom,verify passed : build/repo/micronaut-jackson-core/4.1.5/micronaut-jackson-core-4.1.5.jar,verify passed : build/repo/micronaut-jackson-core/4.1.5/micronaut-jackson-core-4.1.5.pom,verify passed : build/repo/micronaut-jackson-databind/4.1.5/micronaut-jackson-databind-4.1.5.jar,verify passed : build/repo/micronaut-jackson-databind/4.1.5/micronaut-jackson-databind-4.1.5.pom,verify passed : build/repo/micronaut-json-core/4.1.5/micronaut-json-core-4.1.5.jar,verify passed : build/repo/micronaut-json-core/4.1.5/micronaut-json-core-4.1.5.pom,verify passed : build/repo/micronaut-management/4.1.5/micronaut-management-4.1.5.jar,verify passed : build/repo/micronaut-management/4.1.5/micronaut-management-4.1.5.pom,verify passed : build/repo/micronaut-messaging/4.1.5/micronaut-messaging-4.1.5.jar,verify passed : build/repo/micronaut-messaging/4.1.5/micronaut-messaging-4.1.5.pom,verify passed : build/repo/micronaut-retry/4.1.5/micronaut-retry-4.1.5.jar,verify passed : build/repo/micronaut-retry/4.1.5/micronaut-retry-4.1.5.pom,verify passed : build/repo/micronaut-router/4.1.5/micronaut-router-4.1.5.jar,verify passed : build/repo/micronaut-router/4.1.5/micronaut-router-4.1.5.pom,verify passed : build/repo/micronaut-runtime-osx/4.1.5/micronaut-runtime-osx-4.1.5.jar,verify passed : build/repo/micronaut-runtime-osx/4.1.5/micronaut-runtime-osx-4.1.5.pom,verify passed : build/repo/micronaut-runtime/4.1.5/micronaut-runtime-4.1.5.jar,verify passed : build/repo/micronaut-runtime/4.1.5/micronaut-runtime-4.1.5.pom,verify passed : build/repo/micronaut-websocket/4.1.5/micronaut-websocket-4.1.5.jar,verify passed : build/repo/micronaut-websocket/4.1.5/micronaut-websocket-4.1.5.pom" + "verify passed : build/repo/micronaut-aop/4.1.8/micronaut-aop-4.1.8.jar,verify passed : build/repo/micronaut-aop/4.1.8/micronaut-aop-4.1.8.pom,verify passed : build/repo/micronaut-buffer-netty/4.1.8/micronaut-buffer-netty-4.1.8.jar,verify passed : build/repo/micronaut-buffer-netty/4.1.8/micronaut-buffer-netty-4.1.8.pom,verify passed : build/repo/micronaut-context-propagation/4.1.8/micronaut-context-propagation-4.1.8.jar,verify passed : build/repo/micronaut-context-propagation/4.1.8/micronaut-context-propagation-4.1.8.pom,verify passed : build/repo/micronaut-context/4.1.8/micronaut-context-4.1.8.jar,verify passed : build/repo/micronaut-context/4.1.8/micronaut-context-4.1.8.pom,verify passed : build/repo/micronaut-core-bom/4.1.8/micronaut-core-bom-4.1.8.pom,verify passed : build/repo/micronaut-core-processor/4.1.8/micronaut-core-processor-4.1.8.jar,verify passed : build/repo/micronaut-core-processor/4.1.8/micronaut-core-processor-4.1.8.pom,verify passed : build/repo/micronaut-core-reactive/4.1.8/micronaut-core-reactive-4.1.8.jar,verify passed : build/repo/micronaut-core-reactive/4.1.8/micronaut-core-reactive-4.1.8.pom,verify passed : build/repo/micronaut-core/4.1.8/micronaut-core-4.1.8.jar,verify passed : build/repo/micronaut-core/4.1.8/micronaut-core-4.1.8.pom,verify passed : build/repo/micronaut-discovery-core/4.1.8/micronaut-discovery-core-4.1.8.jar,verify passed : build/repo/micronaut-discovery-core/4.1.8/micronaut-discovery-core-4.1.8.pom,verify passed : build/repo/micronaut-function-client/4.1.8/micronaut-function-client-4.1.8.jar,verify passed : build/repo/micronaut-function-client/4.1.8/micronaut-function-client-4.1.8.pom,verify passed : build/repo/micronaut-function-web/4.1.8/micronaut-function-web-4.1.8.jar,verify passed : build/repo/micronaut-function-web/4.1.8/micronaut-function-web-4.1.8.pom,verify passed : build/repo/micronaut-function/4.1.8/micronaut-function-4.1.8.jar,verify passed : build/repo/micronaut-function/4.1.8/micronaut-function-4.1.8.pom,verify passed : build/repo/micronaut-graal/4.1.8/micronaut-graal-4.1.8.jar,verify passed : build/repo/micronaut-graal/4.1.8/micronaut-graal-4.1.8.pom,verify passed : build/repo/micronaut-http-client-core/4.1.8/micronaut-http-client-core-4.1.8.jar,verify passed : build/repo/micronaut-http-client-core/4.1.8/micronaut-http-client-core-4.1.8.pom,verify passed : build/repo/micronaut-http-client-jdk/4.1.8/micronaut-http-client-jdk-4.1.8.jar,verify passed : build/repo/micronaut-http-client-jdk/4.1.8/micronaut-http-client-jdk-4.1.8.pom,verify passed : build/repo/micronaut-http-client-tck/4.1.8/micronaut-http-client-tck-4.1.8.jar,verify passed : build/repo/micronaut-http-client-tck/4.1.8/micronaut-http-client-tck-4.1.8.pom,verify passed : build/repo/micronaut-http-client/4.1.8/micronaut-http-client-4.1.8.jar,verify passed : build/repo/micronaut-http-client/4.1.8/micronaut-http-client-4.1.8.pom,verify passed : build/repo/micronaut-http-netty/4.1.8/micronaut-http-netty-4.1.8.jar,verify passed : build/repo/micronaut-http-netty/4.1.8/micronaut-http-netty-4.1.8.pom,verify passed : build/repo/micronaut-http-server-netty/4.1.8/micronaut-http-server-netty-4.1.8.jar,verify passed : build/repo/micronaut-http-server-netty/4.1.8/micronaut-http-server-netty-4.1.8.pom,verify passed : build/repo/micronaut-http-server-tck/4.1.8/micronaut-http-server-tck-4.1.8.jar,verify passed : build/repo/micronaut-http-server-tck/4.1.8/micronaut-http-server-tck-4.1.8.pom,verify passed : build/repo/micronaut-http-server/4.1.8/micronaut-http-server-4.1.8.jar,verify passed : build/repo/micronaut-http-server/4.1.8/micronaut-http-server-4.1.8.pom,verify passed : build/repo/micronaut-http-tck/4.1.8/micronaut-http-tck-4.1.8.jar,verify passed : build/repo/micronaut-http-tck/4.1.8/micronaut-http-tck-4.1.8.pom,verify passed : build/repo/micronaut-http-validation/4.1.8/micronaut-http-validation-4.1.8.jar,verify passed : build/repo/micronaut-http-validation/4.1.8/micronaut-http-validation-4.1.8.pom,verify passed : build/repo/micronaut-http/4.1.8/micronaut-http-4.1.8.jar,verify passed : build/repo/micronaut-http/4.1.8/micronaut-http-4.1.8.pom,verify passed : build/repo/micronaut-inject-groovy-test/4.1.8/micronaut-inject-groovy-test-4.1.8.jar,verify passed : build/repo/micronaut-inject-groovy-test/4.1.8/micronaut-inject-groovy-test-4.1.8.pom,verify passed : build/repo/micronaut-inject-groovy/4.1.8/micronaut-inject-groovy-4.1.8.jar,verify passed : build/repo/micronaut-inject-groovy/4.1.8/micronaut-inject-groovy-4.1.8.pom,verify passed : build/repo/micronaut-inject-java-test/4.1.8/micronaut-inject-java-test-4.1.8.jar,verify passed : build/repo/micronaut-inject-java-test/4.1.8/micronaut-inject-java-test-4.1.8.pom,verify passed : build/repo/micronaut-inject-java/4.1.8/micronaut-inject-java-4.1.8.jar,verify passed : build/repo/micronaut-inject-java/4.1.8/micronaut-inject-java-4.1.8.pom,verify passed : build/repo/micronaut-inject-kotlin-test/4.1.8/micronaut-inject-kotlin-test-4.1.8.jar,verify passed : build/repo/micronaut-inject-kotlin-test/4.1.8/micronaut-inject-kotlin-test-4.1.8.pom,verify passed : build/repo/micronaut-inject-kotlin/4.1.8/micronaut-inject-kotlin-4.1.8.jar,verify passed : build/repo/micronaut-inject-kotlin/4.1.8/micronaut-inject-kotlin-4.1.8.pom,verify passed : build/repo/micronaut-inject/4.1.8/micronaut-inject-4.1.8.jar,verify passed : build/repo/micronaut-inject/4.1.8/micronaut-inject-4.1.8.pom,verify passed : build/repo/micronaut-jackson-core/4.1.8/micronaut-jackson-core-4.1.8.jar,verify passed : build/repo/micronaut-jackson-core/4.1.8/micronaut-jackson-core-4.1.8.pom,verify passed : build/repo/micronaut-jackson-databind/4.1.8/micronaut-jackson-databind-4.1.8.jar,verify passed : build/repo/micronaut-jackson-databind/4.1.8/micronaut-jackson-databind-4.1.8.pom,verify passed : build/repo/micronaut-json-core/4.1.8/micronaut-json-core-4.1.8.jar,verify passed : build/repo/micronaut-json-core/4.1.8/micronaut-json-core-4.1.8.pom,verify passed : build/repo/micronaut-management/4.1.8/micronaut-management-4.1.8.jar,verify passed : build/repo/micronaut-management/4.1.8/micronaut-management-4.1.8.pom,verify passed : build/repo/micronaut-messaging/4.1.8/micronaut-messaging-4.1.8.jar,verify passed : build/repo/micronaut-messaging/4.1.8/micronaut-messaging-4.1.8.pom,verify passed : build/repo/micronaut-retry/4.1.8/micronaut-retry-4.1.8.jar,verify passed : build/repo/micronaut-retry/4.1.8/micronaut-retry-4.1.8.pom,verify passed : build/repo/micronaut-router/4.1.8/micronaut-router-4.1.8.jar,verify passed : build/repo/micronaut-router/4.1.8/micronaut-router-4.1.8.pom,verify passed : build/repo/micronaut-runtime-osx/4.1.8/micronaut-runtime-osx-4.1.8.jar,verify passed : build/repo/micronaut-runtime-osx/4.1.8/micronaut-runtime-osx-4.1.8.pom,verify passed : build/repo/micronaut-runtime/4.1.8/micronaut-runtime-4.1.8.jar,verify passed : build/repo/micronaut-runtime/4.1.8/micronaut-runtime-4.1.8.pom,verify passed : build/repo/micronaut-websocket/4.1.8/micronaut-websocket-4.1.8.jar,verify passed : build/repo/micronaut-websocket/4.1.8/micronaut-websocket-4.1.8.pom" + ], + "result_type": "PASSED" + }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" ], "result_type": "PASSED" }, @@ -898,19 +911,23 @@ "unique_dep_repos": 2, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", - "num_deps_pass": 0 + "check_id": "mcn_build_script_1", + "num_deps_pass": 2 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 2 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -918,24 +935,24 @@ "num_deps_pass": 1 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 2 }, { - "check_id": "mcn_trusted_builder_level_three_1", - "num_deps_pass": 0 + "check_id": "mcn_version_control_system_1", + "num_deps_pass": 2 }, { - "check_id": "mcn_build_script_1", - "num_deps_pass": 2 + "check_id": "mcn_infer_artifact_pipeline_1", + "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", - "num_deps_pass": 2 + "check_id": "mcn_provenance_available_1", + "num_deps_pass": 0 } ], "dep_status": [ diff --git a/tests/e2e/expected_results/micronaut-core/slf4j.json b/tests/e2e/expected_results/micronaut-core/slf4j.json index 1de0884e2..199c11633 100644 --- a/tests/e2e/expected_results/micronaut-core/slf4j.json +++ b/tests/e2e/expected_results/micronaut-core/slf4j.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 22:55:15" + "timestamps": "2023-10-06 15:26:29", + "has_passing_check": true }, "target": { "info": { @@ -66,7 +67,7 @@ "summary": { "DISABLED": 0, "FAILED": 7, - "PASSED": 3, + "PASSED": 4, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -93,6 +94,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -138,7 +151,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -203,19 +216,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -223,23 +240,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/multibuild_test/multibuild_test.json b/tests/e2e/expected_results/multibuild_test/multibuild_test.json index 4ce642a20..525120121 100644 --- a/tests/e2e/expected_results/multibuild_test/multibuild_test.json +++ b/tests/e2e/expected_results/multibuild_test/multibuild_test.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:09:38" + "timestamps": "2023-10-06 15:22:03", + "has_passing_check": true }, "target": { "info": { @@ -66,7 +67,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -110,6 +111,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -144,7 +157,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -209,19 +222,23 @@ "unique_dep_repos": 2, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", - "num_deps_pass": 0 + "check_id": "mcn_build_script_1", + "num_deps_pass": 2 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 2 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -229,24 +246,24 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 2 }, { - "check_id": "mcn_trusted_builder_level_three_1", - "num_deps_pass": 0 + "check_id": "mcn_version_control_system_1", + "num_deps_pass": 2 }, { - "check_id": "mcn_build_script_1", - "num_deps_pass": 2 + "check_id": "mcn_infer_artifact_pipeline_1", + "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", - "num_deps_pass": 2 + "check_id": "mcn_provenance_available_1", + "num_deps_pass": 0 } ], "dep_status": [ diff --git a/tests/e2e/expected_results/onu-ui/onu-ui.json b/tests/e2e/expected_results/onu-ui/onu-ui.json index b79e46b50..501c33e0d 100644 --- a/tests/e2e/expected_results/onu-ui/onu-ui.json +++ b/tests/e2e/expected_results/onu-ui/onu-ui.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-30 15:56:04" + "timestamps": "2023-10-06 15:22:08", + "has_passing_check": true }, "target": { "info": { @@ -65,7 +66,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -109,6 +110,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "1 pull requests have been reviewed by at least two person.", + "The pass rate is 1 / 1" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -208,7 +221,11 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_provenance_witness_level_one_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { @@ -216,35 +233,35 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_two_person_reviewed_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_build_as_code_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_as_code_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/plot-plugin/plot-plugin.json b/tests/e2e/expected_results/plot-plugin/plot-plugin.json index faa5f2e95..73d96685c 100644 --- a/tests/e2e/expected_results/plot-plugin/plot-plugin.json +++ b/tests/e2e/expected_results/plot-plugin/plot-plugin.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:07:15" + "timestamps": "2023-10-06 15:20:25", + "has_passing_check": true }, "target": { "info": { @@ -111,7 +112,7 @@ "summary": { "DISABLED": 0, "FAILED": 7, - "PASSED": 3, + "PASSED": 4, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -138,6 +139,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -183,7 +196,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -248,19 +261,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -268,23 +285,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/purl/com_google_guava/guava/guava.json b/tests/e2e/expected_results/purl/com_google_guava/guava/guava.json index d28951558..bc6adb2c4 100644 --- a/tests/e2e/expected_results/purl/com_google_guava/guava/guava.json +++ b/tests/e2e/expected_results/purl/com_google_guava/guava/guava.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 16:52:10" + "timestamps": "2023-10-06 15:28:07", + "has_passing_check": true }, "target": { "info": { @@ -66,7 +67,7 @@ "summary": { "DISABLED": 0, "FAILED": 5, - "PASSED": 5, + "PASSED": 6, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -122,6 +123,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -145,7 +158,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -210,19 +223,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -230,23 +247,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/purl/maven/maven.json b/tests/e2e/expected_results/purl/maven/maven.json index 833cb74bb..a31430df9 100644 --- a/tests/e2e/expected_results/purl/maven/maven.json +++ b/tests/e2e/expected_results/purl/maven/maven.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:10:37" + "timestamps": "2023-10-06 15:22:18", + "has_passing_check": true }, "target": { "info": { @@ -111,7 +112,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -149,6 +150,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "1 pull requests have been reviewed by at least two person.", + "The pass rate is 1 / 1" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -183,7 +196,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" }, @@ -248,19 +261,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -268,23 +285,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/react-pdf/react-pdf.json b/tests/e2e/expected_results/react-pdf/react-pdf.json index 85d8037f8..6be863d1f 100644 --- a/tests/e2e/expected_results/react-pdf/react-pdf.json +++ b/tests/e2e/expected_results/react-pdf/react-pdf.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-20 20:15:39" + "timestamps": "2023-10-06 15:22:13", + "has_passing_check": true }, "target": { "info": { @@ -65,7 +66,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -109,6 +110,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -208,7 +221,11 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_provenance_witness_level_one_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { @@ -216,35 +233,35 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_two_person_reviewed_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_build_as_code_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_as_code_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/sget/sget.json b/tests/e2e/expected_results/sget/sget.json index 897e79004..e5d119471 100644 --- a/tests/e2e/expected_results/sget/sget.json +++ b/tests/e2e/expected_results/sget/sget.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-10-05 10:57:32" + "timestamps": "2023-10-06 15:22:15", + "has_passing_check": true }, "target": { "info": { @@ -65,7 +66,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -108,6 +109,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -207,19 +220,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -227,23 +244,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/slsa-verifier/slsa-verifier_cue_PASS.json b/tests/e2e/expected_results/slsa-verifier/slsa-verifier_cue_PASS.json index d32078220..83ecec1d8 100644 --- a/tests/e2e/expected_results/slsa-verifier/slsa-verifier_cue_PASS.json +++ b/tests/e2e/expected_results/slsa-verifier/slsa-verifier_cue_PASS.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:36:00" + "timestamps": "2023-10-06 15:30:26", + "has_passing_check": true }, "target": { "info": { @@ -1684,7 +1685,7 @@ "summary": { "DISABLED": 0, "FAILED": 2, - "PASSED": 8, + "PASSED": 9, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -1785,6 +1786,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "1 pull requests have been reviewed by at least two person.", + "The pass rate is 1 / 1" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -1831,19 +1844,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -1851,23 +1868,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/tinyMediaManager/tinyMediaManager.json b/tests/e2e/expected_results/tinyMediaManager/tinyMediaManager.json index bbe1ada0c..b9d6f6dc3 100644 --- a/tests/e2e/expected_results/tinyMediaManager/tinyMediaManager.json +++ b/tests/e2e/expected_results/tinyMediaManager/tinyMediaManager.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:07:11" + "timestamps": "2023-10-06 15:20:23", + "has_passing_check": false }, "target": { "info": { @@ -65,73 +66,12 @@ "checks": { "summary": { "DISABLED": 0, - "FAILED": 8, - "PASSED": 2, + "FAILED": 1, + "PASSED": 0, "SKIPPED": 0, "UNKNOWN": 0 }, "results": [ - { - "check_id": "mcn_build_script_1", - "check_description": "Check if the target repo has a valid build script.", - "slsa_requirements": [ - "Scripted Build - SLSA Level 1" - ], - "justification": [ - "The target repository uses build tool maven.", - "The target repository uses build tool docker." - ], - "result_type": "PASSED" - }, - { - "check_id": "mcn_version_control_system_1", - "check_description": "Check whether the target repo uses a version control system.", - "slsa_requirements": [ - "Version controlled - SLSA Level 2" - ], - "justification": [ - { - "This is a Git repository": "https://gitlab.com/tinyMediaManager/tinyMediaManager" - } - ], - "result_type": "PASSED" - }, - { - "check_id": "mcn_build_as_code_1", - "check_description": "The build definition and configuration executed by the build service is verifiably derived from text file definitions stored in a version control system.", - "slsa_requirements": [ - "Build as code - SLSA Level 3" - ], - "justification": [ - "The target repository does not use maven to deploy.", - "The target repository does not use docker to deploy." - ], - "result_type": "FAILED" - }, - { - "check_id": "mcn_build_service_1", - "check_description": "Check if the target repo has a valid build service.", - "slsa_requirements": [ - "Build service - SLSA Level 2" - ], - "justification": [ - "The target repository does not have a build service for maven.", - "The target repository does not have a build service for docker.", - "The target repository does not have a build service for at least one build tool." - ], - "result_type": "FAILED" - }, - { - "check_id": "mcn_infer_artifact_pipeline_1", - "check_description": "Detects potential pipelines from which an artifact is published.", - "slsa_requirements": [ - "Build as code - SLSA Level 3" - ], - "justification": [ - "Check mcn_infer_artifact_pipeline_1 is set to FAILED because mcn_build_as_code_1 FAILED." - ], - "result_type": "FAILED" - }, { "check_id": "mcn_provenance_available_1", "check_description": "Check whether the target has intoto provenance.", @@ -142,60 +82,7 @@ "Provenance content - Identifies builder - SLSA Level 1" ], "justification": [ - "Could not find any SLSA provenances." - ], - "result_type": "FAILED" - }, - { - "check_id": "mcn_provenance_expectation_1", - "check_description": "Check whether the SLSA provenance for the produced artifact conforms to the expected value.", - "slsa_requirements": [ - "Provenance conforms with expectations - SLSA Level 3" - ], - "justification": [ - "Check mcn_provenance_expectation_1 is set to FAILED because mcn_provenance_available_1 FAILED." - ], - "result_type": "FAILED" - }, - { - "check_id": "mcn_provenance_level_three_1", - "check_description": "Check whether the target has SLSA provenance level 3.", - "slsa_requirements": [ - "Provenance - Non falsifiable - SLSA Level 3", - "Provenance content - Includes all build parameters - SLSA Level 3", - "Provenance content - Identifies entry point - SLSA Level 3", - "Provenance content - Identifies source code - SLSA Level 2" - ], - "justification": [ - "Check mcn_provenance_level_three_1 is set to FAILED because mcn_provenance_available_1 FAILED." - ], - "result_type": "FAILED" - }, - { - "check_id": "mcn_provenance_witness_level_one_1", - "check_description": "Check whether the target has a level-1 witness provenance.", - "slsa_requirements": [ - "Provenance - Available - SLSA Level 1", - "Provenance content - Identifies build instructions - SLSA Level 1", - "Provenance content - Identifies artifacts - SLSA Level 1", - "Provenance content - Identifies builder - SLSA Level 1" - ], - "justification": [ - "Check mcn_provenance_witness_level_one_1 is set to FAILED because mcn_provenance_available_1 FAILED." - ], - "result_type": "FAILED" - }, - { - "check_id": "mcn_trusted_builder_level_three_1", - "check_description": "Check whether the target uses a trusted SLSA level 3 builder.", - "slsa_requirements": [ - "Hermetic - SLSA Level 4", - "Isolated - SLSA Level 3", - "Parameterless - SLSA Level 4", - "Ephemeral environment - SLSA Level 3" - ], - "justification": [ - "Could not find a trusted level 3 builder as a GitHub Actions workflow." + "Could not find any SLSA or Witness provenances." ], "result_type": "FAILED" } @@ -207,19 +94,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -227,23 +118,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/uiv/uiv.json b/tests/e2e/expected_results/uiv/uiv.json index 92de3a6f2..37795b926 100644 --- a/tests/e2e/expected_results/uiv/uiv.json +++ b/tests/e2e/expected_results/uiv/uiv.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-21 07:27:24" + "timestamps": "2023-10-06 15:22:06", + "has_passing_check": true }, "target": { "info": { @@ -21,7 +22,7 @@ "predicateType": "https://slsa.dev/provenance/v0.2", "predicate": { "builder": { - "id": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_npm.yaml" + "id": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_github.yaml" }, "buildType": "Custom github_actions", "invocation": { @@ -30,14 +31,14 @@ "digest": { "sha1": "057b25b4db0913edab4cf728c306085e6fc20d49" }, - "entryPoint": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_npm.yaml" + "entryPoint": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_github.yaml" }, "parameters": {}, "environment": {} }, "buildConfig": { - "jobID": "deploy_npm", - "stepID": "Publish NPM" + "jobID": "publish_github", + "stepID": "" }, "metadata": { "buildInvocationId": "", @@ -65,7 +66,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -78,10 +79,10 @@ ], "justification": [ { - "The target repository uses build tool npm to deploy": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_npm.yaml", - "The build is triggered by": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_npm.yaml" + "The target repository uses build tool npm to deploy": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_github.yaml", + "The build is triggered by": "https://github.com/uiv-lib/uiv/blob/057b25b4db0913edab4cf728c306085e6fc20d49/.github/workflows/publish_github.yaml" }, - "Deploy command: ['npm', 'publish']", + "Deploy command: ['npm', 'publish', '--registry=https://npm.pkg.github.com']", "However, could not find a passing workflow run.", "The target repository does not use yarn to deploy." ], @@ -109,6 +110,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -208,7 +221,11 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_provenance_witness_level_one_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { @@ -216,35 +233,35 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_two_person_reviewed_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_build_as_code_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_as_code_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/urllib3/urllib3.json b/tests/e2e/expected_results/urllib3/urllib3.json index 7e37cb3b1..40b34031e 100644 --- a/tests/e2e/expected_results/urllib3/urllib3.json +++ b/tests/e2e/expected_results/urllib3/urllib3.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-22 14:22:34" + "timestamps": "2023-10-06 15:33:53", + "has_passing_check": true }, "target": { "info": { @@ -20,15 +21,15 @@ "predicateType": "https://slsa.dev/provenance/v0.2", "subject": [ { - "name": "urllib3-2.0.5-py3-none-any.whl", + "name": "urllib3-2.0.6-py3-none-any.whl", "digest": { - "sha256": "ef16afa8ba34a1f989db38e1dbbe0c302e4289a47856990d0682e374563ce35e" + "sha256": "7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2" } }, { - "name": "urllib3-2.0.5.tar.gz", + "name": "urllib3-2.0.6.tar.gz", "digest": { - "sha256": "13abf37382ea2ce6fb744d4dad67838eec857c9f4f57009891805e0b5e123594" + "sha256": "b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564" } } ], @@ -39,32 +40,32 @@ "buildType": "https://github.com/slsa-framework/slsa-github-generator/generic@v1", "invocation": { "configSource": { - "uri": "git+https://github.com/urllib3/urllib3@refs/tags/v2.0.5", + "uri": "git+https://github.com/urllib3/urllib3@refs/tags/2.0.6", "digest": { - "sha1": "d9f85a749488188c286cd50606d159874db94d5f" + "sha1": "262e3e332209ee93ff70e2b13502c8f20c105ac8" }, "entryPoint": ".github/workflows/publish.yml" }, "parameters": {}, "environment": { - "github_actor": "pquentin", - "github_actor_id": "42327", + "github_actor": "illia-v", + "github_actor_id": "17710133", "github_base_ref": "", "github_event_name": "push", "github_event_payload": { - "after": "d4e424a471c79f245740a3734567e7402c036620", + "after": "3b5b1fea8680cc667af65dd0b66d9770696d7173", "base_ref": null, "before": "0000000000000000000000000000000000000000", "commits": [], - "compare": "https://github.com/urllib3/urllib3/compare/v2.0.5", + "compare": "https://github.com/urllib3/urllib3/compare/2.0.6", "created": true, "deleted": false, "forced": false, "head_commit": { "author": { - "email": "quentin.pradet@gmail.com", - "name": "Quentin Pradet", - "username": "pquentin" + "email": "illia.volochii@gmail.com", + "name": "Illia Volochii", + "username": "illia-v" }, "committer": { "email": "noreply@github.com", @@ -72,11 +73,11 @@ "username": "web-flow" }, "distinct": true, - "id": "d9f85a749488188c286cd50606d159874db94d5f", - "message": "Release 2.0.5", - "timestamp": "2023-09-20T08:59:31+02:00", - "tree_id": "842632ede50bc641555c90779642ab521e0c1401", - "url": "https://github.com/urllib3/urllib3/commit/d9f85a749488188c286cd50606d159874db94d5f" + "id": "262e3e332209ee93ff70e2b13502c8f20c105ac8", + "message": "Release 2.0.6", + "timestamp": "2023-10-02T20:07:11+03:00", + "tree_id": "327904150327c2fd790b5153ad3202225e7be6c2", + "url": "https://github.com/urllib3/urllib3/commit/262e3e332209ee93ff70e2b13502c8f20c105ac8" }, "organization": { "avatar_url": "https://avatars.githubusercontent.com/u/26825299?v=4", @@ -93,10 +94,10 @@ "url": "https://api.github.com/orgs/urllib3" }, "pusher": { - "email": "quentin.pradet@gmail.com", - "name": "pquentin" + "email": "illia.volochii@gmail.com", + "name": "illia-v" }, - "ref": "refs/tags/v2.0.5", + "ref": "refs/tags/2.0.6", "repository": { "allow_forking": true, "archive_url": "https://api.github.com/repos/urllib3/urllib3/{archive_format}{/ref}", @@ -119,8 +120,8 @@ "downloads_url": "https://api.github.com/repos/urllib3/urllib3/downloads", "events_url": "https://api.github.com/repos/urllib3/urllib3/events", "fork": false, - "forks": 1092, - "forks_count": 1092, + "forks": 1090, + "forks_count": 1090, "forks_url": "https://api.github.com/repos/urllib3/urllib3/forks", "full_name": "urllib3/urllib3", "git_commits_url": "https://api.github.com/repos/urllib3/urllib3/git/commits{/sha}", @@ -159,8 +160,8 @@ "name": "urllib3", "node_id": "MDEwOlJlcG9zaXRvcnkyNDEwNjc2", "notifications_url": "https://api.github.com/repos/urllib3/urllib3/notifications{?since,all,participating}", - "open_issues": 130, - "open_issues_count": 130, + "open_issues": 133, + "open_issues_count": 133, "organization": "urllib3", "owner": { "avatar_url": "https://avatars.githubusercontent.com/u/26825299?v=4", @@ -186,12 +187,12 @@ }, "private": false, "pulls_url": "https://api.github.com/repos/urllib3/urllib3/pulls{/number}", - "pushed_at": 1695193235, + "pushed_at": 1696266520, "releases_url": "https://api.github.com/repos/urllib3/urllib3/releases{/id}", - "size": 6839, + "size": 6864, "ssh_url": "git@github.com:urllib3/urllib3.git", - "stargazers": 3485, - "stargazers_count": 3485, + "stargazers": 3490, + "stargazers_count": 3490, "stargazers_url": "https://api.github.com/repos/urllib3/urllib3/stargazers", "statuses_url": "https://api.github.com/repos/urllib3/urllib3/statuses/{sha}", "subscribers_url": "https://api.github.com/repos/urllib3/urllib3/subscribers", @@ -206,48 +207,48 @@ "urllib3" ], "trees_url": "https://api.github.com/repos/urllib3/urllib3/git/trees{/sha}", - "updated_at": "2023-09-19T20:11:25Z", + "updated_at": "2023-10-02T15:25:48Z", "url": "https://github.com/urllib3/urllib3", "visibility": "public", - "watchers": 3485, - "watchers_count": 3485, + "watchers": 3490, + "watchers_count": 3490, "web_commit_signoff_required": false }, "sender": { - "avatar_url": "https://avatars.githubusercontent.com/u/42327?v=4", - "events_url": "https://api.github.com/users/pquentin/events{/privacy}", - "followers_url": "https://api.github.com/users/pquentin/followers", - "following_url": "https://api.github.com/users/pquentin/following{/other_user}", - "gists_url": "https://api.github.com/users/pquentin/gists{/gist_id}", + "avatar_url": "https://avatars.githubusercontent.com/u/17710133?v=4", + "events_url": "https://api.github.com/users/illia-v/events{/privacy}", + "followers_url": "https://api.github.com/users/illia-v/followers", + "following_url": "https://api.github.com/users/illia-v/following{/other_user}", + "gists_url": "https://api.github.com/users/illia-v/gists{/gist_id}", "gravatar_id": "", - "html_url": "https://github.com/pquentin", - "id": 42327, - "login": "pquentin", - "node_id": "MDQ6VXNlcjQyMzI3", - "organizations_url": "https://api.github.com/users/pquentin/orgs", - "received_events_url": "https://api.github.com/users/pquentin/received_events", - "repos_url": "https://api.github.com/users/pquentin/repos", + "html_url": "https://github.com/illia-v", + "id": 17710133, + "login": "illia-v", + "node_id": "MDQ6VXNlcjE3NzEwMTMz", + "organizations_url": "https://api.github.com/users/illia-v/orgs", + "received_events_url": "https://api.github.com/users/illia-v/received_events", + "repos_url": "https://api.github.com/users/illia-v/repos", "site_admin": false, - "starred_url": "https://api.github.com/users/pquentin/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/pquentin/subscriptions", + "starred_url": "https://api.github.com/users/illia-v/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/illia-v/subscriptions", "type": "User", - "url": "https://api.github.com/users/pquentin" + "url": "https://api.github.com/users/illia-v" } }, "github_head_ref": "", - "github_ref": "refs/tags/v2.0.5", + "github_ref": "refs/tags/2.0.6", "github_ref_type": "tag", "github_repository_id": "2410676", "github_repository_owner": "urllib3", "github_repository_owner_id": "26825299", "github_run_attempt": "1", - "github_run_id": "6245105149", - "github_run_number": "22", - "github_sha1": "d9f85a749488188c286cd50606d159874db94d5f" + "github_run_id": "6383242672", + "github_run_number": "23", + "github_sha1": "262e3e332209ee93ff70e2b13502c8f20c105ac8" } }, "metadata": { - "buildInvocationID": "6245105149-1", + "buildInvocationID": "6383242672-1", "completeness": { "parameters": true, "environment": false, @@ -257,9 +258,9 @@ }, "materials": [ { - "uri": "git+https://github.com/urllib3/urllib3@refs/tags/v2.0.5", + "uri": "git+https://github.com/urllib3/urllib3@refs/tags/2.0.6", "digest": { - "sha1": "d9f85a749488188c286cd50606d159874db94d5f" + "sha1": "262e3e332209ee93ff70e2b13502c8f20c105ac8" } } ] @@ -272,7 +273,7 @@ "summary": { "DISABLED": 0, "FAILED": 3, - "PASSED": 7, + "PASSED": 8, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -352,7 +353,19 @@ ], "justification": [ "Successfully verified level 3: ", - "verify passed : urllib3-2.0.5-py3-none-any.whl,verify passed : urllib3-2.0.5.tar.gz" + "verify passed : urllib3-2.0.6-py3-none-any.whl,verify passed : urllib3-2.0.6.tar.gz" + ], + "result_type": "PASSED" + }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" ], "result_type": "PASSED" }, @@ -416,7 +429,11 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_provenance_witness_level_one_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { @@ -424,35 +441,35 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_two_person_reviewed_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_build_as_code_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_as_code_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/urllib3/urllib3_cue_invalid.json b/tests/e2e/expected_results/urllib3/urllib3_cue_invalid.json index b41112913..3a837eb46 100644 --- a/tests/e2e/expected_results/urllib3/urllib3_cue_invalid.json +++ b/tests/e2e/expected_results/urllib3/urllib3_cue_invalid.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-12 17:36:12" + "timestamps": "2023-10-06 15:30:33", + "has_passing_check": true }, "target": { "info": { @@ -20,28 +21,28 @@ "predicateType": "https://slsa.dev/provenance/v0.2", "subject": [ { - "name": "urllib3-2.0.4-py3-none-any.whl", + "name": "urllib3-2.0.6-py3-none-any.whl", "digest": { - "sha256": "de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4" + "sha256": "7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2" } }, { - "name": "urllib3-2.0.4.tar.gz", + "name": "urllib3-2.0.6.tar.gz", "digest": { - "sha256": "8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11" + "sha256": "b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564" } } ], "predicate": { "builder": { - "id": "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.7.0" + "id": "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v1.9.0" }, "buildType": "https://github.com/slsa-framework/slsa-github-generator/generic@v1", "invocation": { "configSource": { - "uri": "git+https://github.com/urllib3/urllib3@refs/tags/2.0.4", + "uri": "git+https://github.com/urllib3/urllib3@refs/tags/2.0.6", "digest": { - "sha1": "c9fa144545eedb5dc4a2cc3f255e95602a1d7db0" + "sha1": "262e3e332209ee93ff70e2b13502c8f20c105ac8" }, "entryPoint": ".github/workflows/publish.yml" }, @@ -52,19 +53,19 @@ "github_base_ref": "", "github_event_name": "push", "github_event_payload": { - "after": "d267c99f7e890ff22e136c34d29be802d9c2e773", + "after": "3b5b1fea8680cc667af65dd0b66d9770696d7173", "base_ref": null, "before": "0000000000000000000000000000000000000000", "commits": [], - "compare": "https://github.com/urllib3/urllib3/compare/2.0.4", + "compare": "https://github.com/urllib3/urllib3/compare/2.0.6", "created": true, "deleted": false, "forced": false, "head_commit": { "author": { - "email": "64815328+Eutropios@users.noreply.github.com", - "name": "Noah Jenner", - "username": "Eutropios" + "email": "illia.volochii@gmail.com", + "name": "Illia Volochii", + "username": "illia-v" }, "committer": { "email": "noreply@github.com", @@ -72,11 +73,11 @@ "username": "web-flow" }, "distinct": true, - "id": "c9fa144545eedb5dc4a2cc3f255e95602a1d7db0", - "message": "Release version 2.0.4 (#3084)\n\nCo-authored-by: Illia Volochii ", - "timestamp": "2023-07-19T17:46:02+03:00", - "tree_id": "e61f50347e7bb803a0c8942ba63fe917c8424f77", - "url": "https://github.com/urllib3/urllib3/commit/c9fa144545eedb5dc4a2cc3f255e95602a1d7db0" + "id": "262e3e332209ee93ff70e2b13502c8f20c105ac8", + "message": "Release 2.0.6", + "timestamp": "2023-10-02T20:07:11+03:00", + "tree_id": "327904150327c2fd790b5153ad3202225e7be6c2", + "url": "https://github.com/urllib3/urllib3/commit/262e3e332209ee93ff70e2b13502c8f20c105ac8" }, "organization": { "avatar_url": "https://avatars.githubusercontent.com/u/26825299?v=4", @@ -96,7 +97,7 @@ "email": "illia.volochii@gmail.com", "name": "illia-v" }, - "ref": "refs/tags/2.0.4", + "ref": "refs/tags/2.0.6", "repository": { "allow_forking": true, "archive_url": "https://api.github.com/repos/urllib3/urllib3/{archive_format}{/ref}", @@ -119,8 +120,8 @@ "downloads_url": "https://api.github.com/repos/urllib3/urllib3/downloads", "events_url": "https://api.github.com/repos/urllib3/urllib3/events", "fork": false, - "forks": 1078, - "forks_count": 1078, + "forks": 1090, + "forks_count": 1090, "forks_url": "https://api.github.com/repos/urllib3/urllib3/forks", "full_name": "urllib3/urllib3", "git_commits_url": "https://api.github.com/repos/urllib3/urllib3/git/commits{/sha}", @@ -159,8 +160,8 @@ "name": "urllib3", "node_id": "MDEwOlJlcG9zaXRvcnkyNDEwNjc2", "notifications_url": "https://api.github.com/repos/urllib3/urllib3/notifications{?since,all,participating}", - "open_issues": 125, - "open_issues_count": 125, + "open_issues": 133, + "open_issues_count": 133, "organization": "urllib3", "owner": { "avatar_url": "https://avatars.githubusercontent.com/u/26825299?v=4", @@ -186,12 +187,12 @@ }, "private": false, "pulls_url": "https://api.github.com/repos/urllib3/urllib3/pulls{/number}", - "pushed_at": 1689779927, + "pushed_at": 1696266520, "releases_url": "https://api.github.com/repos/urllib3/urllib3/releases{/id}", - "size": 7242, + "size": 6864, "ssh_url": "git@github.com:urllib3/urllib3.git", - "stargazers": 3452, - "stargazers_count": 3452, + "stargazers": 3490, + "stargazers_count": 3490, "stargazers_url": "https://api.github.com/repos/urllib3/urllib3/stargazers", "statuses_url": "https://api.github.com/repos/urllib3/urllib3/statuses/{sha}", "subscribers_url": "https://api.github.com/repos/urllib3/urllib3/subscribers", @@ -206,11 +207,11 @@ "urllib3" ], "trees_url": "https://api.github.com/repos/urllib3/urllib3/git/trees{/sha}", - "updated_at": "2023-07-19T02:19:14Z", + "updated_at": "2023-10-02T15:25:48Z", "url": "https://github.com/urllib3/urllib3", "visibility": "public", - "watchers": 3452, - "watchers_count": 3452, + "watchers": 3490, + "watchers_count": 3490, "web_commit_signoff_required": false }, "sender": { @@ -235,19 +236,19 @@ } }, "github_head_ref": "", - "github_ref": "refs/tags/2.0.4", + "github_ref": "refs/tags/2.0.6", "github_ref_type": "tag", "github_repository_id": "2410676", "github_repository_owner": "urllib3", "github_repository_owner_id": "26825299", "github_run_attempt": "1", - "github_run_id": "5600993171", - "github_run_number": "21", - "github_sha1": "c9fa144545eedb5dc4a2cc3f255e95602a1d7db0" + "github_run_id": "6383242672", + "github_run_number": "23", + "github_sha1": "262e3e332209ee93ff70e2b13502c8f20c105ac8" } }, "metadata": { - "buildInvocationID": "5600993171-1", + "buildInvocationID": "6383242672-1", "completeness": { "parameters": true, "environment": false, @@ -257,9 +258,9 @@ }, "materials": [ { - "uri": "git+https://github.com/urllib3/urllib3@refs/tags/2.0.4", + "uri": "git+https://github.com/urllib3/urllib3@refs/tags/2.0.6", "digest": { - "sha1": "c9fa144545eedb5dc4a2cc3f255e95602a1d7db0" + "sha1": "262e3e332209ee93ff70e2b13502c8f20c105ac8" } } ] @@ -272,7 +273,7 @@ "summary": { "DISABLED": 0, "FAILED": 3, - "PASSED": 6, + "PASSED": 7, "SKIPPED": 0, "UNKNOWN": 1 }, @@ -352,7 +353,19 @@ ], "justification": [ "Successfully verified level 3: ", - "verify passed : urllib3-2.0.4-py3-none-any.whl,verify passed : urllib3-2.0.4.tar.gz" + "verify passed : urllib3-2.0.6-py3-none-any.whl,verify passed : urllib3-2.0.6.tar.gz" + ], + "result_type": "PASSED" + }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" ], "result_type": "PASSED" }, @@ -416,19 +429,23 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_witness_level_one_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_build_script_1", "num_deps_pass": 0 }, { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_two_person_reviewed_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { @@ -436,23 +453,23 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_script_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/e2e/expected_results/yoga/yoga.json b/tests/e2e/expected_results/yoga/yoga.json index 82bc387f3..9549b8758 100644 --- a/tests/e2e/expected_results/yoga/yoga.json +++ b/tests/e2e/expected_results/yoga/yoga.json @@ -1,6 +1,7 @@ { "metadata": { - "timestamps": "2023-09-21 07:28:37" + "timestamps": "2023-10-06 15:22:12", + "has_passing_check": true }, "target": { "info": { @@ -66,7 +67,7 @@ "summary": { "DISABLED": 0, "FAILED": 6, - "PASSED": 4, + "PASSED": 5, "SKIPPED": 0, "UNKNOWN": 0 }, @@ -79,10 +80,10 @@ ], "justification": [ { - "The target repository uses build tool gradle to deploy": "https://github.com/facebook/yoga/blob/f8e2bc0875c145c429d0e865c9b83a40f65b3070/.github/workflows/publish-android-snashot.yml", - "The build is triggered by": "https://github.com/facebook/yoga/blob/f8e2bc0875c145c429d0e865c9b83a40f65b3070/.github/workflows/publish-android-snashot.yml" + "The target repository uses build tool gradle to deploy": "https://github.com/facebook/yoga/blob/f8e2bc0875c145c429d0e865c9b83a40f65b3070/.github/workflows/publish-android-release.yml", + "The build is triggered by": "https://github.com/facebook/yoga/blob/f8e2bc0875c145c429d0e865c9b83a40f65b3070/.github/workflows/publish-android-release.yml" }, - "Deploy command: ['./gradlew', 'publishToSonatype']", + "Deploy command: ['./gradlew', 'publishToSonatype', 'closeAndReleaseSonatypeStagingRepository']", "However, could not find a passing workflow run.", "The target repository does not use npm to deploy.", { @@ -116,6 +117,18 @@ ], "result_type": "PASSED" }, + { + "check_id": "mcn_two_person_reviewed_1", + "check_description": "Check whether the merged pull requests has been reviewd and approved by at least one reviewer.", + "slsa_requirements": [ + "Two-person reviewed - SLSA Level 4" + ], + "justification": [ + "0 pull requests have been reviewed by at least two person.", + "The pass rate is 0 / 0" + ], + "result_type": "PASSED" + }, { "check_id": "mcn_version_control_system_1", "check_description": "Check whether the target repo uses a version control system.", @@ -215,7 +228,11 @@ "unique_dep_repos": 0, "checks_summary": [ { - "check_id": "mcn_infer_artifact_pipeline_1", + "check_id": "mcn_provenance_witness_level_one_1", + "num_deps_pass": 0 + }, + { + "check_id": "mcn_provenance_level_three_1", "num_deps_pass": 0 }, { @@ -223,35 +240,35 @@ "num_deps_pass": 0 }, { - "check_id": "mcn_version_control_system_1", + "check_id": "mcn_two_person_reviewed_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_service_1", + "check_id": "mcn_provenance_expectation_1", "num_deps_pass": 0 }, { - "check_id": "mcn_trusted_builder_level_three_1", + "check_id": "mcn_build_as_code_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_witness_level_one_1", + "check_id": "mcn_build_service_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_available_1", + "check_id": "mcn_version_control_system_1", "num_deps_pass": 0 }, { - "check_id": "mcn_build_as_code_1", + "check_id": "mcn_infer_artifact_pipeline_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_level_three_1", + "check_id": "mcn_trusted_builder_level_three_1", "num_deps_pass": 0 }, { - "check_id": "mcn_provenance_expectation_1", + "check_id": "mcn_provenance_available_1", "num_deps_pass": 0 } ], diff --git a/tests/policy_engine/expected_results/policy_report.json b/tests/policy_engine/expected_results/policy_report.json index 5108356cc..b1b2bd198 100644 --- a/tests/policy_engine/expected_results/policy_report.json +++ b/tests/policy_engine/expected_results/policy_report.json @@ -1,16 +1,16 @@ { - "passed_policies": [ + "component_satisfies_policy": [ [ + "169", + "pkg:github.com/slsa-framework/slsa-verifier@fc50b662fcfeeeb0e97243554b47d9b20b14efac", "auth-provenance" ] ], - "failed_policies": [], - "component_violates_policy": [], - "component_satisfies_policy": [ + "passed_policies": [ [ - "121", - "pkg:github.com/slsa-framework/slsa-verifier@fc50b662fcfeeeb0e97243554b47d9b20b14efac", "auth-provenance" ] - ] + ], + "component_violates_policy": [], + "failed_policies": [] } diff --git a/tests/slsa_analyzer/checks/test_two_person_reviewed_check.py b/tests/slsa_analyzer/checks/test_two_person_reviewed_check.py new file mode 100644 index 000000000..c6df4c397 --- /dev/null +++ b/tests/slsa_analyzer/checks/test_two_person_reviewed_check.py @@ -0,0 +1,79 @@ +# Copyright (c) 2023 - 2023, Oracle and/or its affiliates. All rights reserved. +# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/. + +"""This module contains the tests for the TwoPersonReviewed Check.""" +import logging +import os + +import requests + +from macaron.config.defaults import defaults + +logger: logging.Logger = logging.getLogger(__name__) + + +class TestTwoPersonReviewedCheck: + """ + Provide three test cases here + """ + + def test_two_person_reviewed_check(self) -> None: + """This is a function check two-person reviewed.""" + # Change request merged pull request + assert self.check_a_review("micronaut-projects", "micronaut-core", 593) == "CHANGES_REQUESTED" + # Approved merged pull request + assert self.check_a_review("micronaut-projects", "micronaut-core", 9875) == "APPROVED" + + def check_a_review(self, owner: str, name: str, pr_number: int) -> str: + """ + Implement the function to fetch a review and checks for two-person review completion. + + Parameters + ---------- + owner (String): The name of the owner. + name (String): The name of the repo. + pr_number (String): Identify which pull request. + + Returns + ------- + CheckResultType: Result of the test. + """ + # Your GitHub personal access token (replace with your own token) + token = os.getenv("GITHUB_TOKEN") + # GitHub GraphQL API endpoint + url = "https://api.github.com/graphql" + # Define the GraphQL query + query = """ + query ($owner: String!, $name: String!, $number: Int!) { + repository(owner: $owner, name: $name) { + pullRequest(number: $number) { + reviewDecision + } + } + } + """ + # Set up the HTTP headers with your token + headers = { + "Authorization": f"Bearer {token}", + "Content-Type": "application/json", + } + # Send the GraphQL query to GitHub API. + variables = { + "owner": owner, + "name": name, + "number": pr_number, + } + response = requests.post( + url, + timeout=defaults.getint("requests", "timeout", fallback=10), + json={"query": query, "variables": variables}, + headers=headers, + ) # nosec B113:request_without_timeout + review_decision = "" + if response.status_code == 200: + data = response.json() + review_decision = data["data"]["repository"]["pullRequest"]["reviewDecision"] + else: + logger.error("%s, %s", response.status_code, response.text) + + return review_decision