From f9d32383213d22db2a20d75015b70a4148ecdfaa Mon Sep 17 00:00:00 2001 From: Guillaume Smet Date: Fri, 17 Jan 2025 17:03:52 +0100 Subject: [PATCH] Ping people for pull requests targeting guarded branches Fixes #512 --- .../io/quarkus/bot/TriagePullRequest.java | 33 +- .../config/QuarkusGitHubBotConfigFile.java | 10 + .../quarkus/bot/it/PullRequestOpenedTest.java | 17 + .../pullrequest-opened-guarded-branch.json | 467 ++++++++++++++++++ 4 files changed, 515 insertions(+), 12 deletions(-) create mode 100644 src/test/resources/pullrequest-opened-guarded-branch.json diff --git a/src/main/java/io/quarkus/bot/TriagePullRequest.java b/src/main/java/io/quarkus/bot/TriagePullRequest.java index be6e64f..58fabc2 100644 --- a/src/main/java/io/quarkus/bot/TriagePullRequest.java +++ b/src/main/java/io/quarkus/bot/TriagePullRequest.java @@ -19,6 +19,7 @@ import io.quarkus.bot.config.Feature; import io.quarkus.bot.config.QuarkusGitHubBotConfig; import io.quarkus.bot.config.QuarkusGitHubBotConfigFile; +import io.quarkus.bot.config.QuarkusGitHubBotConfigFile.GuardedBranch; import io.quarkus.bot.config.QuarkusGitHubBotConfigFile.TriageRule; import io.quarkus.bot.util.GHIssues; import io.quarkus.bot.util.Mentions; @@ -48,10 +49,6 @@ void triagePullRequest( return; } - if (quarkusBotConfigFile.triage.rules.isEmpty()) { - return; - } - GHPullRequest pullRequest = pullRequestPayload.getPullRequest(); Set labels = new TreeSet<>(); Mentions mentions = new Mentions(); @@ -78,20 +75,32 @@ void triagePullRequest( } } - // remove from the set the labels already present on the pull request - pullRequest.getLabels().stream().map(GHLabel::getName).forEach(labels::remove); + for (GuardedBranch guardedBranch : quarkusBotConfigFile.triage.guardedBranches) { + if (guardedBranch.ref.equals(pullRequest.getBase().getRef())) { + for (String mention : guardedBranch.notify) { + mentions.add(mention, guardedBranch.ref); + } + } + } + // remove from the set the labels already present on the pull request if (!labels.isEmpty()) { - if (!quarkusBotConfig.isDryRun()) { - pullRequest.addLabels(limit(labels).toArray(new String[0])); - } else { - LOG.info("Pull Request #" + pullRequest.getNumber() + " - Add labels: " + String.join(", ", limit(labels))); + pullRequest.getLabels().stream().map(GHLabel::getName).forEach(labels::remove); + + if (!labels.isEmpty()) { + if (!quarkusBotConfig.isDryRun()) { + pullRequest.addLabels(limit(labels).toArray(new String[0])); + } else { + LOG.info("Pull Request #" + pullRequest.getNumber() + " - Add labels: " + String.join(", ", limit(labels))); + } } } - mentions.removeAlreadyParticipating(GHIssues.getParticipatingUsers(pullRequest, gitHubGraphQLClient)); if (!mentions.isEmpty()) { - comments.add("/cc " + mentions.getMentionsString()); + mentions.removeAlreadyParticipating(GHIssues.getParticipatingUsers(pullRequest, gitHubGraphQLClient)); + if (!mentions.isEmpty()) { + comments.add("/cc " + mentions.getMentionsString()); + } } for (String comment : comments) { diff --git a/src/main/java/io/quarkus/bot/config/QuarkusGitHubBotConfigFile.java b/src/main/java/io/quarkus/bot/config/QuarkusGitHubBotConfigFile.java index 7fdbee6..c14831c 100644 --- a/src/main/java/io/quarkus/bot/config/QuarkusGitHubBotConfigFile.java +++ b/src/main/java/io/quarkus/bot/config/QuarkusGitHubBotConfigFile.java @@ -29,6 +29,8 @@ public static class TriageConfig { public List rules = new ArrayList<>(); + public List guardedBranches = new ArrayList<>(); + public QE qe = new QE(); public Discussions discussions = new Discussions(); @@ -149,6 +151,14 @@ public static class Develocity { public String url; } + public static class GuardedBranch { + + public String ref; + + @JsonDeserialize(as = TreeSet.class) + public Set notify = new TreeSet<>(); + } + boolean isFeatureEnabled(Feature feature) { return features.contains(Feature.ALL) || features.contains(feature); } diff --git a/src/test/java/io/quarkus/bot/it/PullRequestOpenedTest.java b/src/test/java/io/quarkus/bot/it/PullRequestOpenedTest.java index 1ecd865..41d78ff 100644 --- a/src/test/java/io/quarkus/bot/it/PullRequestOpenedTest.java +++ b/src/test/java/io/quarkus/bot/it/PullRequestOpenedTest.java @@ -393,6 +393,23 @@ void triageIdNotify() throws IOException { }); } + @Test + void triageGuardedBranches() throws IOException { + given().github(mocks -> mocks.configFile("quarkus-github-bot.yml") + .fromString("features: [ TRIAGE_ISSUES_AND_PULL_REQUESTS ]\n" + + "triage:\n" + + " guardedBranches:\n" + + " - ref: 3.15\n" + + " notify: [jmartisk,gsmet]\n")) + .when().payloadFromClasspath("/pullrequest-opened-guarded-branch.json") + .event(GHEvent.PULL_REQUEST) + .then().github(mocks -> { + verify(mocks.pullRequest(527350930)) + .comment("/cc @gsmet (3.15), @jmartisk (3.15)"); + verifyNoMoreInteractions(mocks.ghObjects()); + }); + } + @Test void descriptionMissingForSmallDocChange() throws IOException { given() diff --git a/src/test/resources/pullrequest-opened-guarded-branch.json b/src/test/resources/pullrequest-opened-guarded-branch.json new file mode 100644 index 0000000..c146364 --- /dev/null +++ b/src/test/resources/pullrequest-opened-guarded-branch.json @@ -0,0 +1,467 @@ +{ + "action": "opened", + "number": 1, + "pull_request": { + "url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/1", + "id": 527350930, + "node_id": "MDExOlB1bGxSZXF1ZXN0NTI3MzUwOTMw", + "html_url": "https://github.com/yrodiere/quarkus-bot-java-playground/pull/1", + "diff_url": "https://github.com/yrodiere/quarkus-bot-java-playground/pull/1.diff", + "patch_url": "https://github.com/yrodiere/quarkus-bot-java-playground/pull/1.patch", + "issue_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/1", + "number": 1, + "state": "open", + "locked": false, + "title": "Upgrade postgresql-jdbc to 42.2.18", + "user": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars1.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "site_admin": false + }, + "body": "Upgrade postgresql-jdbc to 42.2.18", + "created_at": "2020-11-25T10:43:59Z", + "updated_at": "2020-11-25T10:43:59Z", + "closed_at": null, + "merged_at": null, + "merge_commit_sha": null, + "assignee": null, + "assignees": [ + + ], + "requested_reviewers": [ + + ], + "requested_teams": [ + + ], + "labels": [ + + ], + "milestone": null, + "draft": false, + "commits_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/1/commits", + "review_comments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/1/comments", + "review_comment_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/comments{/number}", + "comments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/1/comments", + "statuses_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/statuses/b42f1eeba1d71bf30168e33a3b358f4e9ab6cfcc", + "head": { + "label": "yrodiere:yrodiere-patch-1", + "ref": "yrodiere-patch-1", + "sha": "b42f1eeba1d71bf30168e33a3b358f4e9ab6cfcc", + "user": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars1.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 315892888, + "node_id": "MDEwOlJlcG9zaXRvcnkzMTU4OTI4ODg=", + "name": "quarkus-bot-java-playground", + "full_name": "yrodiere/quarkus-bot-java-playground", + "private": true, + "owner": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars1.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/yrodiere/quarkus-bot-java-playground", + "description": null, + "fork": true, + "url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground", + "forks_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/forks", + "keys_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/teams", + "hooks_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/hooks", + "issue_events_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/events{/number}", + "events_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/events", + "assignees_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/assignees{/user}", + "branches_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/branches{/branch}", + "tags_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/tags", + "blobs_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/statuses/{sha}", + "languages_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/languages", + "stargazers_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/stargazers", + "contributors_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/contributors", + "subscribers_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/subscribers", + "subscription_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/subscription", + "commits_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/contents/{+path}", + "compare_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/merges", + "archive_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/downloads", + "issues_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues{/number}", + "pulls_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls{/number}", + "milestones_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/milestones{/number}", + "notifications_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/labels{/name}", + "releases_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/releases{/id}", + "deployments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/deployments", + "created_at": "2020-11-25T09:40:12Z", + "updated_at": "2020-11-25T09:40:14Z", + "pushed_at": "2020-11-25T10:43:54Z", + "git_url": "git://github.com/yrodiere/quarkus-bot-java-playground.git", + "ssh_url": "git@github.com:yrodiere/quarkus-bot-java-playground.git", + "clone_url": "https://github.com/yrodiere/quarkus-bot-java-playground.git", + "svn_url": "https://github.com/yrodiere/quarkus-bot-java-playground", + "homepage": null, + "size": 11, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 1, + "license": null, + "forks": 0, + "open_issues": 1, + "watchers": 0, + "default_branch": "main", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "delete_branch_on_merge": false + } + }, + "base": { + "label": "yrodiere:3.15", + "ref": "3.15", + "sha": "8b2ebeaef765cf01d0765e3e22aed6fb67933624", + "user": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars1.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "site_admin": false + }, + "repo": { + "id": 315892888, + "node_id": "MDEwOlJlcG9zaXRvcnkzMTU4OTI4ODg=", + "name": "quarkus-bot-java-playground", + "full_name": "yrodiere/quarkus-bot-java-playground", + "private": true, + "owner": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars1.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/yrodiere/quarkus-bot-java-playground", + "description": null, + "fork": true, + "url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground", + "forks_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/forks", + "keys_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/teams", + "hooks_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/hooks", + "issue_events_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/events{/number}", + "events_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/events", + "assignees_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/assignees{/user}", + "branches_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/branches{/branch}", + "tags_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/tags", + "blobs_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/statuses/{sha}", + "languages_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/languages", + "stargazers_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/stargazers", + "contributors_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/contributors", + "subscribers_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/subscribers", + "subscription_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/subscription", + "commits_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/contents/{+path}", + "compare_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/merges", + "archive_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/downloads", + "issues_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues{/number}", + "pulls_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls{/number}", + "milestones_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/milestones{/number}", + "notifications_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/labels{/name}", + "releases_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/releases{/id}", + "deployments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/deployments", + "created_at": "2020-11-25T09:40:12Z", + "updated_at": "2020-11-25T09:40:14Z", + "pushed_at": "2020-11-25T10:43:54Z", + "git_url": "git://github.com/yrodiere/quarkus-bot-java-playground.git", + "ssh_url": "git@github.com:yrodiere/quarkus-bot-java-playground.git", + "clone_url": "https://github.com/yrodiere/quarkus-bot-java-playground.git", + "svn_url": "https://github.com/yrodiere/quarkus-bot-java-playground", + "homepage": null, + "size": 11, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 1, + "license": null, + "forks": 0, + "open_issues": 1, + "watchers": 0, + "default_branch": "main", + "allow_squash_merge": true, + "allow_merge_commit": true, + "allow_rebase_merge": true, + "delete_branch_on_merge": false + } + }, + "_links": { + "self": { + "href": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/1" + }, + "html": { + "href": "https://github.com/yrodiere/quarkus-bot-java-playground/pull/1" + }, + "issue": { + "href": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/1" + }, + "comments": { + "href": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/1/comments" + }, + "review_comments": { + "href": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/1/comments" + }, + "review_comment": { + "href": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/comments{/number}" + }, + "commits": { + "href": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls/1/commits" + }, + "statuses": { + "href": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/statuses/b42f1eeba1d71bf30168e33a3b358f4e9ab6cfcc" + } + }, + "author_association": "OWNER", + "active_lock_reason": null, + "merged": false, + "mergeable": null, + "rebaseable": null, + "mergeable_state": "unknown", + "merged_by": null, + "comments": 0, + "review_comments": 0, + "maintainer_can_modify": false, + "commits": 1, + "additions": 3, + "deletions": 1, + "changed_files": 1 + }, + "repository": { + "id": 315892888, + "node_id": "MDEwOlJlcG9zaXRvcnkzMTU4OTI4ODg=", + "name": "quarkus-bot-java-playground", + "full_name": "yrodiere/quarkus-bot-java-playground", + "private": true, + "owner": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars1.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "site_admin": false + }, + "html_url": "https://github.com/yrodiere/quarkus-bot-java-playground", + "description": null, + "fork": true, + "url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground", + "forks_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/forks", + "keys_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/keys{/key_id}", + "collaborators_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/collaborators{/collaborator}", + "teams_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/teams", + "hooks_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/hooks", + "issue_events_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/events{/number}", + "events_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/events", + "assignees_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/assignees{/user}", + "branches_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/branches{/branch}", + "tags_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/tags", + "blobs_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/blobs{/sha}", + "git_tags_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/tags{/sha}", + "git_refs_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/refs{/sha}", + "trees_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/trees{/sha}", + "statuses_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/statuses/{sha}", + "languages_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/languages", + "stargazers_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/stargazers", + "contributors_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/contributors", + "subscribers_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/subscribers", + "subscription_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/subscription", + "commits_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/commits{/sha}", + "git_commits_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/git/commits{/sha}", + "comments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/comments{/number}", + "issue_comment_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues/comments{/number}", + "contents_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/contents/{+path}", + "compare_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/compare/{base}...{head}", + "merges_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/merges", + "archive_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/{archive_format}{/ref}", + "downloads_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/downloads", + "issues_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/issues{/number}", + "pulls_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/pulls{/number}", + "milestones_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/milestones{/number}", + "notifications_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/notifications{?since,all,participating}", + "labels_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/labels{/name}", + "releases_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/releases{/id}", + "deployments_url": "https://api.github.com/repos/yrodiere/quarkus-bot-java-playground/deployments", + "created_at": "2020-11-25T09:40:12Z", + "updated_at": "2020-11-25T09:40:14Z", + "pushed_at": "2020-11-25T10:43:54Z", + "git_url": "git://github.com/yrodiere/quarkus-bot-java-playground.git", + "ssh_url": "git@github.com:yrodiere/quarkus-bot-java-playground.git", + "clone_url": "https://github.com/yrodiere/quarkus-bot-java-playground.git", + "svn_url": "https://github.com/yrodiere/quarkus-bot-java-playground", + "homepage": null, + "size": 11, + "stargazers_count": 0, + "watchers_count": 0, + "language": null, + "has_issues": false, + "has_projects": true, + "has_downloads": true, + "has_wiki": true, + "has_pages": false, + "forks_count": 0, + "mirror_url": null, + "archived": false, + "disabled": false, + "open_issues_count": 1, + "license": null, + "forks": 0, + "open_issues": 1, + "watchers": 0, + "default_branch": "main" + }, + "sender": { + "login": "yrodiere", + "id": 412878, + "node_id": "MDQ6VXNlcjQxMjg3OA==", + "avatar_url": "https://avatars1.githubusercontent.com/u/412878?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yrodiere", + "html_url": "https://github.com/yrodiere", + "followers_url": "https://api.github.com/users/yrodiere/followers", + "following_url": "https://api.github.com/users/yrodiere/following{/other_user}", + "gists_url": "https://api.github.com/users/yrodiere/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yrodiere/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yrodiere/subscriptions", + "organizations_url": "https://api.github.com/users/yrodiere/orgs", + "repos_url": "https://api.github.com/users/yrodiere/repos", + "events_url": "https://api.github.com/users/yrodiere/events{/privacy}", + "received_events_url": "https://api.github.com/users/yrodiere/received_events", + "type": "User", + "site_admin": false + }, + "installation": { + "id": 13173124, + "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxNzMxMjQ=" + } +} \ No newline at end of file