{"action":"created","comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/33973076","id":33973076,"diff_hunk":"@@ -1,7 +1,156 @@\n # Releasing Kubernetes\n \n-This document explains how to create a Kubernetes release (as in version) and\n-how the version information gets embedded into the built binaries.\n+This document explains how to cut a release, and the theory behind it. If you\n+just want to cut a release and move on with your life, you can stop reading\n+after the first section.\n+\n+## How to cut a Kubernetes release\n+\n+Regardless of whether you are cutting a major or minor version, cutting a\n+release breaks down into four pieces:\n+\n+1. Selecting release components.\n+1. Tagging and merging the release in Git.\n+1. Building and pushing the binaries.\n+1. Writing release notes.\n+\n+You should progress in this strict order without interleaving pieces of each\n+major step unless you are very familiar with the release process.\n+\n+### Building a New Major/Minor Version (`vX.Y.0`)\n+\n+#### Selecting Release Components\n+\n+When cutting a major/minor release, your first job is to find the branch\n+point. We cut `vX.Y.0` releases directly from `master`, which is also the the\n+branch that we have most continuous validation on. Go first to [the main GCE\n+Jenkins end-to-end job](go/k8s-test/job/kubernetes-e2e-gce) and next to [the\n+Critical Builds page](go/k8s-test/view/Critical%20Builds) and hopefully find a\n+recent Git hash that looks stable across at least `kubernetes-e2e-gce` and\n+`kubernetes-e2e-gke-ci`. First glance through builds and look for nice solid\n+rows of green builds, and then check temporally with the other Critical Builds\n+to make sure they're solid around then as well. Once you find some greens, you\n+can find the Git hash for a build by looking at the \"Console Log\", then look for\n+`githash=`. You should see a line line:\n+\n+```\n++ githash=v0.20.2-322-g974377b\n+```\n+\n+Because Jenkins builds frequently, if you're looking between jobs\n+(e.g. `kubernetes-e2e-gke-ci` and `kubernetes-e2e-gce`), there may be no single\n+`githash` that's been run on both jobs. In that case, take the a green\n+`kubernetes-e2e-gce` build (but please check that it corresponds to a temporally\n+similar build that's green on `kubernetes-e2e-gke-ci`). Lastly, if you're having\n+trouble understanding why the GKE continuous integration clusters are failing\n+and you're trying to cut a release, don't hesistate to contact the GKE\n+oncall.\n+\n+Before proceeding to the next step:\n+```\n+export BRANCHPOINT=v0.20.2-322-g974377b\n+```\n+Where `v0.20.2-322-g974377b` is the git hash you decided on. This will become\n+our (retroactive) branch point.\n+\n+#### Branching, Tagging and Merging\n+Do the following:\n+\n+1. `export VER=x.y` (e.g. `0.20` for v0.20)","path":"docs/devel/releasing.md","position":60,"original_position":61,"commit_id":"95c931b8132db9c87e557060c50fa40381e4ab28","original_commit_id":"165096bfe7842c208481ef05e4de5b1c723909d4","user":{"login":"eparis","id":8093535,"avatar_url":"https://avatars.githubusercontent.com/u/8093535?v=3","gravatar_id":"","url":"https://api.github.com/users/eparis","html_url":"https://github.com/eparis","followers_url":"https://api.github.com/users/eparis/followers","following_url":"https://api.github.com/users/eparis/following{/other_user}","gists_url":"https://api.github.com/users/eparis/gists{/gist_id}","starred_url":"https://api.github.com/users/eparis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eparis/subscriptions","organizations_url":"https://api.github.com/users/eparis/orgs","repos_url":"https://api.github.com/users/eparis/repos","events_url":"https://api.github.com/users/eparis/events{/privacy}","received_events_url":"https://api.github.com/users/eparis/received_events","type":"User","site_admin":false},"body":"I know how to do tarball from git shasum....\r\n\r\n`https://github.com/GoogleCloudPlatform/kubernetes/archive/5b4dc4edaa14e1ab4e3baa19df0388fa54dab344/kubernetes-5b4dc4e.tar.gz`","created_at":"2015-07-06T19:34:14Z","updated_at":"2015-07-06T19:34:14Z","html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10709#discussion_r33973076","pull_request_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709","_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments/33973076"},"html":{"href":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10709#discussion_r33973076"},"pull_request":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709"}}},"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709","id":39186136,"html_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10709","diff_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10709.diff","patch_url":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10709.patch","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10709","number":10709,"state":"open","locked":false,"title":"Update releasing.md with Kubernetes release process","user":{"login":"zmerlynn","id":4942464,"avatar_url":"https://avatars.githubusercontent.com/u/4942464?v=3","gravatar_id":"","url":"https://api.github.com/users/zmerlynn","html_url":"https://github.com/zmerlynn","followers_url":"https://api.github.com/users/zmerlynn/followers","following_url":"https://api.github.com/users/zmerlynn/following{/other_user}","gists_url":"https://api.github.com/users/zmerlynn/gists{/gist_id}","starred_url":"https://api.github.com/users/zmerlynn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zmerlynn/subscriptions","organizations_url":"https://api.github.com/users/zmerlynn/orgs","repos_url":"https://api.github.com/users/zmerlynn/repos","events_url":"https://api.github.com/users/zmerlynn/events{/privacy}","received_events_url":"https://api.github.com/users/zmerlynn/received_events","type":"User","site_admin":false},"body":"This updates releasing.md with actual instructions on how to cut a\r\nrelease, leaving the theory section of that document alone. Along the\r\nway, I streamlined tiny bits of the existing process as I was\r\ndescribing them.\r\n\r\nThe instructions are possibly pedantic, but should be executable by\r\nanyone at this point, versus taking someone versant in the dark arts.\r\n\r\nI also added a tiny instruction to `mark-new-version.sh` to cry for\r\nhelp if you see *no* diff to master in the backmerge step, because\r\nit's an issue we've seen a couple of times now.\r\n\r\nRelies on #10687. Fixes #1883.","created_at":"2015-07-03T16:09:30Z","updated_at":"2015-07-06T19:34:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ff888c0dbf45eabc1e53d0ba7c0b68e7341f136e","assignee":{"login":"alex-mohr","id":8729097,"avatar_url":"https://avatars.githubusercontent.com/u/8729097?v=3","gravatar_id":"","url":"https://api.github.com/users/alex-mohr","html_url":"https://github.com/alex-mohr","followers_url":"https://api.github.com/users/alex-mohr/followers","following_url":"https://api.github.com/users/alex-mohr/following{/other_user}","gists_url":"https://api.github.com/users/alex-mohr/gists{/gist_id}","starred_url":"https://api.github.com/users/alex-mohr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alex-mohr/subscriptions","organizations_url":"https://api.github.com/users/alex-mohr/orgs","repos_url":"https://api.github.com/users/alex-mohr/repos","events_url":"https://api.github.com/users/alex-mohr/events{/privacy}","received_events_url":"https://api.github.com/users/alex-mohr/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709/commits","review_comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709/comments","review_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10709/comments","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/95c931b8132db9c87e557060c50fa40381e4ab28","head":{"label":"zmerlynn:i1883","ref":"i1883","sha":"95c931b8132db9c87e557060c50fa40381e4ab28","user":{"login":"zmerlynn","id":4942464,"avatar_url":"https://avatars.githubusercontent.com/u/4942464?v=3","gravatar_id":"","url":"https://api.github.com/users/zmerlynn","html_url":"https://github.com/zmerlynn","followers_url":"https://api.github.com/users/zmerlynn/followers","following_url":"https://api.github.com/users/zmerlynn/following{/other_user}","gists_url":"https://api.github.com/users/zmerlynn/gists{/gist_id}","starred_url":"https://api.github.com/users/zmerlynn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zmerlynn/subscriptions","organizations_url":"https://api.github.com/users/zmerlynn/orgs","repos_url":"https://api.github.com/users/zmerlynn/repos","events_url":"https://api.github.com/users/zmerlynn/events{/privacy}","received_events_url":"https://api.github.com/users/zmerlynn/received_events","type":"User","site_admin":false},"repo":{"id":27641977,"name":"kubernetes","full_name":"zmerlynn/kubernetes","owner":{"login":"zmerlynn","id":4942464,"avatar_url":"https://avatars.githubusercontent.com/u/4942464?v=3","gravatar_id":"","url":"https://api.github.com/users/zmerlynn","html_url":"https://github.com/zmerlynn","followers_url":"https://api.github.com/users/zmerlynn/followers","following_url":"https://api.github.com/users/zmerlynn/following{/other_user}","gists_url":"https://api.github.com/users/zmerlynn/gists{/gist_id}","starred_url":"https://api.github.com/users/zmerlynn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zmerlynn/subscriptions","organizations_url":"https://api.github.com/users/zmerlynn/orgs","repos_url":"https://api.github.com/users/zmerlynn/repos","events_url":"https://api.github.com/users/zmerlynn/events{/privacy}","received_events_url":"https://api.github.com/users/zmerlynn/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zmerlynn/kubernetes","description":"Container Cluster Manager","fork":true,"url":"https://api.github.com/repos/zmerlynn/kubernetes","forks_url":"https://api.github.com/repos/zmerlynn/kubernetes/forks","keys_url":"https://api.github.com/repos/zmerlynn/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zmerlynn/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zmerlynn/kubernetes/teams","hooks_url":"https://api.github.com/repos/zmerlynn/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/zmerlynn/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/zmerlynn/kubernetes/events","assignees_url":"https://api.github.com/repos/zmerlynn/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/zmerlynn/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/zmerlynn/kubernetes/tags","blobs_url":"https://api.github.com/repos/zmerlynn/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zmerlynn/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zmerlynn/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/zmerlynn/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zmerlynn/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/zmerlynn/kubernetes/languages","stargazers_url":"https://api.github.com/repos/zmerlynn/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/zmerlynn/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/zmerlynn/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/zmerlynn/kubernetes/subscription","commits_url":"https://api.github.com/repos/zmerlynn/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/zmerlynn/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/zmerlynn/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/zmerlynn/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/zmerlynn/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/zmerlynn/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zmerlynn/kubernetes/merges","archive_url":"https://api.github.com/repos/zmerlynn/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zmerlynn/kubernetes/downloads","issues_url":"https://api.github.com/repos/zmerlynn/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/zmerlynn/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/zmerlynn/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/zmerlynn/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zmerlynn/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/zmerlynn/kubernetes/releases{/id}","created_at":"2014-12-06T17:10:41Z","updated_at":"2014-12-06T19:12:25Z","pushed_at":"2015-07-06T17:59:06Z","git_url":"git://github.com/zmerlynn/kubernetes.git","ssh_url":"git@github.com:zmerlynn/kubernetes.git","clone_url":"https://github.com/zmerlynn/kubernetes.git","svn_url":"https://github.com/zmerlynn/kubernetes","homepage":null,"size":84042,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"GoogleCloudPlatform:master","ref":"master","sha":"639fb9d1bf9d3c053012089819ee0198d5614757","user":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":20580498,"name":"kubernetes","full_name":"GoogleCloudPlatform/kubernetes","owner":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GoogleCloudPlatform/kubernetes","description":"Container Cluster Manager from Google","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/releases{/id}","created_at":"2014-06-06T22:56:04Z","updated_at":"2015-07-06T17:09:42Z","pushed_at":"2015-07-06T19:33:34Z","git_url":"git://github.com/GoogleCloudPlatform/kubernetes.git","ssh_url":"git@github.com:GoogleCloudPlatform/kubernetes.git","clone_url":"https://github.com/GoogleCloudPlatform/kubernetes.git","svn_url":"https://github.com/GoogleCloudPlatform/kubernetes","homepage":"http://kubernetes.io","size":303683,"stargazers_count":8744,"watchers_count":8744,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1949,"mirror_url":null,"open_issues_count":1559,"forks":1949,"open_issues":1559,"watchers":8744,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709"},"html":{"href":"https://github.com/GoogleCloudPlatform/kubernetes/pull/10709"},"issue":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10709"},"comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/issues/10709/comments"},"review_comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709/comments"},"review_comment":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/pulls/10709/commits"},"statuses":{"href":"https://api.github.com/repos/GoogleCloudPlatform/kubernetes/statuses/95c931b8132db9c87e557060c50fa40381e4ab28"}}}}