{"id":348,"date":"2014-06-27T18:45:14","date_gmt":"2014-06-27T18:45:14","guid":{"rendered":"http:\/\/blogs.nd.edu\/devops\/?p=348"},"modified":"2014-07-02T03:31:38","modified_gmt":"2014-07-02T03:31:38","slug":"rfc-workflow-for-launchpad","status":"publish","type":"post","link":"https:\/\/sites.nd.edu\/devops\/2014\/06\/27\/rfc-workflow-for-launchpad\/","title":{"rendered":"RFC workflow for Launchpad"},"content":{"rendered":"<p>Now that we are actually getting some Rails code to production, I have worked with the Change Control team and Change Advisory Board to incorporate <a href=\"http:\/\/blogs.nd.edu\/devops\/2014\/06\/27\/launchpad-a-rails-app-deployment-platform\/\">Launchpad<\/a> into the OIT change control process. \u00a0This process is similar to the old one, with some\u00a0fantastic new features:<\/p>\n<ul>\n<li><strong>The developer (submitter) will get the BUILD TEST task<\/strong><\/li>\n<li><strong>Upon receiving this task, the developer\u00a0can deploy with Launchpad as many times as necessary (incrementing tags &#8212; see below).<\/strong><\/li>\n<li>Each TEST\/PROD deploy generates a notification to change control. \u00a0They will be checking for an associated RFC!\n<ul>\n<li>A forthcoming change to Launchpad will include a field to give the RFC number, further reinforcing this<\/li>\n<\/ul>\n<\/li>\n<li>Change control will update the BUILD PROD task to use the latest deployed tag. \u00a0You may want to state this explicitly in the closure text, in addition to pasting the deploy history.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li>Rules:\n<ul>\n<li><strong>Deploy tags only (<a href=\"http:\/\/git-scm.com\/book\/en\/Git-Basics-Tagging\">more on git tagging<\/a>)<\/strong>\n<ul>\n<li>Always include a tag message summarizing the changes<\/li>\n<li>Tag convention: \u00a0v1.0.1, v3.2.21, v1.2.4a\n<ul>\n<li>First digit: \u00a0major releases. \u00a0Very rare, for large milestones in the project. \u00a0(Note not large BUNDLES of updates&#8230; we should be more iterative than ever now!)<\/li>\n<li>Second digit: significant feature additions or enhancements<\/li>\n<li>Third digit: minor additions, tweaks, or bug fixes. \u00a0This number can get high if necessary!<\/li>\n<li>Letter: \u00a0<em>optional<\/em>, <strong><em>rare<\/em><\/strong>, only for hotfixes<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>DO NOT ALTER TAGS. \u00a0<\/strong>This new process allows you to iterate tag numbers in TEST. \u00a0It&#8217;s <strong>easy<\/strong> to make new ones. \u00a0DO IT!<\/li>\n<li><strong>Document deployments in Assyst.<\/strong> \u00a0Upon closing the task (when you&#8217;re ready for PROD), paste into Assyst a list of all your deployments\n<ul>\n<li>See &lt;app_web_root&gt;\/version.txt, a file generated by Launchpad, to help with this.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nHere&#8217;s a sample RFC:<\/p>\n<pre class=\"code\">Banner Web Services v1.0.2 \r\n------------------------------------------------ \r\nv1.0.2 contains a new service to return a student's favorite color\r\n\r\nTest \r\nStep 1 - [YOU, THE SUBMITTER] - api-internal-test.dc.nd.edu \r\na. Use Launchpad (launchpad.dc.nd.edu) to deploy app \"ndapi\" to the TEST environment. \r\n    App: NDAPI\r\n    Environment: test\r\n    Task: Deploy:cold\r\n    Tag: v1.0.2\r\n    Do_Migration: True\r\n\r\nStep 2 - [FUNCTIONAL_USER] - Test using attached testing spreadsheet. \r\n\r\nStep 3 - Webinspect \r\n[ATTACH WEBINSPECT PLAN]\r\n\r\nProd \r\nStep 1 - [Bruce Stump|Pete Bouris] - api-internal-prod.dc.nd.edu \r\na. Use Launchpad (launchpad.dc.nd.edu) to deploy app \"ndapi\" to the PROD environment. \r\n    App: NDAPI\r\n    Environment: production\r\n    Task: Deploy:cold\r\n    Tag: v1.0.2\r\n    Do_Migration: True\r\n\r\nStep 2 - [FUNCTIONAL_USER] - Test using attached testing spreadsheet.<\/pre>\n<p>Note that you must be specific in your Launchpad steps for the person running the prod deploy. \u00a0Soon, I will release\u00a0<strong>command line tools \/ API endpoints for Launchpad<\/strong> that will make this less error-prone.<\/p>\n<p>This is a great step forward, enabling developers to react quickly to issues that pop up during functional testing. \u00a0Thanks to the Change Control team and the CAB for their time, attention, and approval of this new process!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Now that we are actually getting some Rails code to production, I have worked with the Change Control team and Change Advisory Board to incorporate Launchpad into the OIT change control process. \u00a0This process is similar to the old one, &hellip; <a href=\"https:\/\/sites.nd.edu\/devops\/2014\/06\/27\/rfc-workflow-for-launchpad\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1550,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-348","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/posts\/348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/users\/1550"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/comments?post=348"}],"version-history":[{"count":9,"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/posts\/348\/revisions"}],"predecessor-version":[{"id":383,"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/posts\/348\/revisions\/383"}],"wp:attachment":[{"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/media?parent=348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/categories?post=348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.nd.edu\/devops\/wp-json\/wp\/v2\/tags?post=348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}