{"action":"created","comment":{"url":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/comments/56361373","id":56361373,"diff_hunk":"@@ -1,981 +1,437 @@\n ---\n layout: simplepage\n-title: \"Pipeline\"\n+title: \"Getting Started with Pipelines\"\n ---\n \n-:toc:\n+== Audience and Purpose\n \n-# Jenkins Pipeline\n+This document is intended for novice users of the Jenkins pipeline feature. The document explains what a pipeline is, why that matters, and how to create the different kinds of pipelines.\n \n-Jenkins is a powerful, open source automation tool with a powerful plugin architecture that helps development teams automate their software lifecycle. Jenkins is used to power many industry-leading companies' software development pipelines.\n+== Why Pipeline?\n \n-Jenkins Pipeline is a powerful, first-class feature for managing complex, multi-step pipelines. Jenkins Pipeline, a set of open source plugins and integrations, brings the power of Jenkins and the plugin ecosystem into a scriptable Domain Specific Language (DSL). Best of all, like Jenkins core, Pipeline is extensible by third-party developers, supporting custom extensions to the Pipeline DSL and various options for plugin integration.\n+While standard Jenkins “freestyle” jobs support simple continuous integration by allowing you to define sequential tasks in an application lifecycle, they do not create a persistent record of execution, enable one script to address all the steps in a complex workflow, or confer the other advantages of pipelines.\n \n-Jenkins Pipeline was known as Jenkins Workflow prior to version 1.13.\n+In contrast to freestyle jobs, pipelines enable you to define the whole application lifecycle.  Pipeline functionality helps Jenkins to support continuous delivery (CD). The Pipeline plugin was built with community requirements for a flexible, extensible, and script-based CD workflow capability in mind. \n \n-![Pipeline Stage View UI](images/1-stage-view-ui-hr.png)\n-Pipeline Stage View UI\n+Accordingly, pipeline functionality is:\n \n-This Refcard provides an overview and introduction to Jenkins Pipeline as well as a full syntax reference card. We also provide a real-world delivery pipeline example, building on the more basic Pipeline snippets from earlier examples.\n+* Durable: Pipelines can survive both planned and unplanned restarts of your Jenkins master.\n+* Pausable: Pipelines can optionally stop and wait for human input or approval before completing the jobs for which they were built.\n+* Versatile: Pipelines support complex real-world CD requirements, including the ability to fork or join, loop, and work in parallel with each other.\n+* Efficient: Pipelines can restart from any of several saved checkpoints.\n+* Extensible: The Pipeline plugin supports custom extensions to its DSL (domain scripting language) and multiple options for integration with other plugins. \n \n-## Installing Jenkins Pipeline\n-It is assumed you have already installed Jenkins – either via the CloudBees Jenkins Platform or jenkins-ci.org. Jenkins Version 1.609.1+ is required.\n \n-* Open Jenkins in your web browser\n-* Navigate to Manage Jenkins > Manage Plugins\n-* Navigate to the Available tab, filter by Pipeline\n-* Select the Pipeline plugin and install\n-* Restart Jenkins\n+The flowchart below is an example of one continuous delivery scenario enabled by the Pipeline plugin:\n \n-This Refcard was written using Pipeline version 1.13. Installing the Pipeline plugin installs all necessary Pipeline dependencies and a new job type called Pipeline.\n+image::/images/pipeline/jenkins-workflow.png[title=\"Jenkins Workflow\", 800]\n \n-# Creating a Pipeline\n+== Pipeline Defined\n \n-Now that you have Jenkins running and have installed the Pipeline plugin, you are ready to create your first pipeline. Create a new pipeline by selecting New Item from the Jenkins home page.\n+Pipelines are Jenkins jobs enabled by the Pipeline (formerly called “workflow”) plugin and built with simple text scripts that use a Pipeline DSL (domain-specific language) based on the Groovy programming language. \n \n-First, give your pipeline a name, eg: \"hello-world-flow\".  pipelines are simple, Groovy scripts, so let's add the obligatory Hello World. Add a pipeline to the Pipeline script textarea:\n+Pipelines leverage the power of multiple steps to execute both simple and complex tasks according to parameters that you establish. Once created, pipelines can build code and orchestrate the work required to drive applications from commit to delivery.\n \n-```groovy\n-echo 'Hello world'\n-```\n+== Pipeline Vocabulary\n \n-Now save your pipeline, ensuring the Use Groovy Sandbox option is checked (more details to follow on this setting). Click Build Now to run your pipeline.\n+Pipeline terms such as “step,” “node,” and “stage” are a subset of the vocabulary used for Jenkins in general. \n \n-## Editing your Pipeline\n+Step::\n+    A “step” (often called a “build step”) is a single task that is part of sequence. Steps tell Jenkins what to do.\n \n-Because pipelines are simple text scripts, they are easy to edit. As you've seen, pipelines can be edited directly in the Jenkins UI when configuring your pipeline.\n+Node::\n+    In pipeline coding contexts, as opposed to Jenkins generally, a “node” is a step that does two things, typically by enlisting help from available executors on agents:\n+    * Schedules the steps contained within it to run by adding them to the Jenkins build queue (so that as soon as an executor slot is free on a node, the appropriate steps run). \n+    * Creates a workspace, meaning a file directory specific to a particular job, where resource-intensive processing can occur without negatively impacting your pipeline performance. Workspaces last for the duration of the tasks assigned to them.\n \n-![Pipeline Editor](images/2-workflow-edit-hr.png)\n \n-## Using the Snippet Generator\n-To make editing your pipelines easier, use the Snippet Generator. The Snippet Generator is dynamically populated with the latest Pipeline steps. Depending on the plugins installed in your environment, you may see more available steps.\n+(In Jenkins generally, a “node” means any computer that is part of your Jenkins installation, whether that computer is used as a master or as an agent).\n \n-![Snippet Generator](images/3-snippet-generator-hr.png)\n+Stage::\n+    A “stage” is a step that calls supported APIs. Pipeline syntax is comprised of stages. Each stage can have one or more build steps within it. \n \n-## Loading External Pipeline Scripts\n+Familiarity with Jenkins  terms such as “master,” “agent,” and “executor” also helps with understanding how pipelines work. These terms are not specific to pipelines:\n \n-Because pipelines are text assets, they are ideal to store in a source control system. Pipelines can be edited in your external IDE then loaded into Jenkins using the Pipeline Script from SCM option.\n+* master - A “master” is the basic installation of Jenkins on a computer; it handles tasks for your build system. Pipeline scripts are parsed on masters, and steps wrapped in node blocks are performed on available executors.\n+* agent - An “agent” (formerly \"slave\")  is a computer set up to offload particular projects from the master. Your configuration determines the number and scope of operations that an agent can perform. Operations are performed by executors.\n+* executor - An “executor” is a computational resource for compiling code. It can run on master or agent machines, either by itself or in parallel with other executors. Jenkins assigns a _java.lang.Thread_ to each executor.\n \n-# Building your Pipeline\n+== Preparing Jenkins to Run Pipelines\n \n-Now that you've created a pipeline, let's continue to build on it. For a complex flow, you should leverage Jenkins' job scheduling queue:\n+To run pipelines, you need to have a Jenkins instance that is set up with the appropriate plugins. This requires:\n \n-```groovy\n-node{ sh 'uname' }\n-```\n+* Jenkins 1.580.1 or later (Jenkins 2.0 is recommended)\n+* The core Pipeline plugin\n \n-The concept of a node should be familiar to Jenkins users: node is a special step that schedules the contained steps to run by adding them to Jenkins' build queue. Even better, requesting a node leverages Jenkins' distributed build system. Of course, to select the right kind of node for your build, the node element takes a label expression:\n+=== Installing the Pipeline Plugin\n \n-```groovy\n-node('unix && 64-bit'){ echo 'Hello world' }\n-```\n+The Pipeline plugin is installed in the same way as other Jenkins plugins. Installing the Pipeline plugin also installs the suite of related plugins on which it depends:\n+Open Jenkins in your web browser.\n+On the Manage Jenkins page for your installation, navigate to Manage Plugins. \n+Find Pipeline Plugin from among the plugins listed on the Available tab.\n+https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Plugin (You can do this by scrolling through the plugin list or by using “Pipeline” as a term to filter results)\n+Select the checkbox for Pipeline Plugin.\n+Select either Install without restart or Download now and install after restart. Pipeline plugin installation automatically includes all necessary dependencies. \n+Restart Jenkins.\n \n-The node step also creates a workspace: a directory specific to this job where you can check out sources, run commands, and do other work. Resource-intensive work in your pipeline should occur on a node. You can also use the ws step to explicitly ask for another workspace on the current slave, without grabbing a new executor slot. Inside its body all commands run in the second workspace.\n+=== Pipeline Plugin Reference List\n \n-## Checking out Code\n+The Pipeline plugin works with a suite of related plugins that enhance the pipeline functionality of your Jenkins setup. The additional plugins typically introduce additional pipeline syntax or visualizations.\n \n-Usually, your pipelines will retrieve source code from your source control server. Jenkins Pipeline has a simple syntax for retrieving source code, leveraging the many existing SCM plugins for Jenkins.\n+The table below describes pipeline-related plugins in terms of their importance to pipeline functionality (required, recommended, or optional). To get the basic pipeline functionality, you only need to install the main Pipeline plugin, but recommended plugins add additional capabilities that you will probably want.  \n \n-```groovy\n-checkout([$class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[url: 'http://github.com/cloudbees/todo-api.git']]])\n-```\n+Optional plugins are mainly useful if you are creating pipelines that are related to the technologies that they support. \n \n-If you happen to use a Git-based SCM, for example GitHub, there's an even further simplified syntax:\n \n-```groovy\n-git 'https://github.com/cloudbees/todo-api.git'\n-```\n+[options=\"header\"]\n+|=======================\n+|Plugin Name                     |Description      |Status\n+|Pipeline (workflow-aggregator)  | Installs the core pipeline engine and its dependent plugins: \n+Pipeline: API,\n+Pipeline: Basic Steps,\n+Pipeline: Durable Task Step, \n+Pipeline: Execution Support,\n+Pipeline: Global Shared Library for CPS pipeline,\n+Pipeline: Groovy CPS Execution,\n+Pipeline: Job,\n+Pipeline: SCM Step,  \n+Pipeline: Step API\n+| required\n \n-## Running your Pipeline\n+| Pipeline: Stage View\n+| Provides a graphical swimlane view of pipeline stage execution (as well as a build history of the stages)\n+| recommended\n \n-Because pipelines are built as Jenkins jobs, they can be built like other jobs. You can use the Build Now feature to manually trigger your build on demand or set up triggers to execute your pipeline based on certain events.\n+| Multibranch Pipeline\n+| Adds \"Multibranch Pipeline\" item type which allows Jenkins to automatically build branches that contain jenkinsfile\n+| recommended\n \n-## Adding Stages and Steps\n-Stages are usually the top most element of Pipeline syntax. Stages allow you to group your build step into its component parts. By default, multiple builds of the same pipeline can run concurrently. The stage element also allows you to control this concurrency:\n+| CloudBees GitHub Branch Source\n+| Adds GitHub Organization Folder item type and adds \"Github\" as a branch source on Multibranch pipelines\n+| recommended for teams hosting repositories in Github\n \n-```groovy\n-stage 'build'\n-   node{ … }\n-stage name: 'test', concurrency: 3\n-   node{ … }\n-stage name: 'deploy', concurrency: 1\n-   node{ … }\n-```\n+| CloudBees Bitbucket Branch Source\n+| Adds Bitbucket Team item type and adds \"Bitbucket\" as a branch source on Multibranch pipelines\n+| recommended for teams hosting repositories in Bitbucket\n \n-In this example, we have set a limit of three concurrent executions of the test stage and only one execution of the deploy stage. You will likely want to control concurrency to prevent collisions (for example, deployments).\n+| CloudBees Docker Pipeline\n+| Enables pipeline to build and use Docker containers inside pipeline scripts.\n+| optional\n \n-Newer builds are always given priority when entering a throttled stage; older builds will simply exit early if they are preempted.\n+|=======================\n \n-### General Build Steps\n \n-Within your stages, you will add build steps. Just like with Freestyle Jenkins jobs, build steps make up the core logic of your pipeline. Jenkins Pipeline supports any compatible Build Step and populates the snippet generator with all available Build Steps in your Jenkins environment.\n \n-```groovy\n-step([$class: 'JavadocArchiver', javadocDir: 'target/resources/javadoc', keepAll: false])\n-```\n+Pipeline-related plugins other than those listed above are regularly “whitelisted” as compatible with or designed for Pipeline usage. For more information, see the link:https://github.com/jenkinsci/workflow-plugin/blob/541faf611659e1e6b8f2cbbd3435756b27633db4/COMPATIBILITY.md[Plugin Compatibility With Pipeline] wiki. Current contents of that wiki are summarized in the following table:\n \n-```groovy\n-step([$class: 'Fingerprinter', targets: 'target/api.war'])\n-```\n+SCMs::\n+    * GitSCM (git)\n+    * SubversionSCM (subversion)\n+    * MercurialSCM (mercurial)\n+    * PerforceScm (p4, not the older perforce)\n+    * IntegritySCM (integrity-plugin)\n+    * RepoScm (repo)\n+    * teamconcert\n+    * CVSSCM (cvs)\n+\n+Build Steps and Post-Build Actions::\n+    * ArtifactArchiver (core)\n+    * Fingerprinter (core)\n+    * JUnitResultArchiver (junit)\n+    * JavadocArchiver (javadoc)\n+    * Mailer (mailer)\n+    * CopyArtifact (copyartifact)\n+    * Analysis publishers\n+    * HtmlPublisher (htmlpublisher)\n+    * HipChatNotifier (hipchat)\n+    * LogParserPublisher (log-parser)\n+    * SeleniumHtmlReportPublisher (seleniumhtmlreport)\n+    * ScoveragePublisher (scoverage)\n+    * AnsiblePlaybookBuilder (ansible)\n+    * GitHubCommitNotifier, GitHubSetCommitStatusBuilder (github)\n+    * XUnitPublisher and XUnitBuilder (xunit)\n+\n+Build Wrappers::\n+    * ConfigFileBuildWrapper (config-file-provider)\n+    * Xvnc (xvnc)\n+    * BuildUser (build-user-vars)\n+    * TimestamperBuildWrapper (timestamper)\n+    * MaskPasswordsBuildWrapper (mask-passwords)\n+    * XvfbBuildWrapper (xvfb)\n+    * GCloudBuildWrapper (gcloud-sdk)\n+    * NpmPackagesBuildWrapper (nodejs)\n+    * AnsiColorBuildWrapper (ansicolor)\n+\n+Triggers::\n+    * gerrit-trigger\n+    * github\n+    * deployment-notification\n+    * gitlab-plugin\n+    * bitbucket\n+\n+Clouds::\n+    * mock-slave (for prototyping)\n+    * docker\n+    * Nectar-vmware\n+    * operations-center-cloud\n+    * ec2\n+\n+Miscellaneous::\n+    * rebuild\n+    * parameterized-trigger\n+    * build-token-root\n+    * job-dsl\n+    * zentimestamp\n+    * claim\n+    * listSubversionTagsParameterValue\n+    * authorize-project\n+    * customize-build-now\n+    * embeddable-build-status\n+    * groovy-postbuild\n+    * buildtriggerbadge\n+    * build-monitor-plugin\n+    * radiatorview\n+\n+Custom Steps::\n+    * docker-workflow\n+    * credentials-binding\n+    * ssh-agen\n+    * parallel-test-executor\n+    * mailer\n+    * email-ext\n+\n+\n+\n+*Note:* Several plugins available in the Jenkins ecosystem but not actually related to the Pipeline feature set described in this guide also use the terms \"pipeline\" or \"DSL\" in their names. For example:\n+\n+* Build Pipeline plugin - provides a way to execute Jenkins jobs sequentially\n+* Build Flow Plugin - introduces a job type that lets you define an orchestration process as a script. \n+\n+=== More Information\n+As with any Jenkins plugin, you have the option of installing the Pipeline plugin from the Plugins web page at https://wiki.jenkins-ci.org/display/JENKINS/Plugins, but using the Plugin Manager interface is preferred because you do not then have to make allowances for plugin dependencies or compatibility issues.","path":"content/doc/pipeline/index.adoc","position":284,"original_position":284,"commit_id":"104e1a44735350a4043484b827561fe7641862c8","original_commit_id":"104e1a44735350a4043484b827561fe7641862c8","user":{"login":"rtyler","id":26594,"avatar_url":"https://avatars.githubusercontent.com/u/26594?v=3","gravatar_id":"","url":"https://api.github.com/users/rtyler","html_url":"https://github.com/rtyler","followers_url":"https://api.github.com/users/rtyler/followers","following_url":"https://api.github.com/users/rtyler/following{/other_user}","gists_url":"https://api.github.com/users/rtyler/gists{/gist_id}","starred_url":"https://api.github.com/users/rtyler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtyler/subscriptions","organizations_url":"https://api.github.com/users/rtyler/orgs","repos_url":"https://api.github.com/users/rtyler/repos","events_url":"https://api.github.com/users/rtyler/events{/privacy}","received_events_url":"https://api.github.com/users/rtyler/received_events","type":"User","site_admin":false},"body":"\"The Plugins web page\" should be linked, no need for the raw URL","created_at":"2016-03-16T16:02:32Z","updated_at":"2016-03-16T16:02:32Z","html_url":"https://github.com/jenkins-infra/jenkins.io/pull/136#discussion_r56361373","pull_request_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136","_links":{"self":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/comments/56361373"},"html":{"href":"https://github.com/jenkins-infra/jenkins.io/pull/136#discussion_r56361373"},"pull_request":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136"}}},"pull_request":{"url":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136","id":63007626,"html_url":"https://github.com/jenkins-infra/jenkins.io/pull/136","diff_url":"https://github.com/jenkins-infra/jenkins.io/pull/136.diff","patch_url":"https://github.com/jenkins-infra/jenkins.io/pull/136.patch","issue_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/issues/136","number":136,"state":"open","locked":false,"title":"Pipeline getting started docs","user":{"login":"swashbuck1r","id":163845,"avatar_url":"https://avatars.githubusercontent.com/u/163845?v=3","gravatar_id":"","url":"https://api.github.com/users/swashbuck1r","html_url":"https://github.com/swashbuck1r","followers_url":"https://api.github.com/users/swashbuck1r/followers","following_url":"https://api.github.com/users/swashbuck1r/following{/other_user}","gists_url":"https://api.github.com/users/swashbuck1r/gists{/gist_id}","starred_url":"https://api.github.com/users/swashbuck1r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swashbuck1r/subscriptions","organizations_url":"https://api.github.com/users/swashbuck1r/orgs","repos_url":"https://api.github.com/users/swashbuck1r/repos","events_url":"https://api.github.com/users/swashbuck1r/events{/privacy}","received_events_url":"https://api.github.com/users/swashbuck1r/received_events","type":"User","site_admin":false},"body":"Initial Asciidoc conversion of pipeline getting started guide from @PaddyOH.","created_at":"2016-03-16T02:57:12Z","updated_at":"2016-03-16T16:02:32Z","closed_at":null,"merged_at":null,"merge_commit_sha":"905e8982f78e1c71d53e6b1bc35fa1869791412f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136/commits","review_comments_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136/comments","review_comment_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/issues/136/comments","statuses_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/statuses/104e1a44735350a4043484b827561fe7641862c8","head":{"label":"swashbuck1r:pipeline-docs","ref":"pipeline-docs","sha":"104e1a44735350a4043484b827561fe7641862c8","user":{"login":"swashbuck1r","id":163845,"avatar_url":"https://avatars.githubusercontent.com/u/163845?v=3","gravatar_id":"","url":"https://api.github.com/users/swashbuck1r","html_url":"https://github.com/swashbuck1r","followers_url":"https://api.github.com/users/swashbuck1r/followers","following_url":"https://api.github.com/users/swashbuck1r/following{/other_user}","gists_url":"https://api.github.com/users/swashbuck1r/gists{/gist_id}","starred_url":"https://api.github.com/users/swashbuck1r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swashbuck1r/subscriptions","organizations_url":"https://api.github.com/users/swashbuck1r/orgs","repos_url":"https://api.github.com/users/swashbuck1r/repos","events_url":"https://api.github.com/users/swashbuck1r/events{/privacy}","received_events_url":"https://api.github.com/users/swashbuck1r/received_events","type":"User","site_admin":false},"repo":{"id":52469505,"name":"jenkins.io","full_name":"swashbuck1r/jenkins.io","owner":{"login":"swashbuck1r","id":163845,"avatar_url":"https://avatars.githubusercontent.com/u/163845?v=3","gravatar_id":"","url":"https://api.github.com/users/swashbuck1r","html_url":"https://github.com/swashbuck1r","followers_url":"https://api.github.com/users/swashbuck1r/followers","following_url":"https://api.github.com/users/swashbuck1r/following{/other_user}","gists_url":"https://api.github.com/users/swashbuck1r/gists{/gist_id}","starred_url":"https://api.github.com/users/swashbuck1r/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swashbuck1r/subscriptions","organizations_url":"https://api.github.com/users/swashbuck1r/orgs","repos_url":"https://api.github.com/users/swashbuck1r/repos","events_url":"https://api.github.com/users/swashbuck1r/events{/privacy}","received_events_url":"https://api.github.com/users/swashbuck1r/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/swashbuck1r/jenkins.io","description":"A static site for the Jenkins automation server","fork":true,"url":"https://api.github.com/repos/swashbuck1r/jenkins.io","forks_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/forks","keys_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/teams","hooks_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/hooks","issue_events_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/issues/events{/number}","events_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/events","assignees_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/assignees{/user}","branches_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/branches{/branch}","tags_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/tags","blobs_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/statuses/{sha}","languages_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/languages","stargazers_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/stargazers","contributors_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/contributors","subscribers_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/subscribers","subscription_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/subscription","commits_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/contents/{+path}","compare_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/merges","archive_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/downloads","issues_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/issues{/number}","pulls_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/pulls{/number}","milestones_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/milestones{/number}","notifications_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/labels{/name}","releases_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/releases{/id}","deployments_url":"https://api.github.com/repos/swashbuck1r/jenkins.io/deployments","created_at":"2016-02-24T19:42:56Z","updated_at":"2016-02-24T19:42:58Z","pushed_at":"2016-03-16T02:51:52Z","git_url":"git://github.com/swashbuck1r/jenkins.io.git","ssh_url":"git@github.com:swashbuck1r/jenkins.io.git","clone_url":"https://github.com/swashbuck1r/jenkins.io.git","svn_url":"https://github.com/swashbuck1r/jenkins.io","homepage":"https://jenkins-ci.org","size":33868,"stargazers_count":0,"watchers_count":0,"language":"HTML","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":"jenkins-infra:master","ref":"master","sha":"485287bb3de3187829637533176fa0965995169d","user":{"login":"jenkins-infra","id":7422698,"avatar_url":"https://avatars.githubusercontent.com/u/7422698?v=3","gravatar_id":"","url":"https://api.github.com/users/jenkins-infra","html_url":"https://github.com/jenkins-infra","followers_url":"https://api.github.com/users/jenkins-infra/followers","following_url":"https://api.github.com/users/jenkins-infra/following{/other_user}","gists_url":"https://api.github.com/users/jenkins-infra/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkins-infra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkins-infra/subscriptions","organizations_url":"https://api.github.com/users/jenkins-infra/orgs","repos_url":"https://api.github.com/users/jenkins-infra/repos","events_url":"https://api.github.com/users/jenkins-infra/events{/privacy}","received_events_url":"https://api.github.com/users/jenkins-infra/received_events","type":"Organization","site_admin":false},"repo":{"id":44886691,"name":"jenkins.io","full_name":"jenkins-infra/jenkins.io","owner":{"login":"jenkins-infra","id":7422698,"avatar_url":"https://avatars.githubusercontent.com/u/7422698?v=3","gravatar_id":"","url":"https://api.github.com/users/jenkins-infra","html_url":"https://github.com/jenkins-infra","followers_url":"https://api.github.com/users/jenkins-infra/followers","following_url":"https://api.github.com/users/jenkins-infra/following{/other_user}","gists_url":"https://api.github.com/users/jenkins-infra/gists{/gist_id}","starred_url":"https://api.github.com/users/jenkins-infra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jenkins-infra/subscriptions","organizations_url":"https://api.github.com/users/jenkins-infra/orgs","repos_url":"https://api.github.com/users/jenkins-infra/repos","events_url":"https://api.github.com/users/jenkins-infra/events{/privacy}","received_events_url":"https://api.github.com/users/jenkins-infra/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/jenkins-infra/jenkins.io","description":"A static site for the Jenkins automation server","fork":false,"url":"https://api.github.com/repos/jenkins-infra/jenkins.io","forks_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/forks","keys_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/teams","hooks_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/hooks","issue_events_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/issues/events{/number}","events_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/events","assignees_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/assignees{/user}","branches_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/branches{/branch}","tags_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/tags","blobs_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/statuses/{sha}","languages_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/languages","stargazers_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/stargazers","contributors_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/contributors","subscribers_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/subscribers","subscription_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/subscription","commits_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/contents/{+path}","compare_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/merges","archive_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/downloads","issues_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/issues{/number}","pulls_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls{/number}","milestones_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/milestones{/number}","notifications_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/labels{/name}","releases_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/releases{/id}","deployments_url":"https://api.github.com/repos/jenkins-infra/jenkins.io/deployments","created_at":"2015-10-24T22:02:57Z","updated_at":"2016-03-01T19:52:59Z","pushed_at":"2016-03-16T15:03:35Z","git_url":"git://github.com/jenkins-infra/jenkins.io.git","ssh_url":"git@github.com:jenkins-infra/jenkins.io.git","clone_url":"https://github.com/jenkins-infra/jenkins.io.git","svn_url":"https://github.com/jenkins-infra/jenkins.io","homepage":"https://jenkins-ci.org","size":34837,"stargazers_count":12,"watchers_count":12,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":44,"mirror_url":null,"open_issues_count":3,"forks":44,"open_issues":3,"watchers":12,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136"},"html":{"href":"https://github.com/jenkins-infra/jenkins.io/pull/136"},"issue":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/issues/136"},"comments":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/issues/136/comments"},"review_comments":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136/comments"},"review_comment":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/pulls/136/commits"},"statuses":{"href":"https://api.github.com/repos/jenkins-infra/jenkins.io/statuses/104e1a44735350a4043484b827561fe7641862c8"}}}}