{"id":14455,"date":"2021-09-03T20:15:59","date_gmt":"2021-09-03T14:45:59","guid":{"rendered":"http:\/\/ismiletechnologies.com\/?p=14455"},"modified":"2021-11-12T21:27:46","modified_gmt":"2021-11-12T15:57:46","slug":"principles-of-continuous-integration-ci","status":"publish","type":"post","link":"https:\/\/ismiletechnologies.com\/en_us\/technology\/principles-of-continuous-integration-ci\/","title":{"rendered":"Principles of Continuous Integration (CI)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day. Now think a group of developers is working on the same project. A developer changes the copy of the codebase. Now when other developers submit code changes to the source code repository, the changes made by the previous developer stop reflecting. With codes being constantly changed, infrequent commits take place, and testing becomes late. If a long branch of code is not checked, it may lead to integration conflicts. When the developer branch is re-integrated with the main branch, bugs can percolate in\/ The main repository becomes so different from the developers; branches that merging the changes becomes a hellish affair. So, many principles are there for successful continuous integration like:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><span class=\"has-inline-color has-black-color\">Commit code frequently&nbsp;&#8211;<\/span> It is important to commit code to the version repository regularly and frequently. Integrating early and frequently is the main principle of continuous integration.&nbsp;&nbsp;<\/li><li><span class=\"has-inline-color has-black-color\">Maintaining a single source code repository&nbsp;&#8211;<\/span> Use a source code management system to serve as the main source code repository. By using the source code management tools, you can keep the code in a centralized location from where developers can access the most updated version of the build mainline. The scripts, property files, schema, and libraries created by developers should be pushed to this centralized source code repository.&nbsp;&nbsp;<\/li><li><span class=\"has-inline-color has-black-color\">Stop committing broken codes&nbsp;&#8211;<\/span> You should detest from committing codes that fail tests or are non-functional. Developers should practice maintaining a private build before checking and pushing the code into the centralized repository. Developers should run the integration builds in their local development environment after code testing to prevent integration failures.&nbsp;&nbsp;<\/li><li><span class=\"has-inline-color has-black-color\">Undertaking build automation&nbsp;&#8211;<\/span> The build process should be automated in a CI environment. This would help to build and launch the system using a single command of build scripts. The build process should include everything from sourcing the database schema from the central repository and employing it in the production environment. The build tools like Ant, MS Build, and Ruby Rake helps in build automation.&nbsp;&nbsp;&nbsp;<\/li><li><span class=\"has-inline-color has-black-color\">Broken builds should be fixed as soon as possible&nbsp;&#8211;<\/span> Mainline build can break anytime. For ensuring continuous integration, we need to ensure that the mainline build is fixed immediately. The most effective way of fixing it is to undo the latest commit from the mainline.&nbsp;&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><span class=\"has-inline-color has-black-color\">Inducing self-t<\/span>esting capabilities in the build&nbsp;&#8211; Apart from the automated build, the tests for the CI system must also be automated. Automated tests and methods like test-driven development and extreme programming can test a huge chunk of codes for bugs. For running tests in an automated manner, the tests should be written in a&nbsp;xUnit&nbsp;framework like&nbsp;NUnit&nbsp;or Junit. The CI system must ensure that 100% of the tests are passed before committing to the central code repository. Clogging the mainline with codes that have not passed all the automated tests will result in poor-quality software. Various coverage tools help in ensuring that every code is tested.&nbsp;&nbsp;<\/li><li><span class=\"has-inline-color has-black-color\">Ensuring build of every commit on an integration machine&nbsp;&#8211;<\/span> The frequent build should happen on an integration machine, and the build should be successful for the commit to be considered done. Once a commit is successful, the CI server checks the source code on the integration machine and starts a build. A developer who has committed the latest code should be made responsible for checking the mainline build. The output\/status of the build process should be notified through mail to one who has committed.&nbsp;&nbsp;<\/li><li><span class=\"has-inline-color has-black-color\">Making the latest executable version easily accessible to all In the CI process&nbsp;&#8211;<\/span>&nbsp;The latest executable version of the code must be made accessible to all the developers on the project.&nbsp;&nbsp;<\/li><li><span class=\"has-inline-color has-black-color\">Automating the deployment&nbsp;&#8211;<\/span> It is important to automate deployments with scripts that help fast the process and reduce errors. Provisions for rollback should be there as failure can occur anytime.&nbsp;<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day. Now think a group of developers is working on the same project. A developer changes the copy of the codebase. Now when other developers submit code changes to the source code repository, the changes made by the [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":14654,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19],"tags":[],"class_list":["post-14455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v28.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Principles of Continuous Integration (CI) - ISmile Technologies<\/title>\n<meta name=\"description\" content=\"Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ismiletechnologies.com\/en_us\/technology\/principles-of-continuous-integration-ci\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Principles of Continuous Integration (CI) - ISmile Technologies\" \/>\n<meta property=\"og:description\" content=\"Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ismiletechnologies.com\/en_us\/technology\/principles-of-continuous-integration-ci\/\" \/>\n<meta property=\"og:site_name\" content=\"ISmile Technologies\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ISmileTechnologiesOfficial\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-03T14:45:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-12T15:57:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2021\/09\/Principles-of-Continuous-Integration-CI.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1338\" \/>\n\t<meta property=\"og:image:height\" content=\"700\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"ISmile_Technologies\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@iSmileTechnolo1\" \/>\n<meta name=\"twitter:site\" content=\"@iSmileTechnolo1\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ISmile_Technologies\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/\"},\"author\":{\"name\":\"ISmile_Technologies\",\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/#\\\/schema\\\/person\\\/56a91efe6f901e20650f59f4f27dd375\"},\"headline\":\"Principles of Continuous Integration (CI)\",\"datePublished\":\"2021-09-03T14:45:59+00:00\",\"dateModified\":\"2021-11-12T15:57:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/\"},\"wordCount\":685,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ismiletechnologies.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Principles-of-Continuous-Integration-CI.jpg\",\"articleSection\":[\"Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/\",\"url\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/\",\"name\":\"Principles of Continuous Integration (CI) - ISmile Technologies\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ismiletechnologies.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Principles-of-Continuous-Integration-CI.jpg\",\"datePublished\":\"2021-09-03T14:45:59+00:00\",\"dateModified\":\"2021-11-12T15:57:46+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/#\\\/schema\\\/person\\\/56a91efe6f901e20650f59f4f27dd375\"},\"description\":\"Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ismiletechnologies.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Principles-of-Continuous-Integration-CI.jpg\",\"contentUrl\":\"https:\\\/\\\/ismiletechnologies.com\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Principles-of-Continuous-Integration-CI.jpg\",\"width\":1338,\"height\":700,\"caption\":\"Principles of Continuous Integration (CI)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/technology\\\/principles-of-continuous-integration-ci\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/category\\\/technology\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Principles of Continuous Integration (CI)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/#website\",\"url\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/\",\"name\":\"ISmile Technologies\",\"description\":\"Enterprise IT Consulting and Managed Services\",\"alternateName\":\"ISmile\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ismiletechnologies.com\\\/en_za\\\/#\\\/schema\\\/person\\\/56a91efe6f901e20650f59f4f27dd375\",\"name\":\"ISmile_Technologies\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3c687532cc0ad1d6dfada75405e8b8c38820a0d9f3e002b8c357317bb29b7bd7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3c687532cc0ad1d6dfada75405e8b8c38820a0d9f3e002b8c357317bb29b7bd7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3c687532cc0ad1d6dfada75405e8b8c38820a0d9f3e002b8c357317bb29b7bd7?s=96&d=mm&r=g\",\"caption\":\"ISmile_Technologies\"},\"sameAs\":[\"https:\\\/\\\/ismiletechnologies.com\\\/\"],\"honorificPrefix\":\"Mr\",\"honorificSuffix\":\"Manager\",\"birthDate\":\"1999-09-02\",\"gender\":\"Male\",\"award\":[\"Employee of the month\"],\"knowsAbout\":[\"Digital Marketing\",\"SEO\",\"SEM\",\"Social Media\",\"PPC\"],\"knowsLanguage\":[\"English\",\"Tamil\"],\"jobTitle\":\"Marketing Manager\",\"worksFor\":\"ISmile Technologies\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Principles of Continuous Integration (CI) - ISmile Technologies","description":"Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day.","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:\/\/ismiletechnologies.com\/en_us\/technology\/principles-of-continuous-integration-ci\/","og_locale":"en_US","og_type":"article","og_title":"Principles of Continuous Integration (CI) - ISmile Technologies","og_description":"Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day.","og_url":"https:\/\/ismiletechnologies.com\/en_us\/technology\/principles-of-continuous-integration-ci\/","og_site_name":"ISmile Technologies","article_publisher":"https:\/\/www.facebook.com\/ISmileTechnologiesOfficial\/","article_published_time":"2021-09-03T14:45:59+00:00","article_modified_time":"2021-11-12T15:57:46+00:00","og_image":[{"width":1338,"height":700,"url":"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2021\/09\/Principles-of-Continuous-Integration-CI.jpg","type":"image\/jpeg"}],"author":"ISmile_Technologies","twitter_card":"summary_large_image","twitter_creator":"@iSmileTechnolo1","twitter_site":"@iSmileTechnolo1","twitter_misc":{"Written by":"ISmile_Technologies","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#article","isPartOf":{"@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/"},"author":{"name":"ISmile_Technologies","@id":"https:\/\/ismiletechnologies.com\/en_za\/#\/schema\/person\/56a91efe6f901e20650f59f4f27dd375"},"headline":"Principles of Continuous Integration (CI)","datePublished":"2021-09-03T14:45:59+00:00","dateModified":"2021-11-12T15:57:46+00:00","mainEntityOfPage":{"@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/"},"wordCount":685,"commentCount":0,"image":{"@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#primaryimage"},"thumbnailUrl":"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2021\/09\/Principles-of-Continuous-Integration-CI.jpg","articleSection":["Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/","url":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/","name":"Principles of Continuous Integration (CI) - ISmile Technologies","isPartOf":{"@id":"https:\/\/ismiletechnologies.com\/en_za\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#primaryimage"},"image":{"@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#primaryimage"},"thumbnailUrl":"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2021\/09\/Principles-of-Continuous-Integration-CI.jpg","datePublished":"2021-09-03T14:45:59+00:00","dateModified":"2021-11-12T15:57:46+00:00","author":{"@id":"https:\/\/ismiletechnologies.com\/en_za\/#\/schema\/person\/56a91efe6f901e20650f59f4f27dd375"},"description":"Continuous integration is a practice in which developers integrate codes in a shared repository multiple times a day.","breadcrumb":{"@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#primaryimage","url":"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2021\/09\/Principles-of-Continuous-Integration-CI.jpg","contentUrl":"https:\/\/ismiletechnologies.com\/wp-content\/uploads\/2021\/09\/Principles-of-Continuous-Integration-CI.jpg","width":1338,"height":700,"caption":"Principles of Continuous Integration (CI)"},{"@type":"BreadcrumbList","@id":"https:\/\/ismiletechnologies.com\/technology\/principles-of-continuous-integration-ci\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Technology","item":"https:\/\/ismiletechnologies.com\/en_za\/category\/technology\/"},{"@type":"ListItem","position":2,"name":"Principles of Continuous Integration (CI)"}]},{"@type":"WebSite","@id":"https:\/\/ismiletechnologies.com\/en_za\/#website","url":"https:\/\/ismiletechnologies.com\/en_za\/","name":"ISmile Technologies","description":"Enterprise IT Consulting and Managed Services","alternateName":"ISmile","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ismiletechnologies.com\/en_za\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/ismiletechnologies.com\/en_za\/#\/schema\/person\/56a91efe6f901e20650f59f4f27dd375","name":"ISmile_Technologies","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3c687532cc0ad1d6dfada75405e8b8c38820a0d9f3e002b8c357317bb29b7bd7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3c687532cc0ad1d6dfada75405e8b8c38820a0d9f3e002b8c357317bb29b7bd7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3c687532cc0ad1d6dfada75405e8b8c38820a0d9f3e002b8c357317bb29b7bd7?s=96&d=mm&r=g","caption":"ISmile_Technologies"},"sameAs":["https:\/\/ismiletechnologies.com\/"],"honorificPrefix":"Mr","honorificSuffix":"Manager","birthDate":"1999-09-02","gender":"Male","award":["Employee of the month"],"knowsAbout":["Digital Marketing","SEO","SEM","Social Media","PPC"],"knowsLanguage":["English","Tamil"],"jobTitle":"Marketing Manager","worksFor":"ISmile Technologies"}]}},"_links":{"self":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts\/14455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/comments?post=14455"}],"version-history":[{"count":4,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts\/14455\/revisions"}],"predecessor-version":[{"id":20833,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/posts\/14455\/revisions\/20833"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/media\/14654"}],"wp:attachment":[{"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/media?parent=14455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/categories?post=14455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ismiletechnologies.com\/en_us\/wp-json\/wp\/v2\/tags?post=14455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}