{"id":1893,"date":"2015-10-11T16:13:26","date_gmt":"2015-10-11T21:13:26","guid":{"rendered":"http:\/\/bitpost.com\/news\/?p=1893"},"modified":"2015-11-03T13:17:55","modified_gmt":"2015-11-03T18:17:55","slug":"continuous-integration-for-the-digital-age-projects","status":"publish","type":"post","link":"https:\/\/bitpost.com\/news\/2015\/continuous-integration-for-the-digital-age-projects\/","title":{"rendered":"Continuous Integration for The Digital Age projects"},"content":{"rendered":"<p>There are a million ways to do CI. \u00a0My goal is to keep it as simple as possible. \u00a0Concepts:<\/p>\n<ul>\n<li>My target projects include\u00a0multi-platform C++ applications, Firefox addons, cross-platform desktop apps, mobile apps, and\u00a0web apps with lots of JavaScript and JavaScript libraries.<\/li>\n<li>I want to use a simple-to-use very-capable cross-platform scripting language. \u00a0I&#8217;ve concluded that I will use JavaScript via Node.js. \u00a0It is async and portable from the day it was born. \u00a0Installing a node.js module for scripts means they are available from any path on any platform&#8217;s command line.<\/li>\n<li>For CI tasks, I will avoid dependencies on anything else. \u00a0The core Node.js API is very capable. \u00a0Modules are available if needed (eg the amazing aws-sdk) but will be avoided whenever possible.<\/li>\n<li>I need\u00a0intelligent\u00a0placement of CI windows (eg a popup shell for build-on-save). \u00a0My\u00a0Ubuntu i3 window manager is capable of this, as is Autohotkeys under Windows. \u00a0These auto-placed windows will always run cross-platform node scripts.<\/li>\n<li>If you want to use Powershell, for the love of all that&#8217;s holy, make sure you fix its terrible default of hiding debug output with:\n<pre class=\"lang-bsh prettyprint prettyprinted\"><code><span class=\"pln\">   $global<\/span><span class=\"pun\">:<\/span><span class=\"typ\">DebugPreference<\/span> <span class=\"pun\">=<\/span> <span class=\"str\">\"Continue\"<\/span><\/code><\/pre>\n<\/li>\n<li>Goals:\n<ul>\n<li>on code save: automatically build<\/li>\n<li>on code commit: automatically build, do any custom build steps, run any unit tests, run any end-to-end tests, and report results dynamically<\/li>\n<li>on app production release: compile\u00a0artifacts, assist in automatic versioning<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>See <a href=\"https:\/\/bitpost.com\/wiki\/Continuous_Integration\" target=\"_blank\">the wiki<\/a> for details.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are a million ways to do CI. \u00a0My goal is to keep it as simple as possible. \u00a0Concepts: My target projects include\u00a0multi-platform C++ applications, Firefox addons, cross-platform desktop apps, mobile apps, and\u00a0web apps with lots of JavaScript and JavaScript libraries. I want to use a simple-to-use very-capable cross-platform scripting language. \u00a0I&#8217;ve concluded that I [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_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,"enabled":false},"version":2}},"categories":[204,45,7,4,10],"tags":[210],"class_list":["post-1893","post","type-post","status-publish","format-standard","hentry","category-a-better-trader","category-git","category-hangthedj","category-projects","category-tricks-tips-tools","tag-continuous-integration"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9M11L-ux","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/1893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/comments?post=1893"}],"version-history":[{"count":5,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/1893\/revisions"}],"predecessor-version":[{"id":1899,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/posts\/1893\/revisions\/1899"}],"wp:attachment":[{"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/media?parent=1893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/categories?post=1893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitpost.com\/news\/wp-json\/wp\/v2\/tags?post=1893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}