{"id":16647,"date":"2012-08-31T10:35:13","date_gmt":"2012-08-31T08:35:13","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=16647"},"modified":"2012-08-31T10:35:13","modified_gmt":"2012-08-31T08:35:13","slug":"on-builds-and-releases","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/31\/on-builds-and-releases\/","title":{"rendered":"On builds and releases"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>Once in a while I find myself in a conversation on builds and releases. \u00a0It&#8217;s one of those where before the conversation everyone seems to be on the same page, but immediately after the conversation starts, there&#8217;s a massive fight and argument as to how the world works today and what&#8217;s the best path into the future. \u00a0And it gets messy.<\/p>\n<p>I believe that the old approach of one release a decade is dead. \u00a0Especially in web application development. \u00a0The world is much more dynamic now, and so should be the release plans. \u00a0This seems obvious to many, and yet, not a lot of people understand the implication of this. \u00a0Making releases more dynamic means making the release operation cheaper, ideally &#8211; free. \u00a0Can you release a new version of the project once a day? \u00a0How about every hour? Why not? \u00a0You should be able to. \u00a0Regardless, whether you will actually release every second or not, the path to making releases cheap is automation. \u00a0And that means you have to have some form of software version control, and some form of build or deploy script. \u00a0And, of course, some form of rollback script for those times when things go hairy.<\/p>\n<p>One of the things that I do at my current job is setting up such a deployment process. \u00a0I&#8217;ve done it before, but it&#8217;s been a while, and given how fast these things change and improve, I&#8217;ve been looking around for new tools and ideas. \u00a0While doing so, I came across <a href=\"https:\/\/github.com\/blog\/1241-deploying-at-github\">an interesting GitHub blog post<\/a>. \u00a0And while their requirements and environment are different from mine, I still found it useful. \u00a0One of the things that shows how well their process works is the stats at the end of the post. \u00a0Just look at them.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"16648\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/31\/on-builds-and-releases\/github-builds-and-releases\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2012\/08\/GitHub-builds-and-releases.png?fit=922%2C427&amp;ssl=1\" data-orig-size=\"922,427\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"GitHub builds and releases\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2012\/08\/GitHub-builds-and-releases.png?fit=660%2C306&amp;ssl=1\" class=\"aligncenter size-medium wp-image-16648\" title=\"GitHub builds and releases\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2012\/08\/GitHub-builds-and-releases-500x231.png?resize=500%2C231&#038;ssl=1\" alt=\"\" width=\"500\" height=\"231\" srcset=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2012\/08\/GitHub-builds-and-releases.png?resize=500%2C231&amp;ssl=1 500w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2012\/08\/GitHub-builds-and-releases.png?resize=510%2C236&amp;ssl=1 510w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2012\/08\/GitHub-builds-and-releases.png?resize=710%2C328&amp;ssl=1 710w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2012\/08\/GitHub-builds-and-releases.png?w=922&amp;ssl=1 922w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>That&#8217;s <strong>about 100 deploys per day<\/strong>! Not bad, not bad at all.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Once in a while I find myself in a conversation on builds and releases. \u00a0It&#8217;s one of those where before the conversation everyone seems to be on the same page, but immediately after the conversation starts, there&#8217;s a massive fight and argument as to how the world works today and what&#8217;s the best path into &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/31\/on-builds-and-releases\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">On builds and releases<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,18,133,62],"tags":[3089,2809,1041,1588],"keyring_services":[],"class_list":["post-16647","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-sysadmin","category-technology","tag-continuous-integration","tag-github","tag-statistics","tag-version-control"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":47591,"url":"https:\/\/mamchenkov.net\/wordpress\/2020\/03\/12\/tips-for-implementing-a-software-release-process\/","url_meta":{"origin":16647,"position":0},"title":"Tips for Implementing a Software Release Process","author":"Leonid Mamchenkov","date":"March 12, 2020","format":false,"excerpt":"I came across this nice article outlining some of the tips for implementing the software release process. Software Development process is not complete and mature without a well-defined release process for the software applications. Every software application needs to be delivered or deployed at some point in time and for\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":14527,"url":"https:\/\/mamchenkov.net\/wordpress\/2011\/03\/09\/foursquare-releases-version-3\/","url_meta":{"origin":16647,"position":1},"title":"Foursquare releases version 3","author":"Leonid Mamchenkov","date":"March 9, 2011","format":false,"excerpt":"Foursquare - an awesome location services that I use way more than I should - announces the release of Version 3. \u00a0They have a lengthy blog post explaining their reasons, goals, and changes. \u00a0And I have to say that it's exciting. \u00a0I was slightly worried that they might give up\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2011\/03\/foursquare-leaderboard-2-500x367.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":24510,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/07\/28\/jquery-3-0-alpha-release\/","url_meta":{"origin":16647,"position":2},"title":"jQuery 3.0 Alpha release","author":"Leonid Mamchenkov","date":"July 28, 2015","format":false,"excerpt":"Just a few weeks after we've started using jQuery 2, the news come in of the new major release of jQuery being not too far away: It\u2019s been a long time since we did a major release, and you certainly deserve one. So we\u2019re glad to announce the first alpha\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28224,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/11\/15\/fedora-27\/","url_meta":{"origin":16647,"position":3},"title":"Fedora 27","author":"Leonid Mamchenkov","date":"November 15, 2017","format":false,"excerpt":"Fedora 27, the latest and greatest version, has been released.\u00a0 As always, a lot of work went into putting it all together.\u00a0 But for personally, the new releases has stopped being exciting a long time ago.\u00a0 My desktop needs have been satisfied for years.\u00a0 All I need is MATE Desktop\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"Fedora 27","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/11\/Fedora-27-500x212.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":18978,"url":"https:\/\/mamchenkov.net\/wordpress\/2013\/12\/17\/fedora-20-released\/","url_meta":{"origin":16647,"position":4},"title":"Fedora 20 released","author":"Leonid Mamchenkov","date":"December 17, 2013","format":false,"excerpt":"Fedora community celebrates the release of Fedora 20 today. \u00a0It is an anniversary release, marking 10 years since the birth of the project. \u00a0 Yes, that's two releases per year, \u00a0all according to the six month release cycle. \u00a0Here, I'd like to do a little side tour. Not many people\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":18442,"url":"https:\/\/mamchenkov.net\/wordpress\/2013\/07\/03\/github-adds-releases\/","url_meta":{"origin":16647,"position":5},"title":"GitHub adds Releases","author":"Leonid Mamchenkov","date":"July 3, 2013","format":false,"excerpt":"By now you know that I can't praise GitHub enough. \u00a0It is one of the best tools for developers ever. \u00a0Seriously. \u00a0It's up there with git itself, and even Vim. \u00a0If you aren't using it yet, stop whatever it is you are doing and rush there. \u00a0Now. I'm not kidding.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"GitHub releases","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2013\/07\/GitHub-releases-500x254.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/16647","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=16647"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/16647\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=16647"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=16647"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=16647"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=16647"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}