{"id":9009,"date":"2016-03-15T19:00:23","date_gmt":"2016-03-15T16:00:23","guid":{"rendered":"http:\/\/blog.altoros.com\/?p=9009"},"modified":"2024-08-27T06:43:21","modified_gmt":"2024-08-27T03:43:21","slug":"continuous-integration-and-continuous-delivery-in-ibm-bluemix","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/","title":{"rendered":"Continuous Integration and Continuous Delivery in IBM Bluemix"},"content":{"rendered":"<p><a href=\"https:\/\/www.ibm.com\/cloud\/solutions\/open-architecture\" target=\"_blank\" rel=\"noopener noreferrer\">IBM Bluemix<\/a> provides several services based on Platform-as-a-Service (PaaS) powered by Cloud Foundry, containers, and VMs. In this post, I\u2019ll show you how to configure continuous integration (CI) and continuous delivery (CD) in IBM Bluemix using a complex Node.js app as an example.<\/p>\n<p>&nbsp;<\/p>\n<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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#Why_read_this\" >Why read this?<\/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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#Continuous_integration_and_continuous_delivery\" >Continuous integration and continuous delivery<\/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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#Bluemix_DevOps_Services_Node-RED\" >Bluemix + DevOps Services + Node-RED<\/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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#Conclusion\" >Conclusion<\/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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Why_read_this\"><\/span>Why read this?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wouldn\u2019t you like to have your app automatically built, tested, and available online ready for a demo, UAT (User Acceptance Test), or just \u2018ALWAYS\u2019 have a running version somewhere without having to do anything at all? By the end of this article, you\u2019ll have a complex Node.js app automatically built, tested, and deployed.<\/p>\n<p>Our example application will also use Node-RED.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/node-red-internet-of-things.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/node-red-internet-of-things.jpg\" alt=\"node-red-internet-of-things\" width=\"640\" class=\"aligncenter size-full wp-image-9011\" \/><\/a><\/center><\/p>\n<p><a href=\"https:\/\/github.com\/mgarciap\/node-red\" target=\"_blank\" rel=\"noopener noreferrer\">Node-RED<\/a> is a visual tool from IBM for wiring the Internet of Things. It has a few tweaks I\u2019ve initiated to make it PaaS-friendly (retrieve the port number where it should listen from the PORT environment variable).<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Continuous_integration_and_continuous_delivery\"><\/span>Continuous integration and continuous delivery<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>There are dozens of CI\/CD tools out there (Travis, Codeship, Jenkins, etc). I\u2019ll focus on <a href=\"https:\/\/hub.jazz.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">IBM Bluemix DevOps Services<\/a>, which is tightly integrated with Bluemix, making deployments extremely easy.<\/p>\n<p>If you want to understand CI\/CD in a couple of minutes, here is a <a href=\"https:\/\/www.youtube.com\/watch?v=3OHMrr8iz5E\" target=\"_blank\" rel=\"noopener noreferrer\">three-minute video on DevOps Services<\/a>. I also suggest reading <a href=\"https:\/\/www.amazon.com\/Continuous-Delivery-Deployment-Automation-Addison-Wesley\/dp\/0321601912\" rel=\"noopener\" target=\"_blank\">this book<\/a> to get a deeper knowledge about this extremely important agile practice.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Bluemix_DevOps_Services_Node-RED\"><\/span>Bluemix + DevOps Services + Node-RED<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>If you don\u2019t have an account already, <a href=\"https:\/\/cloud.ibm.com\/registration\/\" target=\"_blank\" rel=\"noopener noreferrer\">sign up for free<\/a> in Bluemix. Also, you have to get access to <a href=\"https:\/\/hub.jazz.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">DevOps Services<\/a>.<\/p>\n<p>I went through the required initial steps:<\/p>\n<ol>\n<li>Created a New Project (options are Git from GitHub, Bluemix, or Jazz SCM on Bluemix). I chose GitHub. Then, I authorized the integration and selected my repo (in this case: <a href=\"https:\/\/github.com\/mgarciap\/node-red\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/github.com\/mgarciap\/node-red<\/a>).<\/li>\n<li>Configured <a href=\"https:\/\/hub.jazz.net\/docs\/githubhooks\/#github_hook\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub hooks<\/a> to integrate commits with IBM Bluemix DevOps Services.<\/li>\n<\/ol>\n<p>It is time to configure the pipelines.<\/p>\n<p>Select the project and go to the \u2018Build and Deploy\u2019 menu.<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-build-and-deploy.jpg\" alt=\"ibm-bluemix-devops-services-build-and-deploy\" width=\"640\" class=\"aligncenter size-full wp-image-9015\" \/><\/center><\/p>\n<p>Of course, there won\u2019t be any pipeline\u2019s stages, so go on and create one (you\u2019ll see what the stage definition is on the page). Let\u2019s create a very simple pipeline containing three stages as follows:<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-stages.jpg\" alt=\"ibm-bluemix-devops-services-pipeline-stages\" width=\"640\" class=\"aligncenter size-full wp-image-9016\" \/><\/center><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Stage #1: Continuous integration<\/strong><\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-ci.jpg\" alt=\"ibm-bluemix-devops-services-ci\" width=\"640\" class=\"aligncenter size-full wp-image-9017\" \/><\/center><\/p>\n<p>To keep it simple and as there is no special requirement, I\u2019ll create two steps in one job. Also, I removed one test suite, because it depends on the local file system rights.<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-ci-jobs-1.png\" alt=\"ibm-bluemix-devops-services-ci-jobs (1)\" width=\"640\" class=\"aligncenter size-full wp-image-9019\" \/><\/center><\/p>\n<p>Save and test it, either by pushing something to your repo or manually.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Stage #2: Quality assurance<\/strong><\/p>\n<p>Now, the most interesting part: to automatically deploy the app to Bluemix on every successful build.<\/p>\n<ol>\n<li>Add a new Stage.<\/li>\n<p>\t<center><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-qa.jpg\" alt=\"ibm-bluemix-devops-services-qa\" width=\"621\" height=\"445\" class=\"aligncenter size-full wp-image-9018\" \/><\/center><\/p>\n<li>Add a \u2018Deploy\u2019 job and make sure to select \u2018Cloud Foundry\u2019 as a Deployer Type.<\/li>\n<p>\t<center><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-qa-jobs.jpg\" alt=\"ibm-bluemix-devops-services-qa-jobs\" width=\"531\" height=\"683\" class=\"aligncenter size-full wp-image-9020\" \/><\/center>\n<\/ol>\n<p>A few notes:<\/p>\n<ul>\n<li>It is a good practice to deploy apps to its corresponding <a href=\"https:\/\/docs.cloudfoundry.org\/concepts\/roles.html#spaces\" target=\"_blank\" rel=\"noopener noreferrer\">CF space<\/a>, so go on and create a new one in the same drop-down menu.<\/li>\n<li>I appended \u2018-qa\u2019 to the application name in the Deploy Script, so this name can later be used as the domain name route <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">http:\/\/mg-node-red-qa.mybluemix.net<\/code>.<\/li>\n<\/ul>\n<p>Voila, there you go, deployment is done!<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Stage #3: Production<\/strong><\/p>\n<p>Now, you should be able to create this stage by yourself. In this case, I would suggest you to run this stage manually, for example, after the User Acceptance Tests have finished. Just select \u2018Run jobs only when this stage is run manually\u2019 as the Stage Trigger.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Pipeline overview<\/strong><\/p>\n<p>Here is how my pipeline looks like after creating each stage:<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview.jpg\" alt=\"ibm-bluemix-devops-services-pipeline-overview\" width=\"640\" class=\"aligncenter size-full wp-image-9012\" \/><\/a><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>THE GOOD<\/strong>. IBM Bluemix DevOps Services have a very nice dashboard integrated with other IBM tools and services. It is highly integrated with Bluemix making deployments straightforward. Last but not least, you have full access to the Cloud Foundry CLI right from the Deploy scripts. This brings a lot of power to engineers.<\/p>\n<p><strong>THE BAD<\/strong>. Registration to IBM services is not straightforward and takes time. I would say it is very complicated compared to other competing platforms. Besides, I didn\u2019t find a way to configure pipeline events notifications. There is no way I could know if tests, builds, or deployments are failing. It is important to be aware that these IBM\u2019s CI\/CD tools are only integrated with Bluemix, so you get into a \u2018lock-in\u2019 situation and cannot use them without this platform.<\/p>\n<p>The author&#8217;s rating:<\/p>\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-rating-v2.png\" alt=\"ibm-bluemix-devops-services-rating-v2\" width=\"599\" height=\"259\" class=\"aligncenter size-full wp-image-9035\" \/><\/center><\/p>\n<p><strong>THE BOTTOM LINE<\/strong>. The CI\/CD process is quite easy with Bluemix, and now you can have your app automatically built, tested, and deployed. However, I would also recommend to have a look at solutions such as Codeship, which recently announced <a href=\"https:\/\/documentation.codeship.com\/continuous-deployment\/deployment-to-cloudfoundry\/\" target=\"_blank\" rel=\"noopener noreferrer\">Cloud Foundry integration<\/a>.<\/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\/getting-started-with-ibm-bluemix-deploying-a-sample-ruby-sinatra-app\/\">Getting Started with IBM Bluemix: Deploying a Sample Ruby\/Sinatra App<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/the-ibm-bluemix-object-storage-service-in-ruby-projects\/\">Using IBM Bluemix Object Storage in Ruby Projects<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/demo-building-java-apps-with-bluemix-and-db2\/\">Building Java Apps with IBM Bluemix and DB2<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/how-to-connect-to-xpages-nosql-db-from-the-node-js-runtime-in-bluemix\/\">How to Connect to XPages NoSQL DB from the Node.js Runtime in Bluemix<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>IBM Bluemix provides several services based on Platform-as-a-Service (PaaS) powered by Cloud Foundry, containers, and VMs. In this post, I\u2019ll show you how to configure continuous integration (CI) and continuous delivery (CD) in IBM Bluemix using a complex Node.js app as an example.<\/p>\n<p>&nbsp;<\/p>\n<p>Why read this?<\/p>\n<p>Wouldn\u2019t you like to have your [&#8230;]<\/p>\n","protected":false},"author":77,"featured_media":22769,"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,187],"class_list":["post-9009","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-ci-cd","tag-cloud-native","tag-ibm-bluemix"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Continuous Integration and Continuous Delivery in IBM Bluemix | Altoros<\/title>\n<meta name=\"description\" content=\"This blog post provides a step-by-step tutorial on how to build, test, and automatically deploy a Node.js app in IBM Bluemix.\" \/>\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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Continuous Integration and Continuous Delivery in IBM Bluemix | Altoros\" \/>\n<meta property=\"og:description\" content=\"IBM Bluemix provides several services based on Platform-as-a-Service (PaaS) powered by Cloud Foundry, containers, and VMs. In this post, I\u2019ll show you how to configure continuous integration (CI) and continuous delivery (CD) in IBM Bluemix using a complex Node.js app as an example. &nbsp; Why read this? Wouldn\u2019t you like to have your [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-15T16:00:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-27T03:43:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"982\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Manuel Garc\u00eda\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Manuel Garc\u00eda\" \/>\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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/\",\"name\":\"Continuous Integration and Continuous Delivery in IBM Bluemix | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg\",\"datePublished\":\"2016-03-15T16:00:23+00:00\",\"dateModified\":\"2024-08-27T03:43:21+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/ae64db0b6df3f30f6aca8c340a3b3be2\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg\",\"width\":982,\"height\":450},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Continuous Integration and Continuous Delivery in IBM Bluemix\"}]},{\"@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\/ae64db0b6df3f30f6aca8c340a3b3be2\",\"name\":\"Manuel Garc\u00eda\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Manuel_Garcia.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Manuel_Garcia.jpg\",\"caption\":\"Manuel Garc\u00eda\"},\"description\":\"Manuel Garcia is Director of Operations at Altoros\u2019s office in Santa Fe, Argentina. He is a Cloud Foundry Practice Lead, having 15+ years of experience as a software developer, project manager, and product manager. Manuel is a co-author of the first Cloud Foundry v2 installer for developer evaluation\/learning and a frequent speaker at Cloud Foundry meetups and cloud conferences. Being a Certified Scrum Master and Agile practices advocate, he knows how important it is to put the infrastructure, platforms, and tools at the hand of the developers and not the other way around.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/manuel-garcia\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Continuous Integration and Continuous Delivery in IBM Bluemix | Altoros","description":"This blog post provides a step-by-step tutorial on how to build, test, and automatically deploy a Node.js app in IBM Bluemix.","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\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/","og_locale":"en_US","og_type":"article","og_title":"Continuous Integration and Continuous Delivery in IBM Bluemix | Altoros","og_description":"IBM Bluemix provides several services based on Platform-as-a-Service (PaaS) powered by Cloud Foundry, containers, and VMs. In this post, I\u2019ll show you how to configure continuous integration (CI) and continuous delivery (CD) in IBM Bluemix using a complex Node.js app as an example. &nbsp; Why read this? Wouldn\u2019t you like to have your [...]","og_url":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/","og_site_name":"Altoros","article_published_time":"2016-03-15T16:00:23+00:00","article_modified_time":"2024-08-27T03:43:21+00:00","og_image":[{"width":982,"height":450,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg","type":"image\/jpeg"}],"author":"Manuel Garc\u00eda","twitter_misc":{"Written by":"Manuel Garc\u00eda","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/","url":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/","name":"Continuous Integration and Continuous Delivery in IBM Bluemix | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg","datePublished":"2016-03-15T16:00:23+00:00","dateModified":"2024-08-27T03:43:21+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/ae64db0b6df3f30f6aca8c340a3b3be2"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/ibm-bluemix-devops-services-pipeline-overview1.jpg","width":982,"height":450},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/continuous-integration-and-continuous-delivery-in-ibm-bluemix\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Continuous Integration and Continuous Delivery in IBM Bluemix"}]},{"@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\/ae64db0b6df3f30f6aca8c340a3b3be2","name":"Manuel Garc\u00eda","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Manuel_Garcia.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Manuel_Garcia.jpg","caption":"Manuel Garc\u00eda"},"description":"Manuel Garcia is Director of Operations at Altoros\u2019s office in Santa Fe, Argentina. He is a Cloud Foundry Practice Lead, having 15+ years of experience as a software developer, project manager, and product manager. Manuel is a co-author of the first Cloud Foundry v2 installer for developer evaluation\/learning and a frequent speaker at Cloud Foundry meetups and cloud conferences. Being a Certified Scrum Master and Agile practices advocate, he knows how important it is to put the infrastructure, platforms, and tools at the hand of the developers and not the other way around.","url":"https:\/\/www.altoros.com\/blog\/author\/manuel-garcia\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/9009","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\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=9009"}],"version-history":[{"count":9,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/9009\/revisions"}],"predecessor-version":[{"id":67844,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/9009\/revisions\/67844"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/22769"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=9009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=9009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=9009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}