{"action":"created","comment":{"url":"https://api.github.com/repos/mockito/mockito/pulls/comments/87540988","pull_request_review_id":8150046,"id":87540988,"diff_hunk":"@@ -43,14 +48,9 @@ notes {\n     ]\n }\n \n-def dryRun = project.hasProperty('dryRun')\n-if (dryRun) {\n-    //TODO SF lets not use excludedTaskNames to model this\n-    logger.lifecycle \"Automatically scheduling 'rollbackRelease' task\"\n-    //mustRun instead of dependsOn to avoid running 'release' task every time use 'dryRun' property\n-    rollbackRelease.mustRunAfter release\n-    gradle.startParameter.taskNames += \"rollbackRelease\"\n-}\n+//dryRun project property is interpreted by the release-workflow plugin to enable rollbacks\n+//releaseTest does not publish or push but it leaves the commits so that they can be inspected manually\n+def releaseTest = project.hasProperty('releaseTest') || project.hasProperty('dryRun')","path":"gradle/release.gradle","position":37,"original_position":37,"commit_id":"2628fd9373dc49649c0a32fe957860e20cc0b71c","original_commit_id":"2628fd9373dc49649c0a32fe957860e20cc0b71c","user":{"login":"szczepiq","id":24743,"avatar_url":"https://avatars.githubusercontent.com/u/24743?v=3","gravatar_id":"","url":"https://api.github.com/users/szczepiq","html_url":"https://github.com/szczepiq","followers_url":"https://api.github.com/users/szczepiq/followers","following_url":"https://api.github.com/users/szczepiq/following{/other_user}","gists_url":"https://api.github.com/users/szczepiq/gists{/gist_id}","starred_url":"https://api.github.com/users/szczepiq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/szczepiq/subscriptions","organizations_url":"https://api.github.com/users/szczepiq/orgs","repos_url":"https://api.github.com/users/szczepiq/repos","events_url":"https://api.github.com/users/szczepiq/events{/privacy}","received_events_url":"https://api.github.com/users/szczepiq/received_events","type":"User","site_admin":false},"body":"Yes, I'm with you that the name is not great. I was trying to keep the balance between brevity and clarity. I don't see big value changing to releaseWorkflowTest.","created_at":"2016-11-11T05:57:05Z","updated_at":"2016-11-11T05:57:05Z","html_url":"https://github.com/mockito/mockito/pull/724#discussion_r87540988","pull_request_url":"https://api.github.com/repos/mockito/mockito/pulls/724","_links":{"self":{"href":"https://api.github.com/repos/mockito/mockito/pulls/comments/87540988"},"html":{"href":"https://github.com/mockito/mockito/pull/724#discussion_r87540988"},"pull_request":{"href":"https://api.github.com/repos/mockito/mockito/pulls/724"}}},"pull_request":{"url":"https://api.github.com/repos/mockito/mockito/pulls/724","id":91524733,"html_url":"https://github.com/mockito/mockito/pull/724","diff_url":"https://github.com/mockito/mockito/pull/724.diff","patch_url":"https://github.com/mockito/mockito/pull/724.patch","issue_url":"https://api.github.com/repos/mockito/mockito/issues/724","number":724,"state":"open","locked":false,"title":"Added new release workflow for release automation","user":{"login":"szczepiq","id":24743,"avatar_url":"https://avatars.githubusercontent.com/u/24743?v=3","gravatar_id":"","url":"https://api.github.com/users/szczepiq","html_url":"https://github.com/szczepiq","followers_url":"https://api.github.com/users/szczepiq/followers","following_url":"https://api.github.com/users/szczepiq/following{/other_user}","gists_url":"https://api.github.com/users/szczepiq/gists{/gist_id}","starred_url":"https://api.github.com/users/szczepiq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/szczepiq/subscriptions","organizations_url":"https://api.github.com/users/szczepiq/orgs","repos_url":"https://api.github.com/users/szczepiq/repos","events_url":"https://api.github.com/users/szczepiq/events{/privacy}","received_events_url":"https://api.github.com/users/szczepiq/received_events","type":"User","site_admin":false},"body":"The purpose of this RB is to give you heads-up about the improvements to the release automation that I work on. The algorithm is implemented and will not change much. Documentation, edge case unit tests and fixing runnability from Gradle are pending (Travis CI will fail on this PR).\n\nThe goal of the new 'release-workflow' plugin is to able to express the release automation in the build.gradle file like that:\n\n``` groovy\nreleaseWorkflow {\n    step releaseNeeded\n    onlyIf { releaseNeeded.needed }\n    step bintrayUpload\n    step pullCommits\n    step configureGenericGitUser, cleanup: restoreGitUser\n    step commitReleaseNotes, rollback: resetReleaseNotes\n    step tagNewVersion, rollback: removeNewTag\n    step bumpVersion, rollback: unbumpVersion\n    step pushChanges\n}\n```\n\nMore over, it will be very easy to test out the release locally or even individual release steps:\n\n```\n./gradlew release -PdryRun\n./gradlew pullCommits -PsingleStep\n```\n","created_at":"2016-10-30T15:15:39Z","updated_at":"2016-11-11T05:57:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"48810843e3493b1a099f51bc6cf3bdedefd98b5c","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mockito/mockito/pulls/724/commits","review_comments_url":"https://api.github.com/repos/mockito/mockito/pulls/724/comments","review_comment_url":"https://api.github.com/repos/mockito/mockito/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mockito/mockito/issues/724/comments","statuses_url":"https://api.github.com/repos/mockito/mockito/statuses/2628fd9373dc49649c0a32fe957860e20cc0b71c","head":{"label":"mockito:release-workflow","ref":"release-workflow","sha":"2628fd9373dc49649c0a32fe957860e20cc0b71c","user":{"login":"mockito","id":2054056,"avatar_url":"https://avatars.githubusercontent.com/u/2054056?v=3","gravatar_id":"","url":"https://api.github.com/users/mockito","html_url":"https://github.com/mockito","followers_url":"https://api.github.com/users/mockito/followers","following_url":"https://api.github.com/users/mockito/following{/other_user}","gists_url":"https://api.github.com/users/mockito/gists{/gist_id}","starred_url":"https://api.github.com/users/mockito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mockito/subscriptions","organizations_url":"https://api.github.com/users/mockito/orgs","repos_url":"https://api.github.com/users/mockito/repos","events_url":"https://api.github.com/users/mockito/events{/privacy}","received_events_url":"https://api.github.com/users/mockito/received_events","type":"Organization","site_admin":false},"repo":{"id":6207167,"name":"mockito","full_name":"mockito/mockito","owner":{"login":"mockito","id":2054056,"avatar_url":"https://avatars.githubusercontent.com/u/2054056?v=3","gravatar_id":"","url":"https://api.github.com/users/mockito","html_url":"https://github.com/mockito","followers_url":"https://api.github.com/users/mockito/followers","following_url":"https://api.github.com/users/mockito/following{/other_user}","gists_url":"https://api.github.com/users/mockito/gists{/gist_id}","starred_url":"https://api.github.com/users/mockito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mockito/subscriptions","organizations_url":"https://api.github.com/users/mockito/orgs","repos_url":"https://api.github.com/users/mockito/repos","events_url":"https://api.github.com/users/mockito/events{/privacy}","received_events_url":"https://api.github.com/users/mockito/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mockito/mockito","description":"Most popular Mocking framework for unit tests written in Java","fork":false,"url":"https://api.github.com/repos/mockito/mockito","forks_url":"https://api.github.com/repos/mockito/mockito/forks","keys_url":"https://api.github.com/repos/mockito/mockito/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mockito/mockito/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mockito/mockito/teams","hooks_url":"https://api.github.com/repos/mockito/mockito/hooks","issue_events_url":"https://api.github.com/repos/mockito/mockito/issues/events{/number}","events_url":"https://api.github.com/repos/mockito/mockito/events","assignees_url":"https://api.github.com/repos/mockito/mockito/assignees{/user}","branches_url":"https://api.github.com/repos/mockito/mockito/branches{/branch}","tags_url":"https://api.github.com/repos/mockito/mockito/tags","blobs_url":"https://api.github.com/repos/mockito/mockito/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mockito/mockito/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mockito/mockito/git/refs{/sha}","trees_url":"https://api.github.com/repos/mockito/mockito/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mockito/mockito/statuses/{sha}","languages_url":"https://api.github.com/repos/mockito/mockito/languages","stargazers_url":"https://api.github.com/repos/mockito/mockito/stargazers","contributors_url":"https://api.github.com/repos/mockito/mockito/contributors","subscribers_url":"https://api.github.com/repos/mockito/mockito/subscribers","subscription_url":"https://api.github.com/repos/mockito/mockito/subscription","commits_url":"https://api.github.com/repos/mockito/mockito/commits{/sha}","git_commits_url":"https://api.github.com/repos/mockito/mockito/git/commits{/sha}","comments_url":"https://api.github.com/repos/mockito/mockito/comments{/number}","issue_comment_url":"https://api.github.com/repos/mockito/mockito/issues/comments{/number}","contents_url":"https://api.github.com/repos/mockito/mockito/contents/{+path}","compare_url":"https://api.github.com/repos/mockito/mockito/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mockito/mockito/merges","archive_url":"https://api.github.com/repos/mockito/mockito/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mockito/mockito/downloads","issues_url":"https://api.github.com/repos/mockito/mockito/issues{/number}","pulls_url":"https://api.github.com/repos/mockito/mockito/pulls{/number}","milestones_url":"https://api.github.com/repos/mockito/mockito/milestones{/number}","notifications_url":"https://api.github.com/repos/mockito/mockito/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mockito/mockito/labels{/name}","releases_url":"https://api.github.com/repos/mockito/mockito/releases{/id}","deployments_url":"https://api.github.com/repos/mockito/mockito/deployments","created_at":"2012-10-13T20:27:12Z","updated_at":"2016-11-11T02:38:56Z","pushed_at":"2016-11-10T21:57:10Z","git_url":"git://github.com/mockito/mockito.git","ssh_url":"git@github.com:mockito/mockito.git","clone_url":"https://github.com/mockito/mockito.git","svn_url":"https://github.com/mockito/mockito","homepage":"http://mockito.org","size":123139,"stargazers_count":3550,"watchers_count":3550,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":703,"mirror_url":null,"open_issues_count":91,"forks":703,"open_issues":91,"watchers":3550,"default_branch":"release/2.x"}},"base":{"label":"mockito:release/2.x","ref":"release/2.x","sha":"3b8baef4a7ffa4023ce4e156bbef20197dc0e628","user":{"login":"mockito","id":2054056,"avatar_url":"https://avatars.githubusercontent.com/u/2054056?v=3","gravatar_id":"","url":"https://api.github.com/users/mockito","html_url":"https://github.com/mockito","followers_url":"https://api.github.com/users/mockito/followers","following_url":"https://api.github.com/users/mockito/following{/other_user}","gists_url":"https://api.github.com/users/mockito/gists{/gist_id}","starred_url":"https://api.github.com/users/mockito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mockito/subscriptions","organizations_url":"https://api.github.com/users/mockito/orgs","repos_url":"https://api.github.com/users/mockito/repos","events_url":"https://api.github.com/users/mockito/events{/privacy}","received_events_url":"https://api.github.com/users/mockito/received_events","type":"Organization","site_admin":false},"repo":{"id":6207167,"name":"mockito","full_name":"mockito/mockito","owner":{"login":"mockito","id":2054056,"avatar_url":"https://avatars.githubusercontent.com/u/2054056?v=3","gravatar_id":"","url":"https://api.github.com/users/mockito","html_url":"https://github.com/mockito","followers_url":"https://api.github.com/users/mockito/followers","following_url":"https://api.github.com/users/mockito/following{/other_user}","gists_url":"https://api.github.com/users/mockito/gists{/gist_id}","starred_url":"https://api.github.com/users/mockito/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mockito/subscriptions","organizations_url":"https://api.github.com/users/mockito/orgs","repos_url":"https://api.github.com/users/mockito/repos","events_url":"https://api.github.com/users/mockito/events{/privacy}","received_events_url":"https://api.github.com/users/mockito/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mockito/mockito","description":"Most popular Mocking framework for unit tests written in Java","fork":false,"url":"https://api.github.com/repos/mockito/mockito","forks_url":"https://api.github.com/repos/mockito/mockito/forks","keys_url":"https://api.github.com/repos/mockito/mockito/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mockito/mockito/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mockito/mockito/teams","hooks_url":"https://api.github.com/repos/mockito/mockito/hooks","issue_events_url":"https://api.github.com/repos/mockito/mockito/issues/events{/number}","events_url":"https://api.github.com/repos/mockito/mockito/events","assignees_url":"https://api.github.com/repos/mockito/mockito/assignees{/user}","branches_url":"https://api.github.com/repos/mockito/mockito/branches{/branch}","tags_url":"https://api.github.com/repos/mockito/mockito/tags","blobs_url":"https://api.github.com/repos/mockito/mockito/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mockito/mockito/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mockito/mockito/git/refs{/sha}","trees_url":"https://api.github.com/repos/mockito/mockito/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mockito/mockito/statuses/{sha}","languages_url":"https://api.github.com/repos/mockito/mockito/languages","stargazers_url":"https://api.github.com/repos/mockito/mockito/stargazers","contributors_url":"https://api.github.com/repos/mockito/mockito/contributors","subscribers_url":"https://api.github.com/repos/mockito/mockito/subscribers","subscription_url":"https://api.github.com/repos/mockito/mockito/subscription","commits_url":"https://api.github.com/repos/mockito/mockito/commits{/sha}","git_commits_url":"https://api.github.com/repos/mockito/mockito/git/commits{/sha}","comments_url":"https://api.github.com/repos/mockito/mockito/comments{/number}","issue_comment_url":"https://api.github.com/repos/mockito/mockito/issues/comments{/number}","contents_url":"https://api.github.com/repos/mockito/mockito/contents/{+path}","compare_url":"https://api.github.com/repos/mockito/mockito/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mockito/mockito/merges","archive_url":"https://api.github.com/repos/mockito/mockito/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mockito/mockito/downloads","issues_url":"https://api.github.com/repos/mockito/mockito/issues{/number}","pulls_url":"https://api.github.com/repos/mockito/mockito/pulls{/number}","milestones_url":"https://api.github.com/repos/mockito/mockito/milestones{/number}","notifications_url":"https://api.github.com/repos/mockito/mockito/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mockito/mockito/labels{/name}","releases_url":"https://api.github.com/repos/mockito/mockito/releases{/id}","deployments_url":"https://api.github.com/repos/mockito/mockito/deployments","created_at":"2012-10-13T20:27:12Z","updated_at":"2016-11-11T02:38:56Z","pushed_at":"2016-11-10T21:57:10Z","git_url":"git://github.com/mockito/mockito.git","ssh_url":"git@github.com:mockito/mockito.git","clone_url":"https://github.com/mockito/mockito.git","svn_url":"https://github.com/mockito/mockito","homepage":"http://mockito.org","size":123139,"stargazers_count":3550,"watchers_count":3550,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":703,"mirror_url":null,"open_issues_count":91,"forks":703,"open_issues":91,"watchers":3550,"default_branch":"release/2.x"}},"_links":{"self":{"href":"https://api.github.com/repos/mockito/mockito/pulls/724"},"html":{"href":"https://github.com/mockito/mockito/pull/724"},"issue":{"href":"https://api.github.com/repos/mockito/mockito/issues/724"},"comments":{"href":"https://api.github.com/repos/mockito/mockito/issues/724/comments"},"review_comments":{"href":"https://api.github.com/repos/mockito/mockito/pulls/724/comments"},"review_comment":{"href":"https://api.github.com/repos/mockito/mockito/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mockito/mockito/pulls/724/commits"},"statuses":{"href":"https://api.github.com/repos/mockito/mockito/statuses/2628fd9373dc49649c0a32fe957860e20cc0b71c"}}}}
{"actor":{"display_login":"szczepiq"}}