{"id":2832,"date":"2015-01-28T11:00:35","date_gmt":"2015-01-28T16:00:35","guid":{"rendered":"http:\/\/sqlity.net\/en\/?p=2832"},"modified":"2015-02-02T10:31:28","modified_gmt":"2015-02-02T15:31:28","slug":"ci-benefits","status":"publish","type":"post","link":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/","title":{"rendered":"Six Reasons to use Continuous Integration"},"content":{"rendered":"<div>\n<h3>Continuous Integration<\/h3>\n<p>\nContinuous Integration or CI is the practice of automatically building your software and running it through a battery of tests, every time a change is committed to source control (or based on a timer). In last week's <a href=\"http:\/\/sqlity.net\/en\/2827\/continuous-integration\/\">Continuous Integration<\/a> article I introduced the concept of CI and detailed the four phases of the CI loop. What I did not cover in detail is the question why you would want to implement CI in the first place. That is the topic of this article.\n<\/p>\n<div>\n<a href=\"http:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png\" alt=\"Benefits of Continuous Integration\" title=\"Benefits of Continuous Integration\" width=\"960\" height=\"600\" class=\"aligncenter size-full wp-image-2833\" srcset=\"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png 960w, https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration-300x188.png 300w, https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration-150x94.png 150w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a>\n<\/div>\n<p>\nOne of the main benefits of unit testing is a shorter feedback loop. The less time passes between a developer making a mistake and the discovery of that mistake, the easier and cheaper it is to fix the problem. Frequent execution of all unit tests keeps that interval short. The more automated you tests, the easier it is to run them and with that, the more likely it is that the developers will actually execute them. Always remember:\n<\/p>\n<div class=\"TT_wrapper\"><div class=\"TT_text\"><a class=\"TT_tweet_link\" href=\"http:\/\/twitter.com\/intent\/tweet?text=Unit%20tests%20can%20only%20provide%20value%2C%20if%20they%20are%20executed%20often.%20https%3A%2F%2Fsqlity.net%2Fen%2F2832%2Fci-benefits%2F%20via%20%40sqlity\" target=\"_blank\">Unit tests can only provide value, if they are executed often.<\/a><\/div><div class=\"TT_footer\"><div class=\"TT_byline\">Powered By the <em><a href=\"http:\/\/wordpress.org\/plugins\/tweet-this\/\" target=\"_blank\">Tweet This<\/a><\/em> Plugin<\/div><div class=\"TT_tweet_link_wrapper\"><a class=\"TT_tweet_link\" href=\"http:\/\/twitter.com\/intent\/tweet?text=Unit%20tests%20can%20only%20provide%20value%2C%20if%20they%20are%20executed%20often.%20https%3A%2F%2Fsqlity.net%2Fen%2F2832%2Fci-benefits%2F%20via%20%40sqlity\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/sqlity.net\/wp-content\/plugins\/tweetthis\/assets\/images\/twitter-icons\/bird3.png\" alt=\"\" \/>Tweet This<\/a><\/div><div style=\"clear: both; \"><\/div><\/div><\/div>\n<p id=\"automation\">&nbsp;<\/p>\n<h3>Automation<\/h3>\n<p>\nThe most common reason that developers do not execute the tests is the (perceived) hassle involved in doing so. I always recommend that you should write your unit tests in a way that you can execute them with a press of a button. CI goes one step further: It automates the execution for you. But CI automates even more. The entire software package is built and deployed (to a CI environment) and then tested. With that, you can be sure that your product can be built and deployed and it conforms to all requirements (at least the ones currently covered by a test).\n<\/p>\n<p id=\"releaseengineering\">&nbsp;<\/p>\n<h3>Release Engineering<\/h3>\n<p>\nTo make CI work, both the built and the deployment process have to be automated. Because the entire process potentially has to run several times a day, it also has to execute fast. That requires you to think about deploy-ability early on, which leads to a robust and performant build and deployment framework. By the time you are done with development, you do not have to struggle with creating packages that include actually all the pieces required to install the product, because the system has gone through that cycle several times already.\n<\/p>\n<p id=\"testability\">&nbsp;<\/p>\n<h3>Testability<\/h3>\n<p>\nWriting automated unit tests tends to lead you towards testable code. The same holds true for the CI process. Because you are thinking about testability, build-ability and deploy-ability early on, your software is pushed towards a design that makes these interactions simple.\n<\/p>\n<p id=\"audittrail\">&nbsp;<\/p>\n<h3>Audit Trail<\/h3>\n<p>\nAll the effort put into unit testing by a development team can be undone by a single person that is not diligent about writing new or fixing broken unit tests.  Often this type of behavior is caused by perceived pressure to get things done in too little time.\n<\/p>\n<div class=\"TT_wrapper\"><div class=\"TT_text\"><a class=\"TT_tweet_link\" href=\"http:\/\/twitter.com\/intent\/tweet?text=Unit%20Testing%20only%20works%20with%20buy-in%20from%20the%20entire%20team.%20https%3A%2F%2Fsqlity.net%2Fen%2F2832%2Fci-benefits%2F%20via%20%40sqlity\" target=\"_blank\">Unit Testing only works with buy-in from the entire team.<\/a><\/div><div class=\"TT_footer\"><div class=\"TT_byline\">Powered By the <em><a href=\"http:\/\/wordpress.org\/plugins\/tweet-this\/\" target=\"_blank\">Tweet This<\/a><\/em> Plugin<\/div><div class=\"TT_tweet_link_wrapper\"><a class=\"TT_tweet_link\" href=\"http:\/\/twitter.com\/intent\/tweet?text=Unit%20Testing%20only%20works%20with%20buy-in%20from%20the%20entire%20team.%20https%3A%2F%2Fsqlity.net%2Fen%2F2832%2Fci-benefits%2F%20via%20%40sqlity\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/sqlity.net\/wp-content\/plugins\/tweetthis\/assets\/images\/twitter-icons\/bird3.png\" alt=\"\" \/>Tweet This<\/a><\/div><div style=\"clear: both; \"><\/div><\/div><\/div>\n<p>\nWith a working CI setup, every member of the team is notified instantly when \"the build breaks\". That notification includes the information about what the last change was and by whom that change was checked into source control.\n<\/p>\n<p>\nThis provides accountability. Non-supportive team members cannot hide their actions (or inactions) until it is too late. The feedback is immediate. But even if no one is to blame for the problem, CI will identify any form of integration issues early and provide documentation about the last few changes. With that it is usually very simple to understand and remedy the problem.\n<\/p>\n<p id=\"qualitystandards\">&nbsp;<\/p>\n<h3>Quality Standards<\/h3>\n<p>\nCI automatically executes your build, your deployment process and your tests. The tests executed during the CI loop should include all unit and acceptance tests. Automated UI and performance tests can be part of the process as well.\n<\/p>\n<p>\nIn addition, you can run checks against your code base to enforce code quality standards. Prime examples for this are static analysis tools and unit test coverage metrics, if your language provides them. Unit test coverage measures the ratio of code validated by unit tests to code not validated by tests. Static analysis tools can be used to check for naming conventions and misuse of language features.\n<\/p>\n<p>\nEnforcing code quality standards with CI leads to a more even code quality and can help to avoid issues do to incongruent coding standards.\n<\/p>\n<p id=\"otherbenefits\">&nbsp;<\/p>\n<h3>Other Benefits<\/h3>\n<p>\nIn addition to all the benefits mentioned above, CI can provide rich reports about the health and progress of your project. Information you can collect includes metrics like number of test cases over time, number of test case failures over time, number of completed check-ins (even by employee), the overall adherence to coding standards and test coverage.\n<\/p>\n<p>&nbsp;<\/p>\n<h3>Summary<\/h3>\n<p>\nCI provides several strong advantages that make its use almost a must. However - as every good thing - it comes at a price. CI requires a significant upfront time investment as well as regular maintenance activities. While it can increase team participation through accountability, you still need the entire team's buy-in for it to work.\n<\/p>\n<p>\nBut if you do implement CI, in the long run the benefits will by far outweigh these investment costs and lead you to a cleaner more stable (or in short: better) product.\n<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Continuous Integration (CI), while it comes with a high startup cost, provides several benefits that lead to a better product in the long term. Read on to discover six of the strongest reasons to us CI in your project.<\/p>\n<p> <a href=\"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/\">[more&#8230;]<\/a><\/p>\n","protected":false},"author":3,"featured_media":2833,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[5,25,12],"tags":[18,256,255,272,257],"class_list":["post-2832","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-general","category-tdd","category-tsqlt","tag-best-practice","tag-ci","tag-continuous-integration","tag-tdd","tag-unit-testing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Six Reasons to use Continuous Integration - sqlity.net<\/title>\n<meta name=\"description\" content=\"Discover how Continuous Integration, while it comes with a startup cost, provides several strong benefits that lead to a better product in the long term.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Six Reasons to use Continuous Integration - sqlity.net\" \/>\n<meta property=\"og:description\" content=\"Discover how Continuous Integration, while it comes with a startup cost, provides several strong benefits that lead to a better product in the long term.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/\" \/>\n<meta property=\"og:site_name\" content=\"sqlity.net\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/sqlity.net\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-28T16:00:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2015-02-02T15:31:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sebastian Meine\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@sqlity\" \/>\n<meta name=\"twitter:site\" content=\"@sqlity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sebastian Meine\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/\"},\"author\":{\"name\":\"Sebastian Meine\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\"},\"headline\":\"Six Reasons to use Continuous Integration\",\"datePublished\":\"2015-01-28T16:00:35+00:00\",\"dateModified\":\"2015-02-02T15:31:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/\"},\"wordCount\":871,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2015\\\/01\\\/Benefits_of_Continuous_Integration.png\",\"keywords\":[\"Best Practice\",\"CI\",\"continuous integration\",\"TDD\",\"Unit Testing\"],\"articleSection\":[\"General\",\"TDD\",\"tSQLt\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/\",\"url\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/\",\"name\":\"Six Reasons to use Continuous Integration - sqlity.net\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2015\\\/01\\\/Benefits_of_Continuous_Integration.png\",\"datePublished\":\"2015-01-28T16:00:35+00:00\",\"dateModified\":\"2015-02-02T15:31:28+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\"},\"description\":\"Discover how Continuous Integration, while it comes with a startup cost, provides several strong benefits that lead to a better product in the long term.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2015\\\/01\\\/Benefits_of_Continuous_Integration.png\",\"contentUrl\":\"https:\\\/\\\/sqlity.net\\\/wp-content\\\/uploads\\\/2015\\\/01\\\/Benefits_of_Continuous_Integration.png\",\"width\":960,\"height\":600,\"caption\":\"Benefits of Continuous Integration\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/2832\\\/ci-benefits\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sqlity.net\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Six Reasons to use Continuous Integration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/sqlity.net\\\/en\\\/\",\"name\":\"sqlity.net\",\"description\":\"Quality for SQL\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sqlity.net\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sqlity.net\\\/en\\\/#\\\/schema\\\/person\\\/bcffd8c572bc2f1bd10fdba80135e53c\",\"name\":\"Sebastian Meine\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g\",\"caption\":\"Sebastian Meine\"},\"sameAs\":[\"http:\\\/\\\/sqlity.net\",\"https:\\\/\\\/x.com\\\/sqlity\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Six Reasons to use Continuous Integration - sqlity.net","description":"Discover how Continuous Integration, while it comes with a startup cost, provides several strong benefits that lead to a better product in the long term.","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:\/\/sqlity.net\/en\/2832\/ci-benefits\/","og_locale":"en_US","og_type":"article","og_title":"Six Reasons to use Continuous Integration - sqlity.net","og_description":"Discover how Continuous Integration, while it comes with a startup cost, provides several strong benefits that lead to a better product in the long term.","og_url":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/","og_site_name":"sqlity.net","article_publisher":"https:\/\/www.facebook.com\/sqlity.net","article_published_time":"2015-01-28T16:00:35+00:00","article_modified_time":"2015-02-02T15:31:28+00:00","og_image":[{"width":960,"height":600,"url":"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png","type":"image\/png"}],"author":"Sebastian Meine","twitter_card":"summary_large_image","twitter_creator":"@sqlity","twitter_site":"@sqlity","twitter_misc":{"Written by":"Sebastian Meine","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#article","isPartOf":{"@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/"},"author":{"name":"Sebastian Meine","@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c"},"headline":"Six Reasons to use Continuous Integration","datePublished":"2015-01-28T16:00:35+00:00","dateModified":"2015-02-02T15:31:28+00:00","mainEntityOfPage":{"@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/"},"wordCount":871,"commentCount":0,"image":{"@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#primaryimage"},"thumbnailUrl":"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png","keywords":["Best Practice","CI","continuous integration","TDD","Unit Testing"],"articleSection":["General","TDD","tSQLt"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/","url":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/","name":"Six Reasons to use Continuous Integration - sqlity.net","isPartOf":{"@id":"https:\/\/sqlity.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#primaryimage"},"image":{"@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#primaryimage"},"thumbnailUrl":"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png","datePublished":"2015-01-28T16:00:35+00:00","dateModified":"2015-02-02T15:31:28+00:00","author":{"@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c"},"description":"Discover how Continuous Integration, while it comes with a startup cost, provides several strong benefits that lead to a better product in the long term.","breadcrumb":{"@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sqlity.net\/en\/2832\/ci-benefits\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#primaryimage","url":"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png","contentUrl":"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png","width":960,"height":600,"caption":"Benefits of Continuous Integration"},{"@type":"BreadcrumbList","@id":"https:\/\/sqlity.net\/en\/2832\/ci-benefits\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sqlity.net\/en\/"},{"@type":"ListItem","position":2,"name":"Six Reasons to use Continuous Integration"}]},{"@type":"WebSite","@id":"https:\/\/sqlity.net\/en\/#website","url":"https:\/\/sqlity.net\/en\/","name":"sqlity.net","description":"Quality for SQL","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sqlity.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/sqlity.net\/en\/#\/schema\/person\/bcffd8c572bc2f1bd10fdba80135e53c","name":"Sebastian Meine","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4ab0a6d02dd494849a584a2c3c8bc3bdcef1d0aa5f87e98bf905dbdb9ad2ce3a?s=96&d=mm&r=g","caption":"Sebastian Meine"},"sameAs":["http:\/\/sqlity.net","https:\/\/x.com\/sqlity"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/sqlity.net\/wp-content\/uploads\/2015\/01\/Benefits_of_Continuous_Integration.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p2wXuw-JG","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts\/2832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/comments?post=2832"}],"version-history":[{"count":0,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/posts\/2832\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/media\/2833"}],"wp:attachment":[{"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/media?parent=2832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/categories?post=2832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sqlity.net\/en\/wp-json\/wp\/v2\/tags?post=2832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}