{"id":9085,"date":"2019-02-12T13:22:28","date_gmt":"2019-02-12T20:22:28","guid":{"rendered":"https:\/\/www.resilio.com\/blog\/?p=9085"},"modified":"2025-03-03T09:19:34","modified_gmt":"2025-03-03T16:19:34","slug":"resilio-connect-and-jenkins-to-improve-build-delivery","status":"publish","type":"post","link":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery","title":{"rendered":"Fast and Reliable Continuous Integration at Scale Using Resilio Platform &#038; Jenkins for Global CI\/CD"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><b>Why Resilio &amp; Jenkins<\/b><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">Key in reliably delivering software builds and artifacts is a solution that automatically overcomes all possible errors without human intervention. Most systems are prone to failure. You should be certain that your synchronization set-up for CI\/CD is designed for high reliability.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Resilio Platform enables fast and continuous delivery. It combines peer-to-peer, WAN optimization, difference deduplication, real-time folder monitoring, and compression into a single solution, which makes asset and artifact distribution very fast and highly reliable.<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">Connect will keep your jobs running even in case of an IP address change, lack of storage space, reboot and other common obstacles to smooth distribution. Connect also offers granular control over distribution timing and bandwidth consumption per endpoint. Most importantly for an automated CI\/CD environment, Resilio can invoke scripts and applications at any point in the distribution cycle. <\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><b>The cost of downtime and distribution delays is high. Combining Jenkins with Resilio Platform makes critical CI\/CD workflows more resilient and faster.<\/b><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<h4><strong>Transferring&nbsp;artifacts (builds, images, assets) between offices<\/strong><\/h4>\n<\/li><\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">Imagine the build machine is in the cloud or in one of your offices, and you need to deliver artifacts to several offices across the globe. The main issues are usually transfer speed over wide area network (WAN), and the ability to prioritize or limit the bandwidth used by the transfer. Offices can usually download faster than the central office can seed the data. So, ideally, you would have a way to leverage other offices\u2019 bandwidth to deliver the builds faster. You also might need specific rules regarding the distribution to each office, as well as independent policies on build retention and deletion. Connect accelerates and makes more reliable these kinds of transfers.<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<h4><b>Transferring builds within an office<\/b><\/h4>\n<\/li><\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">Imagine you need to distribute builds within the office. While the speed of delivery over the LAN is fast your central server may slow down or become overloaded with concurrent requests from many machines. Sometimes the ability to push builds to machines automatically upon completion can save a lot of time for team members. You want to give users the ability to choose the build they want, and download the build from a local server, remote server or the cloud. Connect enables this and makes it possible to have non-stop operations for CI\/CD.<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<h4><b>Selective download of artifacts by Dev and QA<\/b><\/h4>\n<\/li><\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">Sometimes you need a system to give specific build access to developers and QA as a part of CI\/CD process. You want team members to see all the builds, choose the specific build that is interesting to them, and download it. With Connect your sync software can detect the build location, whether a peer, local server, remote server or cloud, and provide the team member with the best source automatically. This eliminates the need of specific users to choose between build locations.<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n<h4><b>Push builds to virtual or physical machines globally<\/b><\/h4>\n<\/li><\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">In most automated test environments, the download isn\u2019t initiated by a user. Instead, the system needs to push a build to machines and trigger automated testing. Maximum reliability is essential in fully automated deployments and Connect provides that for a resilient CI\/CD. In addition, Resilio Platform can also trigger the installation and start the test upon file delivery. <\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">An Automated Continuous Distribution Example<\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">We\u2019re going to show you how to use Connect and Jenkins together to build an automated distribution workflow. <\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400;\">In the example you will distribute an executable from a source machine to a group of destination machines. This simple Resilio Platform job will:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Take a build (hello.exe) from the source machine<\/span><\/li><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Distribute it to a group of destination machines<\/span><\/li><li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Start the binary of hello.exe when it is delivered to a machine<\/span><\/li><\/ul>\n\n\n\n<p><span style=\"font-weight: 400;\">The following examples assume you have Resilio Platform installed in each development machine, including any local or cloud virtual machines that have Jenkins installed and have access to a command line interpreter (shell) on the source machine.&nbsp;<\/span><span style=\"font-weight: 400;\">For more info visit&nbsp;<\/span><a href=\"https:\/\/www.resilio.com\/connect\/\"><span style=\"font-weight: 400;\">https:\/\/www.resilio.com\/connect\/<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/jenkins.io\/\"><span style=\"font-weight: 400;\">https:\/\/jenkins.io\/<\/span><\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Configure Resilio Platform Distribution Job for Jenkins<\/strong><\/h2>\n\n\n\n<p><strong>1)<\/strong> <span style=\"font-weight: 400;\">Install and start Resilio Platform Management Console. Then install &nbsp;one agent on the build server (this agent will be the source) and other agents, on one or more different endpoints, as the destinations for artifacts. <\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/1-2.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"994\" height=\"412\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/1-2.png\" alt=\"Resilio Platform agents view\" class=\"wp-image-9088\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/1-2.png 994w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/1-2-300x124.png 300w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/1-2-768x318.png 768w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/a><\/figure>\n\n\n\n<p><strong>2)<\/strong>&nbsp;<span style=\"font-weight: 400;\">Now let\u2019s create a new Distribution job to allow Resilio Platform to take build artifacts from the desired folder on our build server and distribute it to our destination agents.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/5.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"767\" height=\"223\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/5.png\" alt=\"\" class=\"wp-image-9092\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/5.png 767w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/5-300x87.png 300w\" sizes=\"auto, (max-width: 767px) 100vw, 767px\" \/><\/a><\/figure>\n\n\n\n<p><strong>3)&nbsp;<\/strong><span style=\"font-weight: 400;\">First, choose <span style=\"text-decoration: underline;\">Distribution<\/span> as a job type. Then, on step 2, specify job name and description (optional). Click Next to proceed to the next step.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/job-type.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"677\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/job-type.png\" alt=\"\" class=\"wp-image-9121\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/job-type.png 890w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/job-type-300x228.png 300w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/job-type-768x584.png 768w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/a><\/figure>\n\n\n\n<p><strong>4)<\/strong>&nbsp;<span style=\"font-weight: 400;\">Let\u2019s choose \u201cBuilder\u201d as our Source agent and specify the path to the build-artifacts directory.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/6.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"676\" height=\"402\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/6.png\" alt=\"\" class=\"wp-image-9093\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/6.png 676w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/6-300x178.png 300w\" sizes=\"auto, (max-width: 676px) 100vw, 676px\" \/><\/a><\/figure>\n\n\n\n<p><strong>5)<\/strong> <span style=\"font-weight: 400;\">In this step we will choose our destination agents (for simplicity, we will group them). To do so, let\u2019s create a new group and name it \u201cHello world build delivery DST\u201d, then add the destination agents to this group. Now, we\u2019ll save this group and select it as our Destination. In this example, we leave the path as is (this is the path to the directory that will store the files). Click Next to move to the next step. &nbsp;&nbsp;<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/create-new-group-2.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"626\" height=\"231\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/create-new-group-2.png\" alt=\"\" class=\"wp-image-9120\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/create-new-group-2.png 626w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/create-new-group-2-300x111.png 300w\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/new-grp-modal-1.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"681\" height=\"403\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/new-grp-modal-1.png\" alt=\"\" class=\"wp-image-9122\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/new-grp-modal-1.png 681w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/new-grp-modal-1-300x178.png 300w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/7.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"626\" height=\"462\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/7.png\" alt=\"\" class=\"wp-image-9094\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/7.png 626w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/7-300x221.png 300w\" sizes=\"auto, (max-width: 626px) 100vw, 626px\" \/><\/a><\/figure>\n\n\n\n<p><strong>6)<\/strong>&nbsp;<span style=\"font-weight: 400;\">On this step we will specify a trigger that will run the build binary (hello.exe) on all destination machines, as soon as they complete downloading of the build.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/9.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"712\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/9.png\" alt=\"\" class=\"wp-image-9096\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/9.png 826w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/9-300x259.png 300w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/9-768x662.png 768w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><\/a><\/figure>\n\n\n\n<p><strong>7)<\/strong>&nbsp;<span style=\"font-weight: 400;\">On the Jon Scheduler step we\u2019ll specify that this job will run manually (later on we\u2019ll configure that this job will be initiated by Jenkins). When done click Next. On the next step we will leave the defaults as is, and go ahead to review the job summary and save it.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/10.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"832\" height=\"331\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/10.png\" alt=\"\" class=\"wp-image-9097\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/10.png 832w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/10-300x119.png 300w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/10-768x306.png 768w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/a><\/figure>\n\n\n\n<p><strong>8)<\/strong>&nbsp;<span style=\"font-weight: 400;\">Now, since we want Jenkins to initiate the job we have just configured, we will create an API token which will allow Jenkins to communicate with Resilio Platform Management Console. To do so, we will configure a new API token on the API Administration page.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/11.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"311\" height=\"218\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/11.png\" alt=\"\" class=\"wp-image-9098\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/11.png 311w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/11-300x210.png 300w\" sizes=\"auto, (max-width: 311px) 100vw, 311px\" \/><\/a><\/figure>\n\n\n\n<p><strong>9)<\/strong> <span style=\"font-weight: 400;\">On the API Administration page click on &nbsp;Create New Token button and specify a name for the token, then click the Save button to save.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/12.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"406\" height=\"243\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/12.png\" alt=\"\" class=\"wp-image-9099\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/12.png 406w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/12-300x180.png 300w\" sizes=\"auto, (max-width: 406px) 100vw, 406px\" \/><\/a><\/figure>\n\n\n\n<p><strong>10)<\/strong>&nbsp;<span style=\"font-weight: 400;\">You should now see the created token. In the next steps we\u2019ll cover how we use this token while configuring the Jenkins build workflow, so this distribution job could be initiated by Jenkins.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/13.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"743\" height=\"230\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/13.png\" alt=\"\" class=\"wp-image-9100\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/13.png 743w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/13-300x93.png 300w\" sizes=\"auto, (max-width: 743px) 100vw, 743px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Execute the Resilio Platform &#8211; Jenkins Distribution Job<\/strong><\/h2>\n\n\n\n<p><span style=\"font-weight: 400;\">We will use the <a href=\"https:\/\/www.resilio.com\/api\/documentation\/#nav-start\">Resilio Platform API<\/a> to execute the Distribution Job we created earlier. Resilio Platform API is RESTfull, so we will use a curl to generate the API call to trigger the distribution job. <\/span><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><span>curl --insecure --header \"Authorization: Token RESILIO_MC_TOKEN\" --header \"Content-Type: application\/json\" \\\n-XPOST https:\/\/127.0.0.1\/api\/v2\/runs -d \"{\\\"JOB_ID\\\": \"1\"}\"\n<\/span><\/pre>\n\n\n\n<p><span style=\"font-weight: 400;\">Where JOB_ID in our case is &#8216;1&#8217; since this is the first job we created. The RESILIO_MC_TOKEN is the token we generated in step 12. Use your Resilio Management Console IP address instead of 127.0.0.1<\/span><\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>You have a couple of options to trigger this job from inside Jenkins CI:<\/strong><\/h4>\n\n\n\n<p><span style=\"font-weight: 400;\"><strong>1)<\/strong> Specify this step as the last step of your build script<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/14-1.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"929\" height=\"548\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/14-1.png\" alt=\"\" class=\"wp-image-9108\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/14-1.png 929w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/14-1-300x177.png 300w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/14-1-768x453.png 768w\" sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><\/a><\/figure>\n\n\n\n<p><span style=\"font-weight: 400;\">Save it and it\u2019s ready to be run. RESILIO_MC_TOKEN env var must be injected into the build process in Jenkins in this case.<\/span><\/p>\n\n\n\n<p><strong>Or,<\/strong><\/p>\n\n\n\n<p><strong>2)<\/strong><span style=\"font-weight: 400;\"> Create additional distribution step in Jenkins workflow and specify it as a post build step in your workflow.<\/span><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/16-1.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"914\" height=\"425\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/16-1.png\" alt=\"\" class=\"wp-image-9110\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/16-1.png 914w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/16-1-300x139.png 300w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/16-1-768x357.png 768w\" sizes=\"auto, (max-width: 914px) 100vw, 914px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/15-1.png\" data-rel=\"lightbox-gallery-ia3lbJdo\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"477\" src=\"https:\/\/getsynccom.wpengine.com\/wp-content\/uploads\/2019\/02\/15-1-1024x477.png\" alt=\"\" class=\"wp-image-9109\" srcset=\"https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/15-1-1024x477.png 1024w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/15-1-300x140.png 300w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/15-1-768x358.png 768w, https:\/\/getsynccom.wpenginepowered.com\/wp-content\/uploads\/2019\/02\/15-1.png 1498w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Now, all that is left is to start a build process in Jenkins and Connect will seamlessly take care of the builds distribution to all of the machines you&#8217;ve specified as Destinations.<\/p>\n\n\n\n<p>You can at any time go back to the Connect Management Console to modify the job, view extensive reports about current and past events, review logs of trigger execution and much more.<\/p>\n\n\n\n<p>For more info, visit <a href=\"https:\/\/www.resilio.com\/connect\/\" target=\"_blank\" rel=\"noopener noreferrer\">Resilio Connect<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Key in reliably delivering software builds and artifacts is a solution that automatically overcomes all possible errors without human intervention. Most systems are prone to failure. You should be certain that your synchronization set-up for CI\/CD is designed for high reliability.<\/p>\n","protected":false},"author":54,"featured_media":9104,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[194,4,233],"tags":[201,116,158,73,187,291],"class_list":["post-9085","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops_itops","category-tech","category-videogames","tag-cicd","tag-developers","tag-featured-tertiary","tag-how-to","tag-resilio-connect","tag-written-by-kos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Fast and Reliable Continuous Integration at Scale Using Resilio Platform &amp; Jenkins for Global CI\/CD | Resilio Blog<\/title>\n<meta name=\"description\" content=\"The cost of downtime is high. Combining Jenkins with Connect makes critical CI\/CD workflows more resilient by improving deployment speed and reliability.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fast and Reliable Continuous Integration at Scale Using Resilio Platform &amp; Jenkins for Global CI\/CD | Resilio Blog\" \/>\n<meta property=\"og:description\" content=\"The cost of downtime is high. Combining Jenkins with Connect makes critical CI\/CD workflows more resilient by improving deployment speed and reliability.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery\" \/>\n<meta property=\"og:site_name\" content=\"Resilio Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-12T20:22:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-03T16:19:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Konstantin Lissounov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Konstantin Lissounov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery\"},\"author\":{\"name\":\"Konstantin Lissounov\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/#\/schema\/person\/27b138f12cffb70bce0ab1b59d1389c8\"},\"headline\":\"Fast and Reliable Continuous Integration at Scale Using Resilio Platform &#038; Jenkins for Global CI\/CD\",\"datePublished\":\"2019-02-12T20:22:28+00:00\",\"dateModified\":\"2025-03-03T16:19:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery\"},\"wordCount\":1301,\"publisher\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg\",\"keywords\":[\"CICD\",\"Developers\",\"Featured-tertiary\",\"How To\",\"Resilio Connect\",\"written by kos\"],\"articleSection\":[\"DevOps &amp; ITOps\",\"Tech\",\"Video Games Dev\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery\",\"url\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery\",\"name\":\"Fast and Reliable Continuous Integration at Scale Using Resilio Platform & Jenkins for Global CI\/CD | Resilio Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg\",\"datePublished\":\"2019-02-12T20:22:28+00:00\",\"dateModified\":\"2025-03-03T16:19:34+00:00\",\"description\":\"The cost of downtime is high. Combining Jenkins with Connect makes critical CI\/CD workflows more resilient by improving deployment speed and reliability.\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage\",\"url\":\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg\",\"contentUrl\":\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg\",\"width\":1200,\"height\":628,\"caption\":\"How to use Connect and Jenkins to improve software build delivery across your organization\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.resilio.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fast and Reliable Continuous Integration at Scale Using Resilio Platform &#038; Jenkins for Global CI\/CD\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/#website\",\"url\":\"https:\/\/blog.resilio.com\/blog\/\",\"name\":\"Resilio Blog\",\"description\":\"Explore Common Use cases, How to&#039;s, Comparisons &amp; More\",\"publisher\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.resilio.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/#organization\",\"name\":\"Resilio\",\"url\":\"https:\/\/blog.resilio.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2024\/05\/cropped-resilio-icon-digital-navy-background.png\",\"contentUrl\":\"https:\/\/blog.resilio.com\/wp-content\/uploads\/2024\/05\/cropped-resilio-icon-digital-navy-background.png\",\"width\":512,\"height\":512,\"caption\":\"Resilio\"},\"image\":{\"@id\":\"https:\/\/blog.resilio.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/resilio-inc.\",\"https:\/\/youtube.com\/resilio\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/#\/schema\/person\/27b138f12cffb70bce0ab1b59d1389c8\",\"name\":\"Konstantin Lissounov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.resilio.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6715f7613c89e38c038e855637eb94bea0f8f6c7b4fa034fd4f85ec1a5ce2d88?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6715f7613c89e38c038e855637eb94bea0f8f6c7b4fa034fd4f85ec1a5ce2d88?s=96&d=mm&r=g\",\"caption\":\"Konstantin Lissounov\"},\"sameAs\":[\"http:\/\/Use%20this%20user%20as%20author%20when%20assigning%20posts%20to%20Kos\"],\"url\":\"https:\/\/blog.resilio.com\/blog\/author\/konstantin-lissounov\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fast and Reliable Continuous Integration at Scale Using Resilio Platform & Jenkins for Global CI\/CD | Resilio Blog","description":"The cost of downtime is high. Combining Jenkins with Connect makes critical CI\/CD workflows more resilient by improving deployment speed and reliability.","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:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery","og_locale":"en_US","og_type":"article","og_title":"Fast and Reliable Continuous Integration at Scale Using Resilio Platform & Jenkins for Global CI\/CD | Resilio Blog","og_description":"The cost of downtime is high. Combining Jenkins with Connect makes critical CI\/CD workflows more resilient by improving deployment speed and reliability.","og_url":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery","og_site_name":"Resilio Blog","article_published_time":"2019-02-12T20:22:28+00:00","article_modified_time":"2025-03-03T16:19:34+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg","type":"image\/jpeg"}],"author":"Konstantin Lissounov","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Konstantin Lissounov","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#article","isPartOf":{"@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery"},"author":{"name":"Konstantin Lissounov","@id":"https:\/\/blog.resilio.com\/blog\/#\/schema\/person\/27b138f12cffb70bce0ab1b59d1389c8"},"headline":"Fast and Reliable Continuous Integration at Scale Using Resilio Platform &#038; Jenkins for Global CI\/CD","datePublished":"2019-02-12T20:22:28+00:00","dateModified":"2025-03-03T16:19:34+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery"},"wordCount":1301,"publisher":{"@id":"https:\/\/blog.resilio.com\/blog\/#organization"},"image":{"@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage"},"thumbnailUrl":"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg","keywords":["CICD","Developers","Featured-tertiary","How To","Resilio Connect","written by kos"],"articleSection":["DevOps &amp; ITOps","Tech","Video Games Dev"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery","url":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery","name":"Fast and Reliable Continuous Integration at Scale Using Resilio Platform & Jenkins for Global CI\/CD | Resilio Blog","isPartOf":{"@id":"https:\/\/blog.resilio.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage"},"image":{"@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage"},"thumbnailUrl":"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg","datePublished":"2019-02-12T20:22:28+00:00","dateModified":"2025-03-03T16:19:34+00:00","description":"The cost of downtime is high. Combining Jenkins with Connect makes critical CI\/CD workflows more resilient by improving deployment speed and reliability.","breadcrumb":{"@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#primaryimage","url":"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg","contentUrl":"https:\/\/blog.resilio.com\/wp-content\/uploads\/2019\/02\/connect-n-jenkins.jpg","width":1200,"height":628,"caption":"How to use Connect and Jenkins to improve software build delivery across your organization"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.resilio.com\/blog\/resilio-connect-and-jenkins-to-improve-build-delivery#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.resilio.com\/blog"},{"@type":"ListItem","position":2,"name":"Fast and Reliable Continuous Integration at Scale Using Resilio Platform &#038; Jenkins for Global CI\/CD"}]},{"@type":"WebSite","@id":"https:\/\/blog.resilio.com\/blog\/#website","url":"https:\/\/blog.resilio.com\/blog\/","name":"Resilio Blog","description":"Explore Common Use cases, How to&#039;s, Comparisons &amp; More","publisher":{"@id":"https:\/\/blog.resilio.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.resilio.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blog.resilio.com\/blog\/#organization","name":"Resilio","url":"https:\/\/blog.resilio.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.resilio.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/blog.resilio.com\/wp-content\/uploads\/2024\/05\/cropped-resilio-icon-digital-navy-background.png","contentUrl":"https:\/\/blog.resilio.com\/wp-content\/uploads\/2024\/05\/cropped-resilio-icon-digital-navy-background.png","width":512,"height":512,"caption":"Resilio"},"image":{"@id":"https:\/\/blog.resilio.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/resilio-inc.","https:\/\/youtube.com\/resilio"]},{"@type":"Person","@id":"https:\/\/blog.resilio.com\/blog\/#\/schema\/person\/27b138f12cffb70bce0ab1b59d1389c8","name":"Konstantin Lissounov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.resilio.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6715f7613c89e38c038e855637eb94bea0f8f6c7b4fa034fd4f85ec1a5ce2d88?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6715f7613c89e38c038e855637eb94bea0f8f6c7b4fa034fd4f85ec1a5ce2d88?s=96&d=mm&r=g","caption":"Konstantin Lissounov"},"sameAs":["http:\/\/Use%20this%20user%20as%20author%20when%20assigning%20posts%20to%20Kos"],"url":"https:\/\/blog.resilio.com\/blog\/author\/konstantin-lissounov"}]}},"_links":{"self":[{"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/posts\/9085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/users\/54"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/comments?post=9085"}],"version-history":[{"count":0,"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/posts\/9085\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/media\/9104"}],"wp:attachment":[{"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/media?parent=9085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/categories?post=9085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.resilio.com\/blog\/wp-json\/wp\/v2\/tags?post=9085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}