{"action":"created","comment":{"url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/comments/85064998","pull_request_review_id":5801568,"id":85064998,"diff_hunk":"@@ -0,0 +1,52 @@\n+/**\n+ * Created by cmeyers on 10/17/16.\n+ */\n+import React, { PropTypes } from 'react';\n+import Extensions from '@jenkins-cd/js-extensions';\n+import VerticalStep from './VerticalStep';\n+\n+const Sandbox = Extensions.SandboxedComponent;","path":"blueocean-dashboard/src/main/js/creation/CreatePipelineStepsRenderer.jsx","position":8,"original_position":8,"commit_id":"9bc7b9166839435cab5ed57a5d964059b0e846ea","original_commit_id":"9bc7b9166839435cab5ed57a5d964059b0e846ea","user":{"login":"michaelneale","id":14976,"avatar_url":"https://avatars.githubusercontent.com/u/14976?v=3","gravatar_id":"","url":"https://api.github.com/users/michaelneale","html_url":"https://github.com/michaelneale","followers_url":"https://api.github.com/users/michaelneale/followers","following_url":"https://api.github.com/users/michaelneale/following{/other_user}","gists_url":"https://api.github.com/users/michaelneale/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelneale/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelneale/subscriptions","organizations_url":"https://api.github.com/users/michaelneale/orgs","repos_url":"https://api.github.com/users/michaelneale/repos","events_url":"https://api.github.com/users/michaelneale/events{/privacy}","received_events_url":"https://api.github.com/users/michaelneale/received_events","type":"User","site_admin":false},"body":"What is a sandboxed component? ","created_at":"2016-10-26T07:42:59Z","updated_at":"2016-10-26T07:42:59Z","html_url":"https://github.com/jenkinsci/blueocean-plugin/pull/572#discussion_r85064998","pull_request_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572","_links":{"self":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/comments/85064998"},"html":{"href":"https://github.com/jenkinsci/blueocean-plugin/pull/572#discussion_r85064998"},"pull_request":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572"}}},"pull_request":{"url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572","id":90873130,"html_url":"https://github.com/jenkinsci/blueocean-plugin/pull/572","diff_url":"https://github.com/jenkinsci/blueocean-plugin/pull/572.diff","patch_url":"https://github.com/jenkinsci/blueocean-plugin/pull/572.patch","issue_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/572","number":572,"state":"open","locked":false,"title":"Feature/jenkins 38595 create pipeline scm list","user":{"login":"cliffmeyers","id":143466,"avatar_url":"https://avatars.githubusercontent.com/u/143466?v=3","gravatar_id":"","url":"https://api.github.com/users/cliffmeyers","html_url":"https://github.com/cliffmeyers","followers_url":"https://api.github.com/users/cliffmeyers/followers","following_url":"https://api.github.com/users/cliffmeyers/following{/other_user}","gists_url":"https://api.github.com/users/cliffmeyers/gists{/gist_id}","starred_url":"https://api.github.com/users/cliffmeyers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cliffmeyers/subscriptions","organizations_url":"https://api.github.com/users/cliffmeyers/orgs","repos_url":"https://api.github.com/users/cliffmeyers/repos","events_url":"https://api.github.com/users/cliffmeyers/events{/privacy}","received_events_url":"https://api.github.com/users/cliffmeyers/received_events","type":"User","site_admin":false},"body":"# Description\r\n- This is a work-in-progress to get some early feedback on a proposed API for \"Create Pipeline\" flows. I have implemented a basic flow for Git with most of the forms but nothing has been skinned or componentized yet. There is also a fake flow for Github just for the purposes of showing how multiple plugins would contribute their flows. Some explanation of the code:\r\n   - `CreatePipeline` is the main file that renders the dialog and content. It renders the buttons via `CreatePipelineScmListRenderer` and the content below via `CreatePipelineStepsRenderer`. Plugins create a subclass of `ScmProvider` and register to the extension point.\r\n   - Check out `GitScmProvider` and `GitCreationFlow`. This shows how the flow for Git is put together. The \"steps\" are in `CompletedStep` and `ConnectStep`. My goal here was to allow someone full freedom to do whatever they want in a step but still have an easy way to render the steps, mark them as complete, and complete the flow. The Manager, Api and Status classes are really just the internal plumbing.\r\n   - The inner works of flow management is done in `MultiStepFlow` and `FlowStep`.\r\n   - I added some things in js-extensions, mainly a `SandboxedComponent` that renders any children passed to it via a separate `ReactDOM.render` call. I wanted to avoid creating multi extension points for the list, creation flow (and re-entrant flow, which will come later) because I felt it would be confusing for the plugin author and make communication between the separate parts of code more difficult. So there's a single extension point that returns different React elements that are rendered arbitrarily in their own sandboxes.\r\n- See [JENKINS-38595](https://issues.jenkins-ci.org/browse/JENKINS-38595).\r\n\r\n# Submitter checklist\r\n- [x] Link to JIRA ticket in description, if appropriate.\r\n- [ ] Change is code complete and matches issue description\r\n- [ ] Appropriate unit or acceptance tests or explanation to why this change has no tests\r\n- [ ] Reviewer's manual test instructions provided in PR description. See Reviewer's first task below.\r\n- [ ] Ran Acceptance Test Harness against PR changes.\r\n\r\n# Reviewer checklist\r\n- [ ] Run the changes and verified the change matches the issue description\r\n- [ ] Reviewed the code\r\n- [ ] Verified that the appropriate tests have been written or valid explanation given\r\n\r\n@jenkinsci/code-reviewers @reviewbybees \r\n","created_at":"2016-10-25T19:16:08Z","updated_at":"2016-10-26T07:42:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572/commits","review_comments_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572/comments","review_comment_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/572/comments","statuses_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/statuses/9bc7b9166839435cab5ed57a5d964059b0e846ea","head":{"label":"jenkinsci:feature/JENKINS-38595-create-pipeline-scm-list","ref":"feature/JENKINS-38595-create-pipeline-scm-list","sha":"9bc7b9166839435cab5ed57a5d964059b0e846ea","user":{"login":"jenkinsci","id":107424,"avatar_url":"https://avatars.githubusercontent.com/u/107424?v=3","gravatar_id":"","url":"https://api.github.com/users/jenkinsci","html_url":"https://github.com/jenkinsci","followers_url":"https://api.github.com/users/jenkinsci/followers","following_url":"https://api.github.com/users/jenkinsci/following{/other_user}","gists_url":"https://api.github.com/users/jenkinsci/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkinsci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkinsci/subscriptions","organizations_url":"https://api.github.com/users/jenkinsci/orgs","repos_url":"https://api.github.com/users/jenkinsci/repos","events_url":"https://api.github.com/users/jenkinsci/events{/privacy}","received_events_url":"https://api.github.com/users/jenkinsci/received_events","type":"Organization","site_admin":false},"repo":{"id":50250915,"name":"blueocean-plugin","full_name":"jenkinsci/blueocean-plugin","owner":{"login":"jenkinsci","id":107424,"avatar_url":"https://avatars.githubusercontent.com/u/107424?v=3","gravatar_id":"","url":"https://api.github.com/users/jenkinsci","html_url":"https://github.com/jenkinsci","followers_url":"https://api.github.com/users/jenkinsci/followers","following_url":"https://api.github.com/users/jenkinsci/following{/other_user}","gists_url":"https://api.github.com/users/jenkinsci/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkinsci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkinsci/subscriptions","organizations_url":"https://api.github.com/users/jenkinsci/orgs","repos_url":"https://api.github.com/users/jenkinsci/repos","events_url":"https://api.github.com/users/jenkinsci/events{/privacy}","received_events_url":"https://api.github.com/users/jenkinsci/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/jenkinsci/blueocean-plugin","description":"Blue Ocean is a reboot of the Jenkins CI/CD User Experience","fork":false,"url":"https://api.github.com/repos/jenkinsci/blueocean-plugin","forks_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/forks","keys_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/teams","hooks_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/hooks","issue_events_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/events{/number}","events_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/events","assignees_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/assignees{/user}","branches_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/branches{/branch}","tags_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/tags","blobs_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/refs{/sha}","trees_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/statuses/{sha}","languages_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/languages","stargazers_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/stargazers","contributors_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/contributors","subscribers_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/subscribers","subscription_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/subscription","commits_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/commits{/sha}","git_commits_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/commits{/sha}","comments_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/comments{/number}","issue_comment_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/comments{/number}","contents_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/contents/{+path}","compare_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/merges","archive_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/downloads","issues_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues{/number}","pulls_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls{/number}","milestones_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/milestones{/number}","notifications_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/labels{/name}","releases_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/releases{/id}","deployments_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/deployments","created_at":"2016-01-23T18:02:45Z","updated_at":"2016-10-26T06:06:51Z","pushed_at":"2016-10-26T04:53:56Z","git_url":"git://github.com/jenkinsci/blueocean-plugin.git","ssh_url":"git@github.com:jenkinsci/blueocean-plugin.git","clone_url":"https://github.com/jenkinsci/blueocean-plugin.git","svn_url":"https://github.com/jenkinsci/blueocean-plugin","homepage":"https://jenkins.io/projects/blueocean/","size":11765,"stargazers_count":1305,"watchers_count":1305,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":115,"mirror_url":null,"open_issues_count":8,"forks":115,"open_issues":8,"watchers":1305,"default_branch":"master"}},"base":{"label":"jenkinsci:master","ref":"master","sha":"6de837223b80cca1390f4765a8d561aab5e007de","user":{"login":"jenkinsci","id":107424,"avatar_url":"https://avatars.githubusercontent.com/u/107424?v=3","gravatar_id":"","url":"https://api.github.com/users/jenkinsci","html_url":"https://github.com/jenkinsci","followers_url":"https://api.github.com/users/jenkinsci/followers","following_url":"https://api.github.com/users/jenkinsci/following{/other_user}","gists_url":"https://api.github.com/users/jenkinsci/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkinsci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkinsci/subscriptions","organizations_url":"https://api.github.com/users/jenkinsci/orgs","repos_url":"https://api.github.com/users/jenkinsci/repos","events_url":"https://api.github.com/users/jenkinsci/events{/privacy}","received_events_url":"https://api.github.com/users/jenkinsci/received_events","type":"Organization","site_admin":false},"repo":{"id":50250915,"name":"blueocean-plugin","full_name":"jenkinsci/blueocean-plugin","owner":{"login":"jenkinsci","id":107424,"avatar_url":"https://avatars.githubusercontent.com/u/107424?v=3","gravatar_id":"","url":"https://api.github.com/users/jenkinsci","html_url":"https://github.com/jenkinsci","followers_url":"https://api.github.com/users/jenkinsci/followers","following_url":"https://api.github.com/users/jenkinsci/following{/other_user}","gists_url":"https://api.github.com/users/jenkinsci/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkinsci/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkinsci/subscriptions","organizations_url":"https://api.github.com/users/jenkinsci/orgs","repos_url":"https://api.github.com/users/jenkinsci/repos","events_url":"https://api.github.com/users/jenkinsci/events{/privacy}","received_events_url":"https://api.github.com/users/jenkinsci/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/jenkinsci/blueocean-plugin","description":"Blue Ocean is a reboot of the Jenkins CI/CD User Experience","fork":false,"url":"https://api.github.com/repos/jenkinsci/blueocean-plugin","forks_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/forks","keys_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/teams","hooks_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/hooks","issue_events_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/events{/number}","events_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/events","assignees_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/assignees{/user}","branches_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/branches{/branch}","tags_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/tags","blobs_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/refs{/sha}","trees_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/statuses/{sha}","languages_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/languages","stargazers_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/stargazers","contributors_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/contributors","subscribers_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/subscribers","subscription_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/subscription","commits_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/commits{/sha}","git_commits_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/git/commits{/sha}","comments_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/comments{/number}","issue_comment_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/comments{/number}","contents_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/contents/{+path}","compare_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/merges","archive_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/downloads","issues_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues{/number}","pulls_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls{/number}","milestones_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/milestones{/number}","notifications_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/labels{/name}","releases_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/releases{/id}","deployments_url":"https://api.github.com/repos/jenkinsci/blueocean-plugin/deployments","created_at":"2016-01-23T18:02:45Z","updated_at":"2016-10-26T06:06:51Z","pushed_at":"2016-10-26T04:53:56Z","git_url":"git://github.com/jenkinsci/blueocean-plugin.git","ssh_url":"git@github.com:jenkinsci/blueocean-plugin.git","clone_url":"https://github.com/jenkinsci/blueocean-plugin.git","svn_url":"https://github.com/jenkinsci/blueocean-plugin","homepage":"https://jenkins.io/projects/blueocean/","size":11765,"stargazers_count":1305,"watchers_count":1305,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":115,"mirror_url":null,"open_issues_count":8,"forks":115,"open_issues":8,"watchers":1305,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572"},"html":{"href":"https://github.com/jenkinsci/blueocean-plugin/pull/572"},"issue":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/572"},"comments":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/issues/572/comments"},"review_comments":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572/comments"},"review_comment":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/pulls/572/commits"},"statuses":{"href":"https://api.github.com/repos/jenkinsci/blueocean-plugin/statuses/9bc7b9166839435cab5ed57a5d964059b0e846ea"}}}}
{"actor":{"display_login":"michaelneale"}}