{"action":"created","comment":{"url":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments/70757616","id":70757616,"diff_hunk":"@@ -0,0 +1,165 @@\n+/*\n+Copyright 2016 The Kubernetes Authors All rights reserved.\n+\n+Licensed under the Apache License, Version 2.0 (the \"License\");\n+you may not use this file except in compliance with the License.\n+You may obtain a copy of the License at\n+\n+    http://www.apache.org/licenses/LICENSE-2.0\n+\n+Unless required by applicable law or agreed to in writing, software\n+distributed under the License is distributed on an \"AS IS\" BASIS,\n+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+See the License for the specific language governing permissions and\n+limitations under the License.\n+*/\n+\n+package gcs\n+\n+import (\n+\t\"bufio\"\n+\t\"bytes\"\n+\t\"encoding/json\"\n+\t\"fmt\"\n+\t\"io\"\n+\t\"os\"\n+\t\"strconv\"\n+\t\"strings\"\n+\t\"time\"\n+\n+\t\"golang.org/x/net/context\"","path":"ciongke/gcs/gcs.go","position":30,"original_position":30,"commit_id":"0921b1f7e23f3013454b5703b470a4e76d4ce829","original_commit_id":"0921b1f7e23f3013454b5703b470a4e76d4ce829","user":{"login":"fejta","id":940341,"avatar_url":"https://avatars.githubusercontent.com/u/940341?v=3","gravatar_id":"","url":"https://api.github.com/users/fejta","html_url":"https://github.com/fejta","followers_url":"https://api.github.com/users/fejta/followers","following_url":"https://api.github.com/users/fejta/following{/other_user}","gists_url":"https://api.github.com/users/fejta/gists{/gist_id}","starred_url":"https://api.github.com/users/fejta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fejta/subscriptions","organizations_url":"https://api.github.com/users/fejta/orgs","repos_url":"https://api.github.com/users/fejta/repos","events_url":"https://api.github.com/users/fejta/events{/privacy}","received_events_url":"https://api.github.com/users/fejta/received_events","type":"User","site_admin":false},"body":"Where is the vendor location for these imports?","created_at":"2016-07-14T07:06:59Z","updated_at":"2016-07-14T07:06:59Z","html_url":"https://github.com/kubernetes/test-infra/pull/234#discussion_r70757616","pull_request_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/234","_links":{"self":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments/70757616"},"html":{"href":"https://github.com/kubernetes/test-infra/pull/234#discussion_r70757616"},"pull_request":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/234"}}},"pull_request":{"url":"https://api.github.com/repos/kubernetes/test-infra/pulls/234","id":75548125,"html_url":"https://github.com/kubernetes/test-infra/pull/234","diff_url":"https://github.com/kubernetes/test-infra/pull/234.diff","patch_url":"https://github.com/kubernetes/test-infra/pull/234.patch","issue_url":"https://api.github.com/repos/kubernetes/test-infra/issues/234","number":234,"state":"open","locked":false,"title":"CI on GKE.","user":{"login":"spxtr","id":7368979,"avatar_url":"https://avatars.githubusercontent.com/u/7368979?v=3","gravatar_id":"","url":"https://api.github.com/users/spxtr","html_url":"https://github.com/spxtr","followers_url":"https://api.github.com/users/spxtr/followers","following_url":"https://api.github.com/users/spxtr/following{/other_user}","gists_url":"https://api.github.com/users/spxtr/gists{/gist_id}","starred_url":"https://api.github.com/users/spxtr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spxtr/subscriptions","organizations_url":"https://api.github.com/users/spxtr/orgs","repos_url":"https://api.github.com/users/spxtr/repos","events_url":"https://api.github.com/users/spxtr/events{/privacy}","received_events_url":"https://api.github.com/users/spxtr/received_events","type":"User","site_admin":false},"body":"Here's what happens:\r\n\r\n1. Set the variables in the makefile and do `make create-cluster` to turn up a new cluster. It will tell you the webhook address and you manually add it to the repo. That can be automated later. Note that this actually will use your token to update statuses.\r\n1. A PR is made or updated, and a webhook goes to the `hook` deployment (binary under `cmd/hook`). That checks that the author is in the kubernetes org or kubernetes-maintainers team, and then turns up a job to test the PR.\r\n1. The job (binary under `cmd/test-pr`) merges the PR and starts new jobs based on `.test.yml` in the repository base. As they start and finish it updates the GitHub status and also `started.json`/`finished.json`.\r\n\r\nThere are still plenty of things to improve, but this is probably a good place to start.\r\n\r\n1. ~~Eventually we will want a dry mode that doesn't post any statuses to GitHub.~~ Done\r\n1. Vendor?\r\n1. `test-pr` needs tests.\r\n1.  A comment when the user isn't trusted.\r\n1. A status when it can't merge and also maybe when all tests pass.\r\n1. When infra fails the only way to find out what happened right now is to look at the kubernetes dashboard.","created_at":"2016-06-28T20:51:06Z","updated_at":"2016-07-14T07:06:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2907276b71d57a5d366dcbac0ea2ae5d9394fd6e","assignee":{"login":"krousey","id":157083,"avatar_url":"https://avatars.githubusercontent.com/u/157083?v=3","gravatar_id":"","url":"https://api.github.com/users/krousey","html_url":"https://github.com/krousey","followers_url":"https://api.github.com/users/krousey/followers","following_url":"https://api.github.com/users/krousey/following{/other_user}","gists_url":"https://api.github.com/users/krousey/gists{/gist_id}","starred_url":"https://api.github.com/users/krousey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krousey/subscriptions","organizations_url":"https://api.github.com/users/krousey/orgs","repos_url":"https://api.github.com/users/krousey/repos","events_url":"https://api.github.com/users/krousey/events{/privacy}","received_events_url":"https://api.github.com/users/krousey/received_events","type":"User","site_admin":false},"assignees":[{"login":"krousey","id":157083,"avatar_url":"https://avatars.githubusercontent.com/u/157083?v=3","gravatar_id":"","url":"https://api.github.com/users/krousey","html_url":"https://github.com/krousey","followers_url":"https://api.github.com/users/krousey/followers","following_url":"https://api.github.com/users/krousey/following{/other_user}","gists_url":"https://api.github.com/users/krousey/gists{/gist_id}","starred_url":"https://api.github.com/users/krousey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krousey/subscriptions","organizations_url":"https://api.github.com/users/krousey/orgs","repos_url":"https://api.github.com/users/krousey/repos","events_url":"https://api.github.com/users/krousey/events{/privacy}","received_events_url":"https://api.github.com/users/krousey/received_events","type":"User","site_admin":false},{"login":"rmmh","id":211868,"avatar_url":"https://avatars.githubusercontent.com/u/211868?v=3","gravatar_id":"","url":"https://api.github.com/users/rmmh","html_url":"https://github.com/rmmh","followers_url":"https://api.github.com/users/rmmh/followers","following_url":"https://api.github.com/users/rmmh/following{/other_user}","gists_url":"https://api.github.com/users/rmmh/gists{/gist_id}","starred_url":"https://api.github.com/users/rmmh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmmh/subscriptions","organizations_url":"https://api.github.com/users/rmmh/orgs","repos_url":"https://api.github.com/users/rmmh/repos","events_url":"https://api.github.com/users/rmmh/events{/privacy}","received_events_url":"https://api.github.com/users/rmmh/received_events","type":"User","site_admin":false},{"login":"fejta","id":940341,"avatar_url":"https://avatars.githubusercontent.com/u/940341?v=3","gravatar_id":"","url":"https://api.github.com/users/fejta","html_url":"https://github.com/fejta","followers_url":"https://api.github.com/users/fejta/followers","following_url":"https://api.github.com/users/fejta/following{/other_user}","gists_url":"https://api.github.com/users/fejta/gists{/gist_id}","starred_url":"https://api.github.com/users/fejta/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fejta/subscriptions","organizations_url":"https://api.github.com/users/fejta/orgs","repos_url":"https://api.github.com/users/fejta/repos","events_url":"https://api.github.com/users/fejta/events{/privacy}","received_events_url":"https://api.github.com/users/fejta/received_events","type":"User","site_admin":false},{"login":"apelisse","id":1929644,"avatar_url":"https://avatars.githubusercontent.com/u/1929644?v=3","gravatar_id":"","url":"https://api.github.com/users/apelisse","html_url":"https://github.com/apelisse","followers_url":"https://api.github.com/users/apelisse/followers","following_url":"https://api.github.com/users/apelisse/following{/other_user}","gists_url":"https://api.github.com/users/apelisse/gists{/gist_id}","starred_url":"https://api.github.com/users/apelisse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apelisse/subscriptions","organizations_url":"https://api.github.com/users/apelisse/orgs","repos_url":"https://api.github.com/users/apelisse/repos","events_url":"https://api.github.com/users/apelisse/events{/privacy}","received_events_url":"https://api.github.com/users/apelisse/received_events","type":"User","site_admin":false},{"login":"ixdy","id":8061296,"avatar_url":"https://avatars.githubusercontent.com/u/8061296?v=3","gravatar_id":"","url":"https://api.github.com/users/ixdy","html_url":"https://github.com/ixdy","followers_url":"https://api.github.com/users/ixdy/followers","following_url":"https://api.github.com/users/ixdy/following{/other_user}","gists_url":"https://api.github.com/users/ixdy/gists{/gist_id}","starred_url":"https://api.github.com/users/ixdy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ixdy/subscriptions","organizations_url":"https://api.github.com/users/ixdy/orgs","repos_url":"https://api.github.com/users/ixdy/repos","events_url":"https://api.github.com/users/ixdy/events{/privacy}","received_events_url":"https://api.github.com/users/ixdy/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/234/commits","review_comments_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/234/comments","review_comment_url":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments{/number}","comments_url":"https://api.github.com/repos/kubernetes/test-infra/issues/234/comments","statuses_url":"https://api.github.com/repos/kubernetes/test-infra/statuses/0921b1f7e23f3013454b5703b470a4e76d4ce829","head":{"label":"spxtr:gke","ref":"gke","sha":"0921b1f7e23f3013454b5703b470a4e76d4ce829","user":{"login":"spxtr","id":7368979,"avatar_url":"https://avatars.githubusercontent.com/u/7368979?v=3","gravatar_id":"","url":"https://api.github.com/users/spxtr","html_url":"https://github.com/spxtr","followers_url":"https://api.github.com/users/spxtr/followers","following_url":"https://api.github.com/users/spxtr/following{/other_user}","gists_url":"https://api.github.com/users/spxtr/gists{/gist_id}","starred_url":"https://api.github.com/users/spxtr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spxtr/subscriptions","organizations_url":"https://api.github.com/users/spxtr/orgs","repos_url":"https://api.github.com/users/spxtr/repos","events_url":"https://api.github.com/users/spxtr/events{/privacy}","received_events_url":"https://api.github.com/users/spxtr/received_events","type":"User","site_admin":false},"repo":{"id":57335659,"name":"test-infra","full_name":"spxtr/test-infra","owner":{"login":"spxtr","id":7368979,"avatar_url":"https://avatars.githubusercontent.com/u/7368979?v=3","gravatar_id":"","url":"https://api.github.com/users/spxtr","html_url":"https://github.com/spxtr","followers_url":"https://api.github.com/users/spxtr/followers","following_url":"https://api.github.com/users/spxtr/following{/other_user}","gists_url":"https://api.github.com/users/spxtr/gists{/gist_id}","starred_url":"https://api.github.com/users/spxtr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spxtr/subscriptions","organizations_url":"https://api.github.com/users/spxtr/orgs","repos_url":"https://api.github.com/users/spxtr/repos","events_url":"https://api.github.com/users/spxtr/events{/privacy}","received_events_url":"https://api.github.com/users/spxtr/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/spxtr/test-infra","description":"Test infrastructure for the Kubernetes project.","fork":true,"url":"https://api.github.com/repos/spxtr/test-infra","forks_url":"https://api.github.com/repos/spxtr/test-infra/forks","keys_url":"https://api.github.com/repos/spxtr/test-infra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spxtr/test-infra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spxtr/test-infra/teams","hooks_url":"https://api.github.com/repos/spxtr/test-infra/hooks","issue_events_url":"https://api.github.com/repos/spxtr/test-infra/issues/events{/number}","events_url":"https://api.github.com/repos/spxtr/test-infra/events","assignees_url":"https://api.github.com/repos/spxtr/test-infra/assignees{/user}","branches_url":"https://api.github.com/repos/spxtr/test-infra/branches{/branch}","tags_url":"https://api.github.com/repos/spxtr/test-infra/tags","blobs_url":"https://api.github.com/repos/spxtr/test-infra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spxtr/test-infra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spxtr/test-infra/git/refs{/sha}","trees_url":"https://api.github.com/repos/spxtr/test-infra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spxtr/test-infra/statuses/{sha}","languages_url":"https://api.github.com/repos/spxtr/test-infra/languages","stargazers_url":"https://api.github.com/repos/spxtr/test-infra/stargazers","contributors_url":"https://api.github.com/repos/spxtr/test-infra/contributors","subscribers_url":"https://api.github.com/repos/spxtr/test-infra/subscribers","subscription_url":"https://api.github.com/repos/spxtr/test-infra/subscription","commits_url":"https://api.github.com/repos/spxtr/test-infra/commits{/sha}","git_commits_url":"https://api.github.com/repos/spxtr/test-infra/git/commits{/sha}","comments_url":"https://api.github.com/repos/spxtr/test-infra/comments{/number}","issue_comment_url":"https://api.github.com/repos/spxtr/test-infra/issues/comments{/number}","contents_url":"https://api.github.com/repos/spxtr/test-infra/contents/{+path}","compare_url":"https://api.github.com/repos/spxtr/test-infra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spxtr/test-infra/merges","archive_url":"https://api.github.com/repos/spxtr/test-infra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spxtr/test-infra/downloads","issues_url":"https://api.github.com/repos/spxtr/test-infra/issues{/number}","pulls_url":"https://api.github.com/repos/spxtr/test-infra/pulls{/number}","milestones_url":"https://api.github.com/repos/spxtr/test-infra/milestones{/number}","notifications_url":"https://api.github.com/repos/spxtr/test-infra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spxtr/test-infra/labels{/name}","releases_url":"https://api.github.com/repos/spxtr/test-infra/releases{/id}","deployments_url":"https://api.github.com/repos/spxtr/test-infra/deployments","created_at":"2016-04-28T21:42:21Z","updated_at":"2016-04-29T20:52:21Z","pushed_at":"2016-07-13T23:25:07Z","git_url":"git://github.com/spxtr/test-infra.git","ssh_url":"git@github.com:spxtr/test-infra.git","clone_url":"https://github.com/spxtr/test-infra.git","svn_url":"https://github.com/spxtr/test-infra","homepage":null,"size":912,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"kubernetes:master","ref":"master","sha":"df04478f0b04b8a986cee489199bbbae187517a5","user":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"repo":{"id":57333709,"name":"test-infra","full_name":"kubernetes/test-infra","owner":{"login":"kubernetes","id":13629408,"avatar_url":"https://avatars.githubusercontent.com/u/13629408?v=3","gravatar_id":"","url":"https://api.github.com/users/kubernetes","html_url":"https://github.com/kubernetes","followers_url":"https://api.github.com/users/kubernetes/followers","following_url":"https://api.github.com/users/kubernetes/following{/other_user}","gists_url":"https://api.github.com/users/kubernetes/gists{/gist_id}","starred_url":"https://api.github.com/users/kubernetes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kubernetes/subscriptions","organizations_url":"https://api.github.com/users/kubernetes/orgs","repos_url":"https://api.github.com/users/kubernetes/repos","events_url":"https://api.github.com/users/kubernetes/events{/privacy}","received_events_url":"https://api.github.com/users/kubernetes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/kubernetes/test-infra","description":"Test infrastructure for the Kubernetes project.","fork":false,"url":"https://api.github.com/repos/kubernetes/test-infra","forks_url":"https://api.github.com/repos/kubernetes/test-infra/forks","keys_url":"https://api.github.com/repos/kubernetes/test-infra/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kubernetes/test-infra/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kubernetes/test-infra/teams","hooks_url":"https://api.github.com/repos/kubernetes/test-infra/hooks","issue_events_url":"https://api.github.com/repos/kubernetes/test-infra/issues/events{/number}","events_url":"https://api.github.com/repos/kubernetes/test-infra/events","assignees_url":"https://api.github.com/repos/kubernetes/test-infra/assignees{/user}","branches_url":"https://api.github.com/repos/kubernetes/test-infra/branches{/branch}","tags_url":"https://api.github.com/repos/kubernetes/test-infra/tags","blobs_url":"https://api.github.com/repos/kubernetes/test-infra/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kubernetes/test-infra/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kubernetes/test-infra/git/refs{/sha}","trees_url":"https://api.github.com/repos/kubernetes/test-infra/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kubernetes/test-infra/statuses/{sha}","languages_url":"https://api.github.com/repos/kubernetes/test-infra/languages","stargazers_url":"https://api.github.com/repos/kubernetes/test-infra/stargazers","contributors_url":"https://api.github.com/repos/kubernetes/test-infra/contributors","subscribers_url":"https://api.github.com/repos/kubernetes/test-infra/subscribers","subscription_url":"https://api.github.com/repos/kubernetes/test-infra/subscription","commits_url":"https://api.github.com/repos/kubernetes/test-infra/commits{/sha}","git_commits_url":"https://api.github.com/repos/kubernetes/test-infra/git/commits{/sha}","comments_url":"https://api.github.com/repos/kubernetes/test-infra/comments{/number}","issue_comment_url":"https://api.github.com/repos/kubernetes/test-infra/issues/comments{/number}","contents_url":"https://api.github.com/repos/kubernetes/test-infra/contents/{+path}","compare_url":"https://api.github.com/repos/kubernetes/test-infra/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kubernetes/test-infra/merges","archive_url":"https://api.github.com/repos/kubernetes/test-infra/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kubernetes/test-infra/downloads","issues_url":"https://api.github.com/repos/kubernetes/test-infra/issues{/number}","pulls_url":"https://api.github.com/repos/kubernetes/test-infra/pulls{/number}","milestones_url":"https://api.github.com/repos/kubernetes/test-infra/milestones{/number}","notifications_url":"https://api.github.com/repos/kubernetes/test-infra/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kubernetes/test-infra/labels{/name}","releases_url":"https://api.github.com/repos/kubernetes/test-infra/releases{/id}","deployments_url":"https://api.github.com/repos/kubernetes/test-infra/deployments","created_at":"2016-04-28T21:05:35Z","updated_at":"2016-06-24T15:45:12Z","pushed_at":"2016-07-14T05:11:21Z","git_url":"git://github.com/kubernetes/test-infra.git","ssh_url":"git@github.com:kubernetes/test-infra.git","clone_url":"https://github.com/kubernetes/test-infra.git","svn_url":"https://github.com/kubernetes/test-infra","homepage":null,"size":1118,"stargazers_count":8,"watchers_count":8,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":41,"mirror_url":null,"open_issues_count":33,"forks":41,"open_issues":33,"watchers":8,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/234"},"html":{"href":"https://github.com/kubernetes/test-infra/pull/234"},"issue":{"href":"https://api.github.com/repos/kubernetes/test-infra/issues/234"},"comments":{"href":"https://api.github.com/repos/kubernetes/test-infra/issues/234/comments"},"review_comments":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/234/comments"},"review_comment":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/kubernetes/test-infra/pulls/234/commits"},"statuses":{"href":"https://api.github.com/repos/kubernetes/test-infra/statuses/0921b1f7e23f3013454b5703b470a4e76d4ce829"}}}}
{"actor":{"display_login":"fejta"}}