{"id":5360,"date":"2013-09-10T19:46:53","date_gmt":"2013-09-10T16:46:53","guid":{"rendered":"http:\/\/railsware.com\/blog\/?p=5360"},"modified":"2021-08-16T11:34:28","modified_gmt":"2021-08-16T08:34:28","slug":"capistrano-recipe-for-checking-travis-ci-build-status","status":"publish","type":"post","link":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/","title":{"rendered":"Capistrano recipe for checking Travis CI build status"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it&#8217;s easy to forget about checking build status before issuing &#8220;cap production deploy&#8221;. What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this article, we&#8217;ll discuss how this can be easily done via Capistrano recipe. It supports only Travis CI, but can be customised to use with different CI systems.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Travis CI provides a gem for their API. This snippet allows us to fetch branch build status:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require 'travis\/pro'\n\n# this should be pro-token!\nci_access_token = \"your-pro-access-token\"\nci_repository = \"organisation-or-user\/private-repository-name\"\nbranch = \"master\"\n\nTravis::Pro.access_token = ci_access_token\nrepo = Travis::Pro::Repository.find(ci_repository)\nbranch_state = repo.branch(branch).state\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To access private repository, we need access_token and Pro-account on Travis CI. I hardly imagine somebody deploying from public repository, but anyway, here is how it can be done:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require 'travis'\n\nci_repository = \"organisation-or-user\/public-repository-name\"\nbranch = \"master\"\nrepo = Travis::Repository.find(ci_repository)\nbranch_state = repo.branch(branch).state\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now we should wrap this snippet into Capistrano recipe and prepare all stuff, like obtaining access to Travis and getting access_token.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step by step tutorial<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">0. Prerequisites<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You or somebody from your GitHub organization bought Pro-account for Travis CI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Create account in Travis CI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Just login via <a href=\"https:\/\/magnum.travis-ci.com\/auth\">https:\/\/magnum.travis-ci.com\/auth<\/a> with your Github account and grant Travis CI access to your repositories (in case you haven&#8217;t done it before).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Obtaining access_token<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To get access to Pro account API, you need to obtain Travis access_token:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted theme:tomorrow-night lang:sh nums:false\">$ gem install travis &amp;&amp; travis login --pro &amp;&amp; travis token --pro\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This command asks your GitHub credentials and outputs access_token:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"608\" height=\"225\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/token-generation.png\" alt=\"travis token generation\" class=\"wp-image-5420\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. Add &#8216;travis&#8217; gem dependency<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Put it into deployment Gemfile:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gem 'travis', require: false<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">4. Capistrano settings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Put these variables into configuration part of your Capistrano recipes:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">set :ci_access_token, \"your-pro-access-token\"\nset :ci_repository, \"organisation-or-user\/repository-name\"\nset :branch do\n  ENV[\"BRANCH\"] || 'master'\nend\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Notice, we need &#8220;branch&#8221;-variable and this part can differ for your capistrano configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Capistrano recipe<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Copy this recipe into your recipes directory:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># ci.rb\nrequire 'travis\/pro'\n\nnamespace :ci do\n  desc \"verification of branch build status on Travis CI\"\n  task :verify do\n    begin\n      Travis::Pro.access_token = ci_access_token\n      repo = Travis::Pro::Repository.find(ci_repository)\n      branch_state = repo.branch(branch).state\n\n      unless branch_state == \"passed\"\n        Capistrano::CLI.ui.say \"Your '#{branch}' branch has '#{branch_state}' state on CI.\"\n        Capistrano::CLI.ui.ask(\"Continue anyway? (y\/N)\") == 'y' or abort\n      end\n    rescue =&gt; e\n      Capistrano::CLI.ui.say e.message\n    end\n  end\nend\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">6. Enable ci:verify task<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Drop this line in front of your deployment steps:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">before 'deploy', 'ci:verify'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">7. Run deploy<\/h3>\n\n\n\n<pre class=\"wp-block-preformatted theme:tomorrow-night lang:sh nums:false\">$ cap production deploy\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And what we have on the failed build status:<br><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5421\" src=\"\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/failed-branch.png\" alt=\"travis ci verify in action\" width=\"579\" height=\"226\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s it. Now on every deploy ci:verify will check build status and notify you in case of broken build.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it&#8217;s easy to forget about checking build status before issuing &#8220;cap production deploy&#8221;. What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch? In this article,&#8230;<\/p>\n","protected":false},"author":25,"featured_media":5520,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[3],"tags":[],"coauthors":["Sergii Boiko"],"class_list":["post-5360","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it&#039;s easy to forget about checking build status before issuing &quot;cap production deploy&quot;. What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch? In this article,\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Sergii Boiko\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"| Blog on Engineering, Product Management, Transparency, Culture and many more...\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Capistrano recipe for checking Travis CI build status | Railsware Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it&#039;s easy to forget about checking build status before issuing &quot;cap production deploy&quot;. What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch? In this article,\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/travis-plus-capistrano.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/travis-plus-capistrano.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2013-09-10T16:46:53+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-08-16T08:34:28+00:00\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#article\",\"name\":\"Capistrano recipe for checking Travis CI build status | Railsware Blog\",\"headline\":\"Capistrano recipe for checking Travis CI build status\",\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/travis-plus-capistrano.png\",\"width\":150,\"height\":150},\"datePublished\":\"2013-09-10T19:46:53+03:00\",\"dateModified\":\"2021-08-16T11:34:28+03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#webpage\"},\"articleSection\":\"Engineering\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Engineering\",\"item\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#listItem\",\"name\":\"Capistrano recipe for checking Travis CI build status\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#listItem\",\"position\":3,\"name\":\"Capistrano recipe for checking Travis CI build status\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Engineering\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/11\\\/Logo-circle.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#organizationLogo\",\"width\":3137,\"height\":1054,\"caption\":\"Railsware logo\"},\"image\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/\",\"name\":\"Sergii Boiko\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#authorImage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/06\\\/sergii-boiko-96x96.jpg\",\"width\":96,\"height\":96,\"caption\":\"Sergii Boiko\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#webpage\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/\",\"name\":\"Capistrano recipe for checking Travis CI build status | Railsware Blog\",\"description\":\"Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it's easy to forget about checking build status before issuing \\\"cap production deploy\\\". What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch? In this article,\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/author\\\/sergii-boiko\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/wp-content\\\/uploads\\\/2013\\\/09\\\/travis-plus-capistrano.png\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#mainImage\",\"width\":150,\"height\":150},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/capistrano-recipe-for-checking-travis-ci-build-status\\\/#mainImage\"},\"datePublished\":\"2013-09-10T19:46:53+03:00\",\"dateModified\":\"2021-08-16T11:34:28+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/railsware.com\\\/blog\\\/\",\"description\":\"Blog on Engineering, Product Management, Transparency, Culture and many more...\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/railsware.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Capistrano recipe for checking Travis CI build status | Railsware Blog","description":"Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it's easy to forget about checking build status before issuing \"cap production deploy\". What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch? In this article,","canonical_url":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#article","name":"Capistrano recipe for checking Travis CI build status | Railsware Blog","headline":"Capistrano recipe for checking Travis CI build status","author":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/travis-plus-capistrano.png","width":150,"height":150},"datePublished":"2013-09-10T19:46:53+03:00","dateModified":"2021-08-16T11:34:28+03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#webpage"},"isPartOf":{"@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#webpage"},"articleSection":"Engineering"},{"@type":"BreadcrumbList","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/railsware.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","position":2,"name":"Engineering","item":"https:\/\/railsware.com\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#listItem","name":"Capistrano recipe for checking Travis CI build status"},"previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#listItem","position":3,"name":"Capistrano recipe for checking Travis CI build status","previousItem":{"@type":"ListItem","@id":"https:\/\/railsware.com\/blog\/category\/development\/#listItem","name":"Engineering"}}]},{"@type":"Organization","@id":"https:\/\/railsware.com\/blog\/#organization","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","url":"https:\/\/railsware.com\/blog\/","logo":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2020\/11\/Logo-circle.png","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#organizationLogo","width":3137,"height":1054,"caption":"Railsware logo"},"image":{"@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author","url":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/","name":"Sergii Boiko","image":{"@type":"ImageObject","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#authorImage","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2021\/06\/sergii-boiko-96x96.jpg","width":96,"height":96,"caption":"Sergii Boiko"}},{"@type":"WebPage","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#webpage","url":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/","name":"Capistrano recipe for checking Travis CI build status | Railsware Blog","description":"Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it's easy to forget about checking build status before issuing \"cap production deploy\". What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch? In this article,","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/railsware.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#breadcrumblist"},"author":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"creator":{"@id":"https:\/\/railsware.com\/blog\/author\/sergii-boiko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/travis-plus-capistrano.png","@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#mainImage","width":150,"height":150},"primaryImageOfPage":{"@id":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/#mainImage"},"datePublished":"2013-09-10T19:46:53+03:00","dateModified":"2021-08-16T11:34:28+03:00"},{"@type":"WebSite","@id":"https:\/\/railsware.com\/blog\/#website","url":"https:\/\/railsware.com\/blog\/","description":"Blog on Engineering, Product Management, Transparency, Culture and many more...","inLanguage":"en-US","publisher":{"@id":"https:\/\/railsware.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"| Blog on Engineering, Product Management, Transparency, Culture and many more...","og:type":"article","og:title":"Capistrano recipe for checking Travis CI build status | Railsware Blog","og:description":"Using Continuous Integration is a must for any mature development process, but in the hurry of delivering to production it's easy to forget about checking build status before issuing &quot;cap production deploy&quot;. What if while running Capistrano deployment, script will automatically check CI status and prevent us from delivering a broken branch? In this article,","og:url":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/","og:image":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/travis-plus-capistrano.png","og:image:secure_url":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/travis-plus-capistrano.png","og:image:width":150,"og:image:height":150,"article:published_time":"2013-09-10T16:46:53+00:00","article:modified_time":"2021-08-16T08:34:28+00:00"},"aioseo_meta_data":{"post_id":"5360","title":null,"description":null,"keywords":[{"label":"ruby","value":"ruby"},{"label":"capistrano","value":"capistrano"},{"label":"travis","value":"travis"},{"label":"deployment","value":"deployment"},{"label":"recipe","value":"recipe"},{"label":"ci","value":"ci"}],"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"aioseo-article-6385f5b1627b1","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":{"locations":{"business":{"name":"","businessType":"","image":"","areaServed":"","urls":{"website":"","aboutPage":"","contactPage":""},"address":{"streetLine1":"","streetLine2":"","zipCode":"","city":"","state":"","country":"","addressFormat":"#streetLineOne\n#streetLineTwo\n#city, #state #zipCode"},"contact":{"email":"","phone":"","phoneFormatted":"","fax":"","faxFormatted":""},"ids":{"vat":"","tax":"","chamberOfCommerce":""},"payment":{"priceRange":"","currenciesAccepted":"","methods":""}}},"openingHours":{"useDefaults":true,"show":true,"alwaysOpen":false,"use24hFormat":false,"timezone":"","labels":{"closed":"","alwaysOpen":""},"days":{"monday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"tuesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"wednesday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"thursday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"friday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"saturday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"},"sunday":{"open24h":false,"closed":false,"openTime":"09:00","closeTime":"17:00"}}}},"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-01-04 12:44:29","updated":"2025-09-26 11:18:40","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/railsware.com\/blog\/category\/development\/\" title=\"Engineering\">Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tCapistrano recipe for checking Travis CI build status\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/railsware.com\/blog"},{"label":"Engineering","link":"https:\/\/railsware.com\/blog\/category\/development\/"},{"label":"Capistrano recipe for checking Travis CI build status","link":"https:\/\/railsware.com\/blog\/capistrano-recipe-for-checking-travis-ci-build-status\/"}],"reading_time":"2 min read","categories_data":[{"name":"Engineering","link":"https:\/\/railsware.com\/blog?category=development"}],"post_thumbnails":"https:\/\/railsware.com\/blog\/wp-content\/uploads\/2013\/09\/travis-plus-capistrano.png","article_background":"","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/5360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/comments?post=5360"}],"version-history":[{"count":85,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/5360\/revisions"}],"predecessor-version":[{"id":14085,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/posts\/5360\/revisions\/14085"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media\/5520"}],"wp:attachment":[{"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/media?parent=5360"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/categories?post=5360"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/tags?post=5360"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/railsware.com\/blog\/wp-json\/wp\/v2\/coauthors?post=5360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}