Skip to content

SpencerMalone/test-repo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

test-repo

This repository was used to test if there are timing issues between PRs and the "contents" GH API.

What's the point of this?

To prove that GH is firing webhooks before the app (or at least the contents API) is ready to deal with merges. IMO the behavior should be that it holds off on the webhook until it can actually give an example of what a merge would look like.

Steps:

  1. Run the sinatra app (bundle exec ruby app.rb)
  2. In another terminal session, use ngrok to expose a local service (ngrok http 4567)
  3. Add the ngrok endpoint as your target for a webhook with pull requests enabled (ex: http://5d731f3a.ngrok.io/ghevent as your webhook target)
  4. Modify test-contents for your own repo, and pass in a personal auth token as the first argument. (./test-contents <personal auth here>)

What will happen?:

  1. test-contents will create a file, push it to a new branch, and open a PR in a very short period.
  2. A webhook will fire back to your local ruby service
  3. It'll post back to the contents API, looking for a Jenkinsfile with the ref of... refs/pull/PRID/merge
  4. That ref won't exist.

If you add a sleep between when sinatra gets the webhook and when it calls back to GH, then the whole thing will succeed.

Example output:

Logging from test-contents:

Switched to a new branch 'kHawXd0J8j'
[kHawXd0J8j 51bb421] Adding test file kHawXd0J8j
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 kHawXd0J8j
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 249 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/SpencerMalone/test-repo.git
 * [new branch]      kHawXd0J8j -> kHawXd0J8j
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17265  100 17185  100    80  24433    113 --:--:-- --:--:-- --:--:-- 24410
{ "url": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/7", "id": 133828887, "html_url": "https://github.com/SpencerMalone/test-repo/pull/7", "diff_url": "https://github.com/SpencerMalone/test-repo/pull/7.diff", "patch_url": "https://github.com/SpencerMalone/test-repo/pull/7.patch", "issue_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues/7", "number": 7, "state": "open", "locked": false, "title": "Amazing new feature", "user": { "login": "SpencerMalone", "id": 8786752, "avatar_url": "https://avatars1.githubusercontent.com/u/8786752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SpencerMalone", "html_url": "https://github.com/SpencerMalone", "followers_url": "https://api.github.com/users/SpencerMalone/followers", "following_url": "https://api.github.com/users/SpencerMalone/following{/other_user}", "gists_url": "https://api.github.com/users/SpencerMalone/gists{/gist_id}", "starred_url": "https://api.github.com/users/SpencerMalone/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/SpencerMalone/subscriptions", "organizations_url": "https://api.github.com/users/SpencerMalone/orgs", "repos_url": "https://api.github.com/users/SpencerMalone/repos", "events_url": "https://api.github.com/users/SpencerMalone/events{/privacy}", "received_events_url": "https://api.github.com/users/SpencerMalone/received_events", "type": "User", "site_admin": false }, "body": null, "created_at": "2017-08-02T23:12:10Z", "updated_at": "2017-08-02T23:12:10Z", "closed_at": null, "merged_at": null, "merge_commit_sha": null, "assignee": null, "assignees": [ ], "requested_reviewers": [ ], "milestone": null, "commits_url": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/7/commits", "review_comments_url": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/7/comments", "review_comment_url": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/comments{/number}", "comments_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues/7/comments", "statuses_url": "https://api.github.com/repos/SpencerMalone/test-repo/statuses/51bb42169152fa75cb3829776cdee853b95e472e", "head": { "label": "SpencerMalone:kHawXd0J8j", "ref": "kHawXd0J8j", "sha": "51bb42169152fa75cb3829776cdee853b95e472e", "user": { "login": "SpencerMalone", "id": 8786752, "avatar_url": "https://avatars1.githubusercontent.com/u/8786752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SpencerMalone", "html_url": "https://github.com/SpencerMalone", "followers_url": "https://api.github.com/users/SpencerMalone/followers", "following_url": "https://api.github.com/users/SpencerMalone/following{/other_user}", "gists_url": "https://api.github.com/users/SpencerMalone/gists{/gist_id}", "starred_url": "https://api.github.com/users/SpencerMalone/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/SpencerMalone/subscriptions", "organizations_url": "https://api.github.com/users/SpencerMalone/orgs", "repos_url": "https://api.github.com/users/SpencerMalone/repos", "events_url": "https://api.github.com/users/SpencerMalone/events{/privacy}", "received_events_url": "https://api.github.com/users/SpencerMalone/received_events", "type": "User", "site_admin": false }, "repo": { "id": 99167653, "name": "test-repo", "full_name": "SpencerMalone/test-repo", "owner": { "login": "SpencerMalone", "id": 8786752, "avatar_url": "https://avatars1.githubusercontent.com/u/8786752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SpencerMalone", "html_url": "https://github.com/SpencerMalone", "followers_url": "https://api.github.com/users/SpencerMalone/followers", "following_url": "https://api.github.com/users/SpencerMalone/following{/other_user}", "gists_url": "https://api.github.com/users/SpencerMalone/gists{/gist_id}", "starred_url": "https://api.github.com/users/SpencerMalone/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/SpencerMalone/subscriptions", "organizations_url": "https://api.github.com/users/SpencerMalone/orgs", "repos_url": "https://api.github.com/users/SpencerMalone/repos", "events_url": "https://api.github.com/users/SpencerMalone/events{/privacy}", "received_events_url": "https://api.github.com/users/SpencerMalone/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/SpencerMalone/test-repo", "description": null, "fork": false, "url": "https://api.github.com/repos/SpencerMalone/test-repo", "forks_url": "https://api.github.com/repos/SpencerMalone/test-repo/forks", "keys_url": "https://api.github.com/repos/SpencerMalone/test-repo/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/SpencerMalone/test-repo/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/SpencerMalone/test-repo/teams", "hooks_url": "https://api.github.com/repos/SpencerMalone/test-repo/hooks", "issue_events_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues/events{/number}", "events_url": "https://api.github.com/repos/SpencerMalone/test-repo/events", "assignees_url": "https://api.github.com/repos/SpencerMalone/test-repo/assignees{/user}", "branches_url": "https://api.github.com/repos/SpencerMalone/test-repo/branches{/branch}", "tags_url": "https://api.github.com/repos/SpencerMalone/test-repo/tags", "blobs_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/refs{/sha}", "trees_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/SpencerMalone/test-repo/statuses/{sha}", "languages_url": "https://api.github.com/repos/SpencerMalone/test-repo/languages", "stargazers_url": "https://api.github.com/repos/SpencerMalone/test-repo/stargazers", "contributors_url": "https://api.github.com/repos/SpencerMalone/test-repo/contributors", "subscribers_url": "https://api.github.com/repos/SpencerMalone/test-repo/subscribers", "subscription_url": "https://api.github.com/repos/SpencerMalone/test-repo/subscription", "commits_url": "https://api.github.com/repos/SpencerMalone/test-repo/commits{/sha}", "git_commits_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/commits{/sha}", "comments_url": "https://api.github.com/repos/SpencerMalone/test-repo/comments{/number}", "issue_comment_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues/comments{/number}", "contents_url": "https://api.github.com/repos/SpencerMalone/test-repo/contents/{+path}", "compare_url": "https://api.github.com/repos/SpencerMalone/test-repo/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/SpencerMalone/test-repo/merges", "archive_url": "https://api.github.com/repos/SpencerMalone/test-repo/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/SpencerMalone/test-repo/downloads", "issues_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues{/number}", "pulls_url": "https://api.github.com/repos/SpencerMalone/test-repo/pulls{/number}", "milestones_url": "https://api.github.com/repos/SpencerMalone/test-repo/milestones{/number}", "notifications_url": "https://api.github.com/repos/SpencerMalone/test-repo/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/SpencerMalone/test-repo/labels{/name}", "releases_url": "https://api.github.com/repos/SpencerMalone/test-repo/releases{/id}", "deployments_url": "https://api.github.com/repos/SpencerMalone/test-repo/deployments", "created_at": "2017-08-02T22:53:24Z", "updated_at": "2017-08-02T22:53:24Z", "pushed_at": "2017-08-02T23:12:10Z", "git_url": "git://github.com/SpencerMalone/test-repo.git", "ssh_url": "git@github.com:SpencerMalone/test-repo.git", "clone_url": "https://github.com/SpencerMalone/test-repo.git", "svn_url": "https://github.com/SpencerMalone/test-repo", "homepage": null, "size": 0, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": true, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "forks_count": 0, "mirror_url": null, "open_issues_count": 6, "forks": 0, "open_issues": 6, "watchers": 0, "default_branch": "master" } }, "base": { "label": "SpencerMalone:master", "ref": "master", "sha": "b145ec757997ed0eb5ce13287f3c05d52310ce04", "user": { "login": "SpencerMalone", "id": 8786752, "avatar_url": "https://avatars1.githubusercontent.com/u/8786752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SpencerMalone", "html_url": "https://github.com/SpencerMalone", "followers_url": "https://api.github.com/users/SpencerMalone/followers", "following_url": "https://api.github.com/users/SpencerMalone/following{/other_user}", "gists_url": "https://api.github.com/users/SpencerMalone/gists{/gist_id}", "starred_url": "https://api.github.com/users/SpencerMalone/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/SpencerMalone/subscriptions", "organizations_url": "https://api.github.com/users/SpencerMalone/orgs", "repos_url": "https://api.github.com/users/SpencerMalone/repos", "events_url": "https://api.github.com/users/SpencerMalone/events{/privacy}", "received_events_url": "https://api.github.com/users/SpencerMalone/received_events", "type": "User", "site_admin": false }, "repo": { "id": 99167653, "name": "test-repo", "full_name": "SpencerMalone/test-repo", "owner": { "login": "SpencerMalone", "id": 8786752, "avatar_url": "https://avatars1.githubusercontent.com/u/8786752?v=4", "gravatar_id": "", "url": "https://api.github.com/users/SpencerMalone", "html_url": "https://github.com/SpencerMalone", "followers_url": "https://api.github.com/users/SpencerMalone/followers", "following_url": "https://api.github.com/users/SpencerMalone/following{/other_user}", "gists_url": "https://api.github.com/users/SpencerMalone/gists{/gist_id}", "starred_url": "https://api.github.com/users/SpencerMalone/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/SpencerMalone/subscriptions", "organizations_url": "https://api.github.com/users/SpencerMalone/orgs", "repos_url": "https://api.github.com/users/SpencerMalone/repos", "events_url": "https://api.github.com/users/SpencerMalone/events{/privacy}", "received_events_url": "https://api.github.com/users/SpencerMalone/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/SpencerMalone/test-repo", "description": null, "fork": false, "url": "https://api.github.com/repos/SpencerMalone/test-repo", "forks_url": "https://api.github.com/repos/SpencerMalone/test-repo/forks", "keys_url": "https://api.github.com/repos/SpencerMalone/test-repo/keys{/key_id}", "collaborators_url": "https://api.github.com/repos/SpencerMalone/test-repo/collaborators{/collaborator}", "teams_url": "https://api.github.com/repos/SpencerMalone/test-repo/teams", "hooks_url": "https://api.github.com/repos/SpencerMalone/test-repo/hooks", "issue_events_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues/events{/number}", "events_url": "https://api.github.com/repos/SpencerMalone/test-repo/events", "assignees_url": "https://api.github.com/repos/SpencerMalone/test-repo/assignees{/user}", "branches_url": "https://api.github.com/repos/SpencerMalone/test-repo/branches{/branch}", "tags_url": "https://api.github.com/repos/SpencerMalone/test-repo/tags", "blobs_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/blobs{/sha}", "git_tags_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/tags{/sha}", "git_refs_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/refs{/sha}", "trees_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/trees{/sha}", "statuses_url": "https://api.github.com/repos/SpencerMalone/test-repo/statuses/{sha}", "languages_url": "https://api.github.com/repos/SpencerMalone/test-repo/languages", "stargazers_url": "https://api.github.com/repos/SpencerMalone/test-repo/stargazers", "contributors_url": "https://api.github.com/repos/SpencerMalone/test-repo/contributors", "subscribers_url": "https://api.github.com/repos/SpencerMalone/test-repo/subscribers", "subscription_url": "https://api.github.com/repos/SpencerMalone/test-repo/subscription", "commits_url": "https://api.github.com/repos/SpencerMalone/test-repo/commits{/sha}", "git_commits_url": "https://api.github.com/repos/SpencerMalone/test-repo/git/commits{/sha}", "comments_url": "https://api.github.com/repos/SpencerMalone/test-repo/comments{/number}", "issue_comment_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues/comments{/number}", "contents_url": "https://api.github.com/repos/SpencerMalone/test-repo/contents/{+path}", "compare_url": "https://api.github.com/repos/SpencerMalone/test-repo/compare/{base}...{head}", "merges_url": "https://api.github.com/repos/SpencerMalone/test-repo/merges", "archive_url": "https://api.github.com/repos/SpencerMalone/test-repo/{archive_format}{/ref}", "downloads_url": "https://api.github.com/repos/SpencerMalone/test-repo/downloads", "issues_url": "https://api.github.com/repos/SpencerMalone/test-repo/issues{/number}", "pulls_url": "https://api.github.com/repos/SpencerMalone/test-repo/pulls{/number}", "milestones_url": "https://api.github.com/repos/SpencerMalone/test-repo/milestones{/number}", "notifications_url": "https://api.github.com/repos/SpencerMalone/test-repo/notifications{?since,all,participating}", "labels_url": "https://api.github.com/repos/SpencerMalone/test-repo/labels{/name}", "releases_url": "https://api.github.com/repos/SpencerMalone/test-repo/releases{/id}", "deployments_url": "https://api.github.com/repos/SpencerMalone/test-repo/deployments", "created_at": "2017-08-02T22:53:24Z", "updated_at": "2017-08-02T22:53:24Z", "pushed_at": "2017-08-02T23:12:10Z", "git_url": "git://github.com/SpencerMalone/test-repo.git", "ssh_url": "git@github.com:SpencerMalone/test-repo.git", "clone_url": "https://github.com/SpencerMalone/test-repo.git", "svn_url": "https://github.com/SpencerMalone/test-repo", "homepage": null, "size": 0, "stargazers_count": 0, "watchers_count": 0, "language": null, "has_issues": true, "has_projects": true, "has_downloads": true, "has_wiki": true, "has_pages": false, "forks_count": 0, "mirror_url": null, "open_issues_count": 6, "forks": 0, "open_issues": 6, "watchers": 0, "default_branch": "master" } }, "_links": { "self": { "href": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/7" }, "html": { "href": "https://github.com/SpencerMalone/test-repo/pull/7" }, "issue": { "href": "https://api.github.com/repos/SpencerMalone/test-repo/issues/7" }, "comments": { "href": "https://api.github.com/repos/SpencerMalone/test-repo/issues/7/comments" }, "review_comments": { "href": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/7/comments" }, "review_comment": { "href": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/comments{/number}" }, "commits": { "href": "https://api.github.com/repos/SpencerMalone/test-repo/pulls/7/commits" }, "statuses": { "href": "https://api.github.com/repos/SpencerMalone/test-repo/statuses/51bb42169152fa75cb3829776cdee853b95e472e" } }, "merged": false, "mergeable": null, "rebaseable": null, "mergeable_state": "unknown", "merged_by": null, "comments": 0, "review_comments": 0, "maintainer_can_modify": false, "commits": 9, "additions": 0, "deletions": 0, "changed_files": 9 }

Logging from app.rb after receiving webhook for PR #7:

- -> /ghevent
{"message":"No commit found for the ref refs/pull/7/merge","documentation_url":"https://developer.github.com/v3/repos/contents/"}
192.30.252.42 - - [02/Aug/2017:19:12:11 -0400] "POST /ghevent HTTP/1.1" 204 - 0.1417
localhost - - [02/Aug/2017:19:12:11 EDT] "POST /ghevent HTTP/1.1" 204 0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages