{"id":29647,"date":"2017-12-19T23:44:24","date_gmt":"2017-12-19T20:44:24","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=29647"},"modified":"2018-08-01T17:22:29","modified_gmt":"2018-08-01T14:22:29","slug":"hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/","title":{"rendered":"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#Why_use_Jenkins_on_Pivotal_CF\" >Why use Jenkins on Pivotal CF?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#An_ecosystem_of_Jenkins_plugins\" >An ecosystem of Jenkins plugins<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#Underrated_plugins_for_Jenkins\" >Underrated plugins for Jenkins<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#Containers_of_choice\" >Containers of choice<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Why_use_Jenkins_on_Pivotal_CF\"><\/span>Why use Jenkins on Pivotal CF?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.jenkins.io\/\" rel=\"noopener\" target=\"_blank\">Jenkins<\/a> is one of the many solutions developers use for continuous integration and continuous delivery (CI\/CD). At the SpringOne Platform convention 2017, <a href=\"https:\/\/github.com\/infra-red\" rel=\"noopener\" target=\"_blank\">Andrei Krasnitski<\/a> of Altoros gave attendees <a href=\"https:\/\/springone.io\/2021\/sessions\/continuous-integration-and-deployment-with-jenkins-for-pcf\" rel=\"noopener\" target=\"_blank\">insights<\/a> into which of the plugins for Jenkins are underrated by developers.<\/p>\n<p>Firstly, Andrei listed a few reasons why using Jenkins at all. In addition to the ease of use \/ installation \/ setup, Jenkins provides support for all environments, has <a href=\"https:\/\/www.jenkins.io\/doc\/\" rel=\"noopener\" target=\"_blank\">extensive documentation<\/a> and tutorials, requires low input threshold, and is highly customizable.<\/p>\n<p>With Jenkins, users can implement their own features within their own Jenkins files, which are then made available to other Jenkins users. This simplifies troubleshooting as developers can just share solutions to problems.<\/p>\n<p>\u201cIf you need help with a difficult step and know that someone from your team has already solved the problem, you just need to import the function, and you can use it in your own pipeline file,\u201d explained Andrei.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-29649\" \/><\/a><\/center><\/p>\n<blockquote><p><em>&#8220;When you start your CI\/CD journey, you need to understand that the process is more complicated than just build, test, and deploy.&#8221; \u2014Andrei Krasnitski<\/em><\/p><\/blockquote>\n<p>By storing pipeline code in a shared repository like GitHub, disaster recovery is as simple as going back to a previous build. This also enables developers to easily track changes made to the code, as well as who made them.<\/p>\n<p>Though <a href=\"https:\/\/www.altoros.com\/blog\/8-pro-tips-for-using-concourse-ci-with-cloud-foundry\/\">Concourse<\/a> is a great CI\/CD tool built specifically for Cloud Foundry, Jenkins is still a solution of choice for many developers who are used to working with it. The good news is that it can be enabled by simply using <a href=\"https:\/\/tanzu.vmware.com\/services-marketplace\/devops-tooling\/altoros-jenkins\">this PCF tile<\/a>. All you need is \u201cdownload the tile from the Pivotal Network, import it to the PCF Ops Manager, and then click to apply changes,\u201d noted Andrei.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"An_ecosystem_of_Jenkins_plugins\"><\/span>An ecosystem of Jenkins plugins<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>At large, the ease of customization provided by Jenkins comes through its <a href=\"https:\/\/plugins.jenkins.io\/\" rel=\"noopener\" target=\"_blank\">eloquent ecosystem<\/a> of 1,000+ plugins. A substantial part of the tool&#8217;s core functionality &#8220;is written in terms of extensions&#8221; and can be enhanced by plugins.<\/p>\n<p>The Jenkins documentation exemplifies the following extension points:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">Implementation of software configuration management systems like Git or Subversion<\/li>\n<li style=\"margin-bottom: 6px;\">Build steps, furnishing a users with anything necessary from a UI for configuring tools to a preferable means of sending e-mails<\/li>\n<li>Authentication modules\u2014ensuring integration with single sign-on systems or external user directories (e.g., LDAP or Active Directory)<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/springone-platform-conference-2017-enabling-continuous-integration-on-pivotal-cloud-foundry-jenkins.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/springone-platform-conference-2017-enabling-continuous-integration-on-pivotal-cloud-foundry-jenkins-1024x678.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-29753\" \/><\/a><\/center><\/p>\n<blockquote><p><em>\u201cJenkins is easy to customize. You can create your own plugin if you have basic experience in Java and install this plugin with a couple of clicks using the Jenkins web UI.\u201d<br \/>\n\u2014Andrei Krasnitski<\/em><\/p><\/blockquote>\n<p>Surely, the list is by no means exhaustive. <a href=\"https:\/\/www.jenkins.io\/doc\/developer\/tutorial\/\" rel=\"noopener\" target=\"_blank\">This tutorial<\/a> and <a href=\"https:\/\/wiki.jenkins.io\/display\/JENKINS\/Extend+Jenkins\" rel=\"noopener\" target=\"_blank\">this wiki<\/a> shed more light on how to create a Jenkins plugin of your own.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Underrated_plugins_for_Jenkins\"><\/span>Underrated plugins for Jenkins<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>After that, Andrei brought up some non-standard Jenkins features that come as plugins and are useful for development.<\/p>\n<p>E.g., <a href=\"https:\/\/www.jenkins.io\/doc\/book\/pipeline\/getting-started\/#snippet-generator\" rel=\"noopener\" target=\"_blank\">Snippet Generator<\/a> is a tool within Jenkins that enables users to generate code for individual steps and discover steps provided by plugins. Snippet Generator also helps users to experiment with particular steps by using different parameters.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Snippet-Generator.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Snippet-Generator.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-29651\" \/><\/a><small>Snippet Generator view on the Jenkins web UI<\/small><\/center><\/p>\n<p>Another example of Jenkins&#8217;s neglected feature is <a href=\"https:\/\/www.jenkins.io\/doc\/book\/blueocean\/\" rel=\"noopener\" target=\"_blank\">Blue Ocean<\/a>. It is a visual editor that allows for modifying pipelines as code. Blue Ocean has native integration for branch and pull requests. It also shows which portion of the pipeline needs fixing in case of errors.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Blue-Ocean.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Blue-Ocean.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-29652\" \/><\/a><small>Blue Ocean view on the Jenkins web UI<\/small><\/center><\/p>\n<p>Other than Blue Ocean, Jenkins also has additional solutions for debugging pipeline code. One of these tools is <a href=\"https:\/\/www.jenkins.io\/doc\/book\/pipeline\/development\/#linter\" rel=\"noopener\" target=\"_blank\">Command-line Pipeline Linter<\/a>, which allows developers to check and validate pipeline files. Jenkins also has the <a href=\"https:\/\/www.jenkins.io\/doc\/book\/pipeline\/development\/#replay\" rel=\"noopener\" target=\"_blank\">Replay function<\/a> for editing the pipeline after a build failure.<\/p>\n<p>Jenkins has also been updated to include <a href=\"https:\/\/www.jenkins.io\/doc\/book\/pipeline\/multibranch\/#creating-a-multibranch-pipeline\" rel=\"noopener\" target=\"_blank\">Multibranch Pipeline<\/a> capability. \u201cThe multibranch workflow automatically takes the pipeline files from the old branch available in the repo and creates a separate test for each of the branches,\u201d explained Andrei. \u201cYou don\u2019t need to configure each of the new branches separately in the new Jenkins.\u201d<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-v3.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-v3.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-29655\" \/><\/a><small>Andrei Krasnitski at the SpringOne Platform convention<\/small><\/center><\/p>\n<p>This is complemented by the <a href=\"https:\/\/www.jenkins.io\/doc\/book\/pipeline\/multibranch\/#organization-folders\" rel=\"noopener\" target=\"_blank\">Organization Folders<\/a> feature, which makes Jenkins monitor a GitHub organization and automate pull requests.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Containers_of_choice\"><\/span>Containers of choice<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>According to Andrei, the three most common containers used in conjunction with Jenkins are Docker, <a href=\"https:\/\/www.altoros.com\/blog\/not-only-for-cloud-foundry-kubo-enables-kubernetes-deployments-with-bosh\/\">Kubernetes<\/a>, and Apache Mesos. Using containers, resources such as CPU and memory can be isolated and configured based on priority. More importantly, each build automatically creates its own container.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Docker.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Docker.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-29673\" \/><\/a><small>Docker files used as Jenkins slaves<\/small><\/center><\/p>\n<p>Of the three containers, Docker is probably the preferred option\u2014due to its ease of use. &#8220;If you need a tool to be available during your build process, you just need to modify your Docker file,&#8221; explained Andrei. &#8220;You need to add a couple of lines to install your favorite Ruby, Python, or Go version.&#8221;<\/p>\n<p>For users working with Docker, <a href=\"https:\/\/tanzu.vmware.com\/services-marketplace\/devops-tooling\/altoros-jenkins\" rel=\"noopener\" target=\"_blank\">this tile for PCF<\/a> automates Jenkins follower provisioning, as well as resolves high availability issues through BOSH deployments. In addition to integrated monitoring and logging, the Jenkins tile also allows users to choose when to upgrade and what versions of software should be used when the new instances are created.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Altoros-Tile.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD-Altoros-Tile.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-29705\" \/><\/a><small>The workflow of the Jenkins tile for PCF (<a href=\"https:\/\/tanzu.vmware.com\/services-marketplace\/devops-tooling\/altoros-jenkins\" rel=\"noopener\" target=\"_blank\">Source<\/a>)<\/small><\/center><\/p>\n<p>In a nutshell, the Jenkins tile for PCF allows for:<\/p>\n<ul>\n<li>Bootstrapping new Jenkins followers, already preconfigured to work with a Jenkins master<\/li>\n<li>Enhancing release engineering through automated CI\/CD<\/li>\n<li>Resolving HA issues in default Jenkins installations via BOSH deployments<\/li>\n<\/ul>\n<p>To learn more about the tile, check out <a href=\"https:\/\/docs.pivotal.io\/partners\/altoros-jenkins\/index.html\" rel=\"noopener\" target=\"_blank\">its documentation<\/a>. For other container options than Docker, explore <a href=\"https:\/\/plugins.jenkins.io\/kubernetes\/\" rel=\"noopener\" target=\"_blank\">a Kubernetes plugin<\/a> or <a href=\"https:\/\/plugins.jenkins.io\/mesos\/\" rel=\"noopener\" target=\"_blank\">a Mesos plugin<\/a> for Jenkins.<\/p>\n<p>During his presentation, Andrei demonstrated many of the Jenkins tools mentioned above.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table width=\"100%\">\n<tbody>\n<tr>\n<td class=\"video-display-mobile\">\n<div style=\"float:right; width:50%; padding-left:15px; font-size:14px;\">\n<strong>Table of contents<\/strong><\/p>\n<ol>\n<li style=\"margin-bottom: 8px;\">Why use Jenkins? (2:01)<\/li>\n<li style=\"margin-bottom: 8px;\">Useful out-of-the-box features (4:11)<\/li>\n<li style=\"margin-bottom: 8px;\">How can Jenkins improve CI\/CD? (5:26)<\/li>\n<li style=\"margin-bottom: 8px;\">Demo: Snippet Generator (7:30)<\/li>\n<li style=\"margin-bottom: 8px;\">Demo: Blue Ocean (10:57)<\/li>\n<li style=\"margin-bottom: 8px;\">Demo: Command-line Pipeline Linter (13:52)<\/li>\n<li style=\"margin-bottom: 8px;\">Demo: The replay function (14:58)<\/li>\n<li style=\"margin-bottom: 8px;\">Working with multiple development branches (16:04)<\/li>\n<li>Containers that work with Jenkins (18:19)<\/li>\n<\/ol>\n<\/div>\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"Continuous Integration and Deployment with Jenkins for PCF - Andrei Krasnitski, Altoros\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/LaVmOaVf-zc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/wRbaWOuBCtE20z\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/the-ecosystem-of-pcf-tiles-easier-deployment-and-upgrades\/\">The Ecosystem of PCF Tiles: Easier Deployment and Upgrades<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/how-to-install-jenkins-ci-on-cloud-foundry-for-continuous-delivery\/\">How to Install Jenkins CI on Cloud Foundry for Continuous Delivery<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/09\/Andrei-Krasnitski-altoros-bio.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/09\/Andrei-Krasnitski-altoros-bio.png\" alt=\"Andrei Krasnitski, altoros bio\" width=\"120\" class=\"aligncenter size-full wp-image-27894\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><strong>Andrei Krasnitski<\/strong> is Cloud Foundry Engineer at Altoros. He has 3+ years of experience in building CI\/CD pipelines and automating clouds. Andrei has participated in building a private cloud for one of the largest US-based IT service providers. Today, he is creating and supporting Cloud Foundry environments for the enterprise customers of Altoros.<\/small><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<hr>\n<p><center><small>This post was written by <a href=\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\">Carlo Gutierrez<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/sophie-turol\/\">Sophie Turol<\/a><br \/>\nwith assistance from <a href=\"https:\/\/github.com\/infra-red\" rel=\"noopener\" target=\"_blank\">Andrei Krasnitski<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak.<\/small><\/center> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Why use Jenkins on Pivotal CF?<\/p>\n<p>Jenkins is one of the many solutions developers use for continuous integration and continuous delivery (CI\/CD). At the SpringOne Platform convention 2017, Andrei Krasnitski of Altoros gave attendees insights into which of the plugins for Jenkins are underrated by developers.<\/p>\n<p>Firstly, Andrei listed a few reasons [&#8230;]<\/p>\n","protected":false},"author":130,"featured_media":29662,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[911,873,28],"class_list":["post-29647","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-ci-cd","tag-cloud-native","tag-pivotal-cf"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry | Altoros<\/title>\n<meta name=\"description\" content=\"This blog post explores &#039;underestimated&#039; features in Jenkins, such as plugins for generating, editing, and debugging code.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry | Altoros\" \/>\n<meta property=\"og:description\" content=\"Why use Jenkins on Pivotal CF? Jenkins is one of the many solutions developers use for continuous integration and continuous delivery (CI\/CD). At the SpringOne Platform convention 2017, Andrei Krasnitski of Altoros gave attendees insights into which of the plugins for Jenkins are underrated by developers. Firstly, Andrei listed a few reasons [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-19T20:44:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-01T14:22:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Andrei Krasnitski\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrei Krasnitski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/\",\"name\":\"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif\",\"datePublished\":\"2017-12-19T20:44:24+00:00\",\"dateModified\":\"2018-08-01T14:22:29+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db\",\"name\":\"Andrei Krasnitski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg\",\"caption\":\"Andrei Krasnitski\"},\"description\":\"Andrei Krasnitski is a Cloud Foundry Engineer at Altoros. He has 5+ years of experience in cloud infrastructures and platforms automation, enterprise-level service integrations, and cloud environment troubleshooting. Andrei is building and supporting Cloud Foundry environments for Altoros\u2019s enterprise customers.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/andrei-krasnitski\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry | Altoros","description":"This blog post explores 'underestimated' features in Jenkins, such as plugins for generating, editing, and debugging code.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/","og_locale":"en_US","og_type":"article","og_title":"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry | Altoros","og_description":"Why use Jenkins on Pivotal CF? Jenkins is one of the many solutions developers use for continuous integration and continuous delivery (CI\/CD). At the SpringOne Platform convention 2017, Andrei Krasnitski of Altoros gave attendees insights into which of the plugins for Jenkins are underrated by developers. Firstly, Andrei listed a few reasons [...]","og_url":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/","og_site_name":"Altoros","article_published_time":"2017-12-19T20:44:24+00:00","article_modified_time":"2018-08-01T14:22:29+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif","type":"image\/gif"}],"author":"Andrei Krasnitski","twitter_misc":{"Written by":"Andrei Krasnitski","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/","url":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/","name":"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif","datePublished":"2017-12-19T20:44:24+00:00","dateModified":"2018-08-01T14:22:29+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/12\/Andrei-Krasnitski-SpringOne-Platform-Pivotal-PCF-Jenkins-CICD.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/hidden-tricks-of-jenkins-to-bolster-continuous-integration-on-pivotal-cloud-foundry\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hidden Tricks of Jenkins to Bolster Continuous Integration on Pivotal Cloud Foundry"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/6892b9fdca5c24cb7b47ac7b077382db","name":"Andrei Krasnitski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/02\/andrei-krasnitski-150x150.jpg","caption":"Andrei Krasnitski"},"description":"Andrei Krasnitski is a Cloud Foundry Engineer at Altoros. He has 5+ years of experience in cloud infrastructures and platforms automation, enterprise-level service integrations, and cloud environment troubleshooting. Andrei is building and supporting Cloud Foundry environments for Altoros\u2019s enterprise customers.","url":"https:\/\/www.altoros.com\/blog\/author\/andrei-krasnitski\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/29647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/130"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=29647"}],"version-history":[{"count":101,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/29647\/revisions"}],"predecessor-version":[{"id":34698,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/29647\/revisions\/34698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/29662"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=29647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=29647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=29647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}