<script type="application/json" id="HeaderNotice-apollo-state-992f9e1e-c79c-43fb-96a9-089d825fa346">{}</script> <!-- glamorIds: 7 --> <script type="application/json" id="HeaderNotice-glamor-992f9e1e-c79c-43fb-96a9-089d825fa346">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","gwph6j"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-gwph6j,[data-css-gwph6j]{border-radius:2px;background-size:200% 100%;width:auto;height:auto;animation:20s animation_1yodi52 0s linear infinite;background:-webkit-linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%); background: -moz-linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%); background: linear-gradient(to right, #f1f1f1 0%, #fbfbfb 50%, #f1f1f1 100%);-webkit-animation:20s animation_1yodi52 0s linear infinite;}</style> <div id="HeaderNotice-react-component-992f9e1e-c79c-43fb-96a9-089d825fa346" data-ssr="true" ><div style="z-index:1000" class="css-gwph6j"></div></div> <script> renderComponent('HeaderNotice','HeaderNotice-react-component-992f9e1e-c79c-43fb-96a9-089d825fa346','HeaderNotice-apollo-state-992f9e1e-c79c-43fb-96a9-089d825fa346','HeaderNotice-glamor-992f9e1e-c79c-43fb-96a9-089d825fa346', 'apollo','{"mobile":false}'); </script> <script type="application/json" id="ToolAlternatives-apollo-state-355da1f3-ce3c-4127-80e0-4f2cae8975e1">{"ROOT_QUERY":{"me":null,"tool({\"id\":\"cloudbees\"})":{"type":"id","generated":false,"id":"Tool:101231773472115839","typename":"Tool"},"tool({\"id\":\"101231773472115839\"})":{"type":"id","generated":false,"id":"Tool:101231773472115839","typename":"Tool"}},"Tool:101231773472115839":{"id":"101231773472115839","imageUrl":"https://img.stackshare.io/service/136/o-p1F0I9_400x400.jpg","name":"CloudBees","ampStoryEnabled":false,"description":"Enables organizations to build, test and deploy applications to production, utilizing continuous delivery practices. They are focused solely on Jenkins as a tool for continuous delivery both on-premises and in the cloud. ","followers":{"type":"id","generated":true,"id":"$Tool:101231773472115839.followers","typename":"UserConnection"},"company":{"type":"id","generated":true,"id":"$Tool:101231773472115839.company","typename":"Company"},"path":"/cloudbees","slug":"cloudbees","following":false,"alternativeTools":{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools","typename":"ToolConnection"},"function":{"type":"id","generated":true,"id":"$Tool:101231773472115839.function","typename":"Function"},"layer":{"type":"id","generated":true,"id":"$Tool:101231773472115839.layer","typename":"Layer"},"category":{"type":"id","generated":true,"id":"$Tool:101231773472115839.category","typename":"Category"},"features":"Hosted CI/CD as a Service;\r\nFlexible and governed software delivery automation;\r\nStarter Kit;\r\nJenkins Product Support\r\n","thumbUrl":"https://img.stackshare.io/service/136/thumb_o-p1F0I9_400x400.jpg","thumbRetinaUrl":"https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg","verified":true,"pressUrl":"","githubForksCount":null,"githubStarsCount":null,"title":"Enterprise Jenkins and DevOps","twitterUsername":"CloudBees","websiteUrl":"http://www.cloudbees.com","stacks":92,"votes":5,"privateFollowers":{"type":"id","generated":true,"id":"$Tool:101231773472115839.privateFollowers","typename":"UserConnection"},"footerAlternateTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5})","typename":"ToolConnection"},"footerNewTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5})","typename":"ToolConnection"},"footerTopTools({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5})","typename":"ToolConnection"},"footerRelatedStackups({\"first\":5})":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5})","typename":"StackupConnection"},"__typename":"Tool","alternativeTools({\"first\":8})":{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8})","typename":"ToolConnection"}},"$Tool:101231773472115839.followers":{"count":159,"__typename":"UserConnection"},"$Tool:101231773472115839.company":{"name":"CloudBees","slug":"cloudbees","stacks":[{"type":"id","generated":false,"id":"Stack:104518506480625560","typename":"Stack"},{"type":"id","generated":false,"id":"Stack:104717417625106292","typename":"Stack"},{"type":"id","generated":false,"id":"Stack:104277407069658090","typename":"Stack"},{"type":"id","generated":false,"id":"Stack:101231786421837667","typename":"Stack"}],"__typename":"Company"},"Stack:104518506480625560":{"id":"104518506480625560","__typename":"Stack"},"Stack:104717417625106292":{"id":"104717417625106292","__typename":"Stack"},"Stack:104277407069658090":{"id":"104277407069658090","__typename":"Stack"},"Stack:101231786421837667":{"id":"101231786421837667","__typename":"Stack"},"$Tool:101231773472115839.alternativeTools":{"count":75,"__typename":"ToolConnection"},"$Tool:101231773472115839.function":{"name":"Platform as a Service","slug":"platform-as-a-service","__typename":"Function"},"$Tool:101231773472115839.layer":{"name":"Application and Data","slug":"application_and_data","__typename":"Layer"},"$Tool:101231773472115839.category":{"name":"Application Hosting","slug":"application-hosting","__typename":"Category"},"$Tool:101231773472115839.privateFollowers":{"count":0,"__typename":"UserConnection"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.0.node":{"name":"Jenkins","path":"/jenkins","__typename":"Tool"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.1.node":{"name":"CircleCI","path":"/circleci","__typename":"Tool"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.2.node":{"name":"Bamboo","path":"/bamboo","__typename":"Tool"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.3.node":{"name":"Azure DevOps","path":"/azure-devops","__typename":"Tool"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.4.node":{"name":"GitLab","path":"/gitlab","__typename":"Tool"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerAlternateTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerAlternateTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.0.node":{"name":"Amazon VPC","path":"/amazon-vpc","__typename":"Tool"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.1.node":{"name":"PubNub","path":"/pubnub","__typename":"Tool"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.2.node":{"name":"Google Compute Engine","path":"/google-compute-engine","__typename":"Tool"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.3.node":{"name":"Amazon CodeCatalyst","path":"/aws-codecatalyst","__typename":"Tool"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.4.node":{"name":"AWS Application Composer","path":"/aws-application-composer","__typename":"Tool"},"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerNewTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerNewTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.0.node":{"name":"NGINX","path":"/nginx","__typename":"Tool"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.0.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.1.node":{"name":"Apache HTTP Server","path":"/apache-http-server","__typename":"Tool"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.1.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.2.node":{"name":"Amazon EC2","path":"/amazon-ec2","__typename":"Tool"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.2.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.3.node":{"name":"Firebase","path":"/firebase","__typename":"Tool"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.3.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.4.node":{"name":"Heroku","path":"/heroku","__typename":"Tool"},"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.4.node","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773472115839.footerTopTools({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerTopTools({\"first\":5}).edges.4","typename":"ToolEdge"}],"__typename":"ToolConnection"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.0.node":{"path":"/stackups/appfog-vs-cloudbees","title":"AppFog vs CloudBees","__typename":"Stackup"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.0":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.0.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.1.node":{"path":"/stackups/cloudbees-vs-red-hat-openshift","title":"CloudBees vs Red Hat OpenShift","__typename":"Stackup"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.1":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.1.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.2.node":{"path":"/stackups/cloudbees-vs-google-app-engine","title":"CloudBees vs Google App Engine","__typename":"Stackup"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.2":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.2.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.3.node":{"path":"/stackups/cloudbees-vs-engine-yard-cloud","title":"CloudBees vs Engine Yard Cloud","__typename":"Stackup"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.3":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.3.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.4.node":{"path":"/stackups/cloudbees-vs-heroku","title":"CloudBees vs Heroku","__typename":"Stackup"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.4":{"node":{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.4.node","typename":"Stackup"},"__typename":"StackupEdge"},"$Tool:101231773472115839.footerRelatedStackups({\"first\":5})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.0","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.1","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.2","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.3","typename":"StackupEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.footerRelatedStackups({\"first\":5}).edges.4","typename":"StackupEdge"}],"__typename":"StackupConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).pageInfo":{"hasNextPage":true,"endCursor":"OA","__typename":"PageInfo"},"$Tool:101231773472115839.alternativeTools({\"first\":8})":{"pageInfo":{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).pageInfo","typename":"PageInfo"},"edges":[{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.0","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.1","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.2","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.3","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.4","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.5","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.6","typename":"ToolEdge"},{"type":"id","generated":true,"id":"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.7","typename":"ToolEdge"}],"__typename":"ToolConnection"},"Tool:101231773703650742":{"id":"101231773703650742","path":"/jenkins","slug":"jenkins","title":"An extendable open source continuous integration server","votes":2239,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231773703650742.followers","typename":"UserConnection"},"stacks":51636,"githubForksCount":7772,"imageUrl":"https://img.stackshare.io/service/670/jenkins.png","thumbRetinaUrl":"https://img.stackshare.io/service/670/thumb_retina_jenkins.png","name":"Jenkins","description":"In a nutshell Jenkins CI is the leading open-source continuous integration server. Built with Java, it provides over 300 plugins to support building and testing virtually any project.","contactEnabled":true,"contactButtonText":"Deploy Jenkins With One Click On Linode","contactFlow":{"type":"json","json":{"links":[{"url":"http://bit.ly/3aqXu01","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/jenkins","fans":51891,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773703650742.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773703650742.followers":{"count":43846,"__typename":"UserConnection"},"Reason:101978468173894484":{"id":"101978468173894484","upvoted":false,"upvotesCount":521,"text":"Hosted internally","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468173894484","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468173796565":{"id":"101978468173796565","upvoted":false,"upvotesCount":464,"text":"Free open source","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468173796565","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468171251910":{"id":"101978468171251910","upvoted":false,"upvotesCount":315,"text":"Great to build, deploy or launch anything async","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468171251910","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468621821985":{"id":"101978468621821985","upvoted":false,"upvotesCount":243,"text":"Tons of integrations","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468621821985","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468193585604":{"id":"101978468193585604","upvoted":false,"upvotesCount":210,"text":"Rich set of plugins with good documentation","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468193585604","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468174137553":{"id":"101978468174137553","upvoted":false,"upvotesCount":110,"text":"Has support for build pipelines","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978468174137553","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468769485386":{"id":"101978468769485386","upvoted":false,"upvotesCount":72,"text":"Open source and tons of integrations","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978468769485386","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468807622826":{"id":"101978468807622826","upvoted":false,"upvotesCount":65,"text":"Easy setup","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978468807622826","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468807499938":{"id":"101978468807499938","upvoted":false,"upvotesCount":62,"text":"It is open-source","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978468807499938","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468621732123":{"id":"101978468621732123","upvoted":false,"upvotesCount":54,"text":"Workflow plugin","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978468621732123","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469333385285":{"id":"101978469333385285","upvoted":false,"upvotesCount":11,"text":"Configuration as code","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978469333385285","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468868029712":{"id":"101978468868029712","upvoted":false,"upvotesCount":10,"text":"Very powerful tool","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978468868029712","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469475802713":{"id":"101978469475802713","upvoted":false,"upvotesCount":9,"text":"Continuous Integration","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978469475802713","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469007837049":{"id":"101978469007837049","upvoted":false,"upvotesCount":9,"text":"Many Plugins","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978469007837049","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468963938643":{"id":"101978468963938643","upvoted":false,"upvotesCount":8,"text":"Git and Maven integration is better","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:101978468963938643","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469006718002":{"id":"101978469006718002","upvoted":false,"upvotesCount":8,"text":"Great flexibility","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:101978469006718002","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469486116271":{"id":"101978469486116271","upvoted":false,"upvotesCount":7,"text":"100% free and open source","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:101978469486116271","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469419145339":{"id":"101978469419145339","upvoted":false,"upvotesCount":6,"text":"Github integration","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:101978469419145339","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469216861130":{"id":"101978469216861130","upvoted":false,"upvotesCount":6,"text":"Slack Integration (plugin)","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.18":{"node":{"type":"id","generated":false,"id":"Reason:101978469216861130","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468977339166":{"id":"101978468977339166","upvoted":false,"upvotesCount":5,"text":"Easy customisation","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.19":{"node":{"type":"id","generated":false,"id":"Reason:101978468977339166","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469190264264":{"id":"101978469190264264","upvoted":false,"upvotesCount":5,"text":"Self-hosted GitLab Integration (plugin)","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.20":{"node":{"type":"id","generated":false,"id":"Reason:101978469190264264","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470019207090":{"id":"101978470019207090","upvoted":false,"upvotesCount":4,"text":"Docker support","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.21":{"node":{"type":"id","generated":false,"id":"Reason:101978470019207090","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470052057945":{"id":"101978470052057945","upvoted":false,"upvotesCount":4,"text":"Pipeline API","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.22":{"node":{"type":"id","generated":false,"id":"Reason:101978470052057945","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470079723648":{"id":"101978470079723648","upvoted":false,"upvotesCount":3,"text":"Platform idnependency","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.23":{"node":{"type":"id","generated":false,"id":"Reason:101978470079723648","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470011575547":{"id":"101978470011575547","upvoted":false,"upvotesCount":3,"text":"Excellent docker integration","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.24":{"node":{"type":"id","generated":false,"id":"Reason:101978470011575547","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470049587762":{"id":"101978470049587762","upvoted":false,"upvotesCount":3,"text":"Fast builds","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.25":{"node":{"type":"id","generated":false,"id":"Reason:101978470049587762","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469563759918":{"id":"101978469563759918","upvoted":false,"upvotesCount":3,"text":"Hosted Externally","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.26":{"node":{"type":"id","generated":false,"id":"Reason:101978469563759918","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469901767149":{"id":"101978469901767149","upvoted":false,"upvotesCount":2,"text":"Customizable","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.27":{"node":{"type":"id","generated":false,"id":"Reason:101978469901767149","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103148608283871123":{"id":"103148608283871123","upvoted":false,"upvotesCount":2,"text":"AWS Integration","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.28":{"node":{"type":"id","generated":false,"id":"Reason:103148608283871123","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102740690743661362":{"id":"102740690743661362","upvoted":false,"upvotesCount":2,"text":"It's Everywhere","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.29":{"node":{"type":"id","generated":false,"id":"Reason:102740690743661362","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469490253313":{"id":"101978469490253313","upvoted":false,"upvotesCount":2,"text":"JOBDSL","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.30":{"node":{"type":"id","generated":false,"id":"Reason:101978469490253313","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103148614820981049":{"id":"103148614820981049","upvoted":false,"upvotesCount":2,"text":"Can be run as a Docker container","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.31":{"node":{"type":"id","generated":false,"id":"Reason:103148614820981049","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469883839830":{"id":"101978469883839830","upvoted":false,"upvotesCount":2,"text":"It`w worked","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.32":{"node":{"type":"id","generated":false,"id":"Reason:101978469883839830","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103820170121424615":{"id":"103820170121424615","upvoted":false,"upvotesCount":1,"text":"Easily extendable with seamless integration","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.33":{"node":{"type":"id","generated":false,"id":"Reason:103820170121424615","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103148602394002869":{"id":"103148602394002869","upvoted":false,"upvotesCount":1,"text":"Build PR Branch Only","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.34":{"node":{"type":"id","generated":false,"id":"Reason:103148602394002869","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103148608885195307":{"id":"103148608885195307","upvoted":false,"upvotesCount":1,"text":"NodeJS Support","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.35":{"node":{"type":"id","generated":false,"id":"Reason:103148608885195307","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103148609266988906":{"id":"103148609266988906","upvoted":false,"upvotesCount":1,"text":"PHP Support","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.36":{"node":{"type":"id","generated":false,"id":"Reason:103148609266988906","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103148609796287789":{"id":"103148609796287789","upvoted":false,"upvotesCount":1,"text":"Ruby/Rails Support","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.37":{"node":{"type":"id","generated":false,"id":"Reason:103148609796287789","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469148863362":{"id":"101978469148863362","upvoted":false,"upvotesCount":1,"text":"Universal controller","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.38":{"node":{"type":"id","generated":false,"id":"Reason:101978469148863362","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:108138488676270290":{"id":"108138488676270290","upvoted":false,"upvotesCount":1,"text":"Loose Coupling","__typename":"Reason"},"$Tool:101231773703650742.pros.edges.39":{"node":{"type":"id","generated":false,"id":"Reason:108138488676270290","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773703650742.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.17","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.18","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.19","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.20","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.21","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.22","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.23","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.24","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.25","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.26","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.27","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.28","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.29","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.30","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.31","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.32","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.33","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.34","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.35","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.36","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.37","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.38","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.pros.edges.39","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:101978470133822696":{"id":"101978470133822696","upvoted":false,"upvotesCount":12,"text":"Workarounds needed for basic requirements","__typename":"Reason"},"$Tool:101231773703650742.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978470133822696","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470234565021":{"id":"101978470234565021","upvoted":false,"upvotesCount":9,"text":"Groovy with cumbersome syntax","__typename":"Reason"},"$Tool:101231773703650742.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978470234565021","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470139213732":{"id":"101978470139213732","upvoted":false,"upvotesCount":7,"text":"Plugins compatibility issues","__typename":"Reason"},"$Tool:101231773703650742.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978470139213732","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470138309153":{"id":"101978470138309153","upvoted":false,"upvotesCount":6,"text":"Lack of support","__typename":"Reason"},"$Tool:101231773703650742.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978470138309153","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470052242615":{"id":"101978470052242615","upvoted":false,"upvotesCount":6,"text":"Limited abilities with declarative pipelines","__typename":"Reason"},"$Tool:101231773703650742.cons.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978470052242615","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103675138094797994":{"id":"103675138094797994","upvoted":false,"upvotesCount":4,"text":"No YAML syntax","__typename":"Reason"},"$Tool:101231773703650742.cons.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:103675138094797994","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103675136906043367":{"id":"103675136906043367","upvoted":false,"upvotesCount":3,"text":"Too tied to plugins versions","__typename":"Reason"},"$Tool:101231773703650742.cons.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:103675136906043367","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773703650742.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.cons.edges.6","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232068670610693":{"id":"101232068670610693","username":"Puciek","title":"Devops guy","companyName":"X20X Development LTD","imageUrl":"https://img.stackshare.io/user/154777/default_053cb29696cdce3bad0c7b665f46272abf52e198.jpeg","thumbUrl":"https://img.stackshare.io/user/154777/thumb_053cb29696cdce3bad0c7b665f46272abf52e198.jpeg","displayName":"Tymoteusz Paul","__typename":"User"},"StackDecision:101212201442710058":{"user":{"type":"id","generated":false,"id":"User:101232068670610693","typename":"User"},"company":null,"link":{"type":"id","generated":true,"id":"$StackDecision:101212201442710058.link","typename":"Link"},"publicId":"101212201442710058","publishedAt":"2018-12-09T17:13:00Z","id":"101212201442710058","htmlContent":"<p>Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on \"live-example\" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).</p>\n\n<p>It always starts with an app, whatever it may be and reading the readmes available while <span class=\"tool\">Vagrant</span> and <span class=\"tool\">VirtualBox</span> is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into <span class=\"tool\">Ansible</span> playbook(s), and only stopping when doing a clear <code>vagrant up</code> or <code>vagrant reload</code> we will have a fully working environment. As our <span class=\"tool\">Vagrant</span> environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product. </p>\n\n<p>I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with <span class=\"tool\">Vagrant</span> as developer boxes should be as easy as <code>vagrant up</code>, but the meat of our product lies in <span class=\"tool\">Ansible</span> which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.</p>\n\n<p>We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab <span class=\"tool\">Elasticsearch</span>, <span class=\"tool\">Kibana</span>, and <span class=\"tool\">Logstash</span>. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through <span class=\"tool\">Ansible</span>, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.</p>\n\n<p>If we are happy with the state of the <span class=\"tool\">Ansible</span> it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: <span class=\"tool\">TeamCity</span>. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with <span class=\"tool\">Jenkins</span>, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with <span class=\"tool\">TeamCity</span>). It also comes with all the common-handy plugins like <span class=\"tool\">Slack</span> or <span class=\"tool\">Apache Maven</span> integration.</p>\n\n<p>The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it:\n1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around.\n2. All security credentials besides development environment must be sources from individual <span class=\"tool\">Vault</span> instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. <span class=\"tool\">TeamCity</span> shines in this department with excellent secrets-management.\n3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally.\n4. Deployment builds should be directly tied to specific <span class=\"tool\">Git</span> branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).</p>\n\n<p>Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common <span class=\"tool\">Docker</span> and <span class=\"tool\">CircleCI</span> setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and <span class=\"tool\">LXC</span>. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for <span class=\"tool\">Amazon EC2</span> (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.</p>","viewCount":5517884,"upvotesCount":23,"services":[{"type":"id","generated":false,"id":"Tool:101231773744147511","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773746758442","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773700412232","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773774313645","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774140043342","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774125690843","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773997873230","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773703650742","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773705712932","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773830185558","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774655920535","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773858546548","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773501041914","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775247666243","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773405612798","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101212201442710058.link":{"url":"http://puciek.me/2018/12/how-to-design-ci-cd-pipelines-or-rather-how-i-do-it","title":"How to design CI/CD pipelines, or rather how I do it. | Tymoteusz Paul - X20X Development","__typename":"Link"},"Tool:101231773744147511":{"id":"101231773744147511","name":"Vagrant","slug":"vagrant","title":"A tool for building and distributing development environments","verified":true,"imageUrl":"https://img.stackshare.io/service/768/150px-Vagrant.png","canonicalUrl":"/vagrant","path":"/vagrant","votes":1500,"fans":9117,"stacks":9496,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773746758442":{"id":"101231773746758442","name":"VirtualBox","slug":"virtualbox","title":"Run nearly any operating system on a single machine and to freely switch between OS instances running simultaneously","verified":false,"imageUrl":"https://img.stackshare.io/service/774/vbox_94px.png","canonicalUrl":"/virtualbox","path":"/virtualbox","votes":1128,"fans":27056,"stacks":27338,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773700412232":{"id":"101231773700412232","name":"Ansible","slug":"ansible","title":"Radically simple configuration-management, application deployment, task-execution, and multi-node orchestration engine","verified":true,"imageUrl":"https://img.stackshare.io/service/663/ElOjna20.png","canonicalUrl":"/ansible","path":"/ansible","votes":1309,"fans":16491,"stacks":16612,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773774313645":{"id":"101231773774313645","name":"Elasticsearch","slug":"elasticsearch","title":"Open Source, Distributed, RESTful Search Engine","verified":true,"imageUrl":"https://img.stackshare.io/service/841/Image_2019-05-20_at_4.58.04_PM.png","canonicalUrl":"/elasticsearch","path":"/elasticsearch","votes":1633,"fans":29002,"stacks":30387,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774140043342":{"id":"101231774140043342","name":"Kibana","slug":"kibana","title":"Visualize your Elasticsearch data and navigate the Elastic Stack","verified":true,"imageUrl":"https://img.stackshare.io/service/1722/Image_2019-05-20_at_4.53.31_PM.png","canonicalUrl":"/kibana","path":"/kibana","votes":257,"fans":17667,"stacks":18010,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774125690843":{"id":"101231774125690843","name":"Logstash","slug":"logstash","title":"Collect, Parse, & Enrich Data","verified":true,"imageUrl":"https://img.stackshare.io/service/1683/preview.png","canonicalUrl":"/logstash","path":"/logstash","votes":102,"fans":9579,"stacks":9763,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773997873230":{"id":"101231773997873230","name":"TeamCity","slug":"teamcity","title":"TeamCity is an ultimate Continuous Integration tool for professionals","verified":true,"imageUrl":"https://img.stackshare.io/service/1357/317jQkeS.png","canonicalUrl":"/teamcity","path":"/teamcity","votes":309,"fans":1262,"stacks":1009,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773705712932":{"id":"101231773705712932","name":"Slack","slug":"slack","title":"Bring all your communication together in one place","verified":false,"imageUrl":"https://img.stackshare.io/service/675/RNiSRYOF_400x400.jpg","canonicalUrl":"/slack","path":"/slack","votes":6025,"fans":100157,"stacks":105497,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773830185558":{"id":"101231773830185558","name":"Apache Maven","slug":"maven","title":"Apache build manager for Java projects. ","verified":false,"imageUrl":"https://img.stackshare.io/package_manager/977/default_9833f2ef0bbc2a946b4cc5e9307264033361076b.png","canonicalUrl":"/maven","path":"/maven","votes":413,"fans":2288,"stacks":2404,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774655920535":{"id":"101231774655920535","name":"Vault","slug":"vault","title":"Secure, store, and tightly control access to tokens, passwords, certificates, API keys, and other secrets in modern computing","verified":true,"imageUrl":"https://img.stackshare.io/service/2905/vault.png","canonicalUrl":"/vault","path":"/vault","votes":69,"fans":948,"stacks":702,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773858546548":{"id":"101231773858546548","name":"Git","slug":"git","title":"Fast, scalable, distributed revision control system","verified":false,"imageUrl":"https://img.stackshare.io/service/1046/git.png","canonicalUrl":"/git","path":"/git","votes":6591,"fans":171394,"stacks":172517,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773669807419":{"id":"101231773669807419","name":"Docker","slug":"docker","title":"Enterprise Container Platform for High-Velocity Innovation.","verified":true,"imageUrl":"https://img.stackshare.io/service/586/n4u37v9t_400x400.png","canonicalUrl":"/docker","path":"/docker","votes":3825,"fans":136606,"stacks":139622,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773501041914":{"id":"101231773501041914","name":"CircleCI","slug":"circleci","title":"Automate your development process quickly, safely, and at scale","verified":true,"imageUrl":"https://img.stackshare.io/service/190/CvqrSSFs_400x400.jpg","canonicalUrl":"/circleci","path":"/circleci","votes":962,"fans":8340,"stacks":8980,"following":false,"followContext":null,"__typename":"Tool","followers":{"type":"id","generated":true,"id":"$Tool:101231773501041914.followers","typename":"UserConnection"},"githubForksCount":null,"thumbRetinaUrl":"https://img.stackshare.io/service/190/thumb_retina_CvqrSSFs_400x400.jpg","description":"Continuous integration and delivery platform helps software teams rapidly release code with confidence by automating the build, test, and deploy process. Offers a modern software development platform that lets teams ramp.","contactEnabled":true,"contactButtonText":"Visit CircleCI","contactFlow":{"type":"json","json":{"links":[{"url":"https://circleci.com/?utm_source=stackshare&utm_medium=display","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773501041914.cons","typename":"ReasonConnection"},"stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773501041914.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"Tool:101231775247666243":{"id":"101231775247666243","name":"LXC","slug":"lxc","title":"Linux containers","verified":false,"imageUrl":"https://img.stackshare.io/service/3884/linux-containers.png","canonicalUrl":"/lxc","path":"/lxc","votes":19,"fans":230,"stacks":104,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773405612798":{"id":"101231773405612798","name":"Amazon EC2","slug":"amazon-ec2","title":"Scalable, pay-as-you-go compute capacity in the cloud","verified":false,"imageUrl":"https://img.stackshare.io/service/18/amazon-ec2.png","canonicalUrl":"/amazon-ec2","path":"/amazon-ec2","votes":2547,"fans":39421,"stacks":44314,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773703650742.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101212201442710058","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101231989467340423":{"id":"101231989467340423","username":"tschellenbach","title":"CEO","companyName":"Stream","imageUrl":"https://img.stackshare.io/user/729/default_26174a8ea66120fe225f469f847f337b01e82e1f.png","thumbUrl":"https://img.stackshare.io/user/729/thumb_26174a8ea66120fe225f469f847f337b01e82e1f.png","displayName":"Thierry Schellenbach","__typename":"User"},"StackDecision:101031322395260474":{"user":{"type":"id","generated":false,"id":"User:101231989467340423","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101031322395260474.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101031322395260474.link","typename":"Link"},"publicId":"101031322395260474","publishedAt":"2018-09-13T08:17:13Z","id":"101031322395260474","htmlContent":"<p>Releasing new versions of our services is done by <span class=\"tool\">Travis CI</span>. Travis first runs our test suite. Once it passes, it publishes a new release binary to <span class=\"tool\">GitHub</span>.</p>\n\n<p>Common tasks such as installing dependencies for the <span class=\"tool\">Go</span> project, or building a binary are automated using plain old Makefiles. (We know, crazy old school, right?) Our binaries are compressed using UPX.</p>\n\n<p>Travis has come a long way over the past years. I used to prefer <span class=\"tool\">Jenkins</span> in some cases since it was easier to debug broken builds. With the addition of the aptly named “debug build” button, Travis is now the clear winner. It’s easy to use and free for open source, with no need to maintain anything.</p>\n\n<p><span class=\"topic\">#ContinuousIntegration</span> <span class=\"topic\">#CodeCollaborationVersionControl</span></p>","viewCount":672245,"upvotesCount":23,"services":[{"type":"id","generated":false,"id":"Tool:101231773842107538","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773636491087","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773703650742","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988723036469","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988700396002","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:101031322395260474.company":{"imageUrl":"https://img.stackshare.io/company/2139/default_5d6bc688e64213dc42bb467533c97fc793ccc5ca.jpg","thumbUrl":"https://img.stackshare.io/company/2139/thumb_5d6bc688e64213dc42bb467533c97fc793ccc5ca.jpg","name":"Stream","path":"/companies/stream","features":[],"__typename":"Company"},"$StackDecision:101031322395260474.link":{"url":"https://stackshare.io/stream/stream-and-go-news-feeds-for-over-300-million-end-users","title":"Stream & Go: News Feeds for Over 300 Million End Users - Stream Tech Stack | StackShare","__typename":"Link"},"Tool:101231773842107538":{"id":"101231773842107538","name":"Golang","slug":"golang","title":"An open source programming language that makes it easy to build simple, reliable, and efficient software","verified":true,"imageUrl":"https://img.stackshare.io/service/1005/O6AczwfV_400x400.png","canonicalUrl":"/golang","path":"/golang","votes":3188,"fans":15675,"stacks":14695,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773636491087":{"id":"101231773636491087","name":"Travis CI","slug":"travis-ci","title":"A hosted continuous integration service for open source and private projects","verified":true,"imageUrl":"https://img.stackshare.io/service/460/Lu6cGu0z_400x400.png","canonicalUrl":"/travis-ci","path":"/travis-ci","votes":1751,"fans":8293,"stacks":9498,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773410696721":{"id":"101231773410696721","name":"GitHub","slug":"github","title":"Powerful collaboration, review, and code management for open source and private development projects","verified":true,"imageUrl":"https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg","canonicalUrl":"/github","path":"/github","votes":10238,"fans":236547,"stacks":238763,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988723036469":{"name":"ContinuousIntegration","id":"101231988723036469","__typename":"Topic"},"Topic:101231988700396002":{"name":"CodeCollaborationVersionControl","id":"101231988700396002","__typename":"Topic"},"$Tool:101231773703650742.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:101031322395260474","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773703650742.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773703650742.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773703650742.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.0":{"node":{"type":"id","generated":false,"id":"Tool:101231773703650742","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773501041914.followers":{"count":6414,"__typename":"UserConnection"},"Reason:101978468185866562":{"id":"101978468185866562","upvoted":false,"upvotesCount":224,"text":"Github integration","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468185866562","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468106577131":{"id":"101978468106577131","upvoted":false,"upvotesCount":176,"text":"Easy setup","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468106577131","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468106715354":{"id":"101978468106715354","upvoted":false,"upvotesCount":152,"text":"Fast builds","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468106715354","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468185741982":{"id":"101978468185741982","upvoted":false,"upvotesCount":94,"text":"Competitively priced","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468185741982","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468540144836":{"id":"101978468540144836","upvoted":false,"upvotesCount":74,"text":"Slack integration","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468540144836","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468584631847":{"id":"101978468584631847","upvoted":false,"upvotesCount":54,"text":"Docker support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978468584631847","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468814875701":{"id":"101978468814875701","upvoted":false,"upvotesCount":44,"text":"Awesome UI","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978468814875701","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468106470409":{"id":"101978468106470409","upvoted":false,"upvotesCount":33,"text":"Great customer support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978468106470409","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468691027762":{"id":"101978468691027762","upvoted":false,"upvotesCount":18,"text":"Ios support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978468691027762","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468186058363":{"id":"101978468186058363","upvoted":false,"upvotesCount":14,"text":"Hipchat integration","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978468186058363","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468995384582":{"id":"101978468995384582","upvoted":false,"upvotesCount":13,"text":"SSH debug access","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978468995384582","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468983259555":{"id":"101978468983259555","upvoted":false,"upvotesCount":11,"text":"Free for Open Source","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978468983259555","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469231721872":{"id":"101978469231721872","upvoted":false,"upvotesCount":5,"text":" Bitbucket integration","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978469231721872","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468953175864":{"id":"101978468953175864","upvoted":false,"upvotesCount":5,"text":"Mobile support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978468953175864","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469362425671":{"id":"101978469362425671","upvoted":false,"upvotesCount":4,"text":"Nodejs support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:101978469362425671","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468838626994":{"id":"101978468838626994","upvoted":false,"upvotesCount":4,"text":"AWS CodeDeploy integration","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:101978468838626994","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468833316885":{"id":"101978468833316885","upvoted":false,"upvotesCount":3,"text":"Great support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:101978468833316885","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469707973571":{"id":"101978469707973571","upvoted":false,"upvotesCount":3,"text":"Free for Github private repo","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:101978469707973571","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469405099744":{"id":"101978469405099744","upvoted":false,"upvotesCount":3,"text":"YAML configuration","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.18":{"node":{"type":"id","generated":false,"id":"Reason:101978469405099744","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469064316075":{"id":"101978469064316075","upvoted":false,"upvotesCount":2,"text":"Clojurescript","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.19":{"node":{"type":"id","generated":false,"id":"Reason:101978469064316075","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469468490775":{"id":"101978469468490775","upvoted":false,"upvotesCount":2,"text":"OSX support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.20":{"node":{"type":"id","generated":false,"id":"Reason:101978469468490775","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469468868375":{"id":"101978469468868375","upvoted":false,"upvotesCount":2,"text":"Continuous Deployment","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.21":{"node":{"type":"id","generated":false,"id":"Reason:101978469468868375","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469434933016":{"id":"101978469434933016","upvoted":false,"upvotesCount":2,"text":"Simple, clean UI","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.22":{"node":{"type":"id","generated":false,"id":"Reason:101978469434933016","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469064306705":{"id":"101978469064306705","upvoted":false,"upvotesCount":2,"text":"Clojure","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.23":{"node":{"type":"id","generated":false,"id":"Reason:101978469064306705","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470049752551":{"id":"101978470049752551","upvoted":false,"upvotesCount":1,"text":"Unstable","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.24":{"node":{"type":"id","generated":false,"id":"Reason:101978470049752551","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104962500153623644":{"id":"104962500153623644","upvoted":false,"upvotesCount":1,"text":"Favorite","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.25":{"node":{"type":"id","generated":false,"id":"Reason:104962500153623644","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469686100766":{"id":"101978469686100766","upvoted":false,"upvotesCount":1,"text":"Helpful documentation","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.26":{"node":{"type":"id","generated":false,"id":"Reason:101978469686100766","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104321648368561079":{"id":"104321648368561079","upvoted":false,"upvotesCount":1,"text":"Autoscaling","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.27":{"node":{"type":"id","generated":false,"id":"Reason:104321648368561079","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102594301630840624":{"id":"102594301630840624","upvoted":false,"upvotesCount":1,"text":"Extremely configurable","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.28":{"node":{"type":"id","generated":false,"id":"Reason:102594301630840624","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469122796558":{"id":"101978469122796558","upvoted":false,"upvotesCount":1,"text":"Works","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.29":{"node":{"type":"id","generated":false,"id":"Reason:101978469122796558","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469153938998":{"id":"101978469153938998","upvoted":false,"upvotesCount":1,"text":"Android support","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.30":{"node":{"type":"id","generated":false,"id":"Reason:101978469153938998","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469318615585":{"id":"101978469318615585","upvoted":false,"upvotesCount":1,"text":"Fair pricing","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.31":{"node":{"type":"id","generated":false,"id":"Reason:101978469318615585","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469318728613":{"id":"101978469318728613","upvoted":false,"upvotesCount":1,"text":"All inclusive testing","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.32":{"node":{"type":"id","generated":false,"id":"Reason:101978469318728613","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469400133203":{"id":"101978469400133203","upvoted":false,"upvotesCount":1,"text":"Japanese in rspec comment appears OK","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.33":{"node":{"type":"id","generated":false,"id":"Reason:101978469400133203","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469458730774":{"id":"101978469458730774","upvoted":false,"upvotesCount":1,"text":"Build PR Branch Only","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.34":{"node":{"type":"id","generated":false,"id":"Reason:101978469458730774","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469669001865":{"id":"101978469669001865","upvoted":false,"upvotesCount":1,"text":"So circular","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.35":{"node":{"type":"id","generated":false,"id":"Reason:101978469669001865","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469720047757":{"id":"101978469720047757","upvoted":false,"upvotesCount":1,"text":"Easy setup, easy to understand, fast and reliable","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.36":{"node":{"type":"id","generated":false,"id":"Reason:101978469720047757","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469766148176":{"id":"101978469766148176","upvoted":false,"upvotesCount":1,"text":"Parallel builds for slow test suites","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.37":{"node":{"type":"id","generated":false,"id":"Reason:101978469766148176","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469855871736":{"id":"101978469855871736","upvoted":false,"upvotesCount":1,"text":"Easy setup. 2.0 is fast! ","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.38":{"node":{"type":"id","generated":false,"id":"Reason:101978469855871736","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469880637023":{"id":"101978469880637023","upvoted":false,"upvotesCount":1,"text":"Parallelism","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.39":{"node":{"type":"id","generated":false,"id":"Reason:101978469880637023","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469909904965":{"id":"101978469909904965","upvoted":false,"upvotesCount":1,"text":"Easy to deploy to private servers","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.40":{"node":{"type":"id","generated":false,"id":"Reason:101978469909904965","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469913008558":{"id":"101978469913008558","upvoted":false,"upvotesCount":1,"text":"Really easy to use","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.41":{"node":{"type":"id","generated":false,"id":"Reason:101978469913008558","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:108211714229451891":{"id":"108211714229451891","upvoted":false,"upvotesCount":0,"text":"Stable","__typename":"Reason"},"$Tool:101231773501041914.pros.edges.42":{"node":{"type":"id","generated":false,"id":"Reason:108211714229451891","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773501041914.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.17","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.18","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.19","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.20","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.21","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.22","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.23","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.24","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.25","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.26","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.27","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.28","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.29","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.30","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.31","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.32","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.33","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.34","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.35","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.36","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.37","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.38","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.39","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.40","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.41","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.pros.edges.42","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:101978470049860979":{"id":"101978470049860979","upvoted":false,"upvotesCount":12,"text":"Unstable","__typename":"Reason"},"$Tool:101231773501041914.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978470049860979","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103301825842735198":{"id":"103301825842735198","upvoted":false,"upvotesCount":6,"text":"Scammy pricing structure","__typename":"Reason"},"$Tool:101231773501041914.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:103301825842735198","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102106526040179940":{"id":"102106526040179940","upvoted":false,"upvotesCount":0,"text":"Aggressive Github permissions","__typename":"Reason"},"$Tool:101231773501041914.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:102106526040179940","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773501041914.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773501041914.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.cons.edges.2","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"$Tool:101231773501041914.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101212201442710058","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232089820318756":{"id":"101232089820318756","username":"tabbott","title":"Founder","companyName":"Zulip","imageUrl":"https://img.stackshare.io/user/193557/default_33ab3a32c21a074549f47dd31a11afbfc5d0819a.jpeg","thumbUrl":"https://img.stackshare.io/user/193557/thumb_33ab3a32c21a074549f47dd31a11afbfc5d0819a.jpeg","displayName":"Tim Abbott","__typename":"User"},"StackDecision:101897486541876212":{"user":{"type":"id","generated":false,"id":"User:101232089820318756","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101897486541876212.company","typename":"Company"},"link":null,"publicId":"101897486541876212","publishedAt":"2019-04-09T17:50:52Z","id":"101897486541876212","htmlContent":"<p>We actually started out on <span class=\"tool\">Travis CI</span>, but we've migrated our main builds to <span class=\"tool\">CircleCI</span>, and it's been a huge improvement. </p>\n\n<p>The reason it's been a huge improvement is that Travis CI has a fundamentally bad design for their images, where they start with a standard base Linux image containing tons of packages (several versions of postgres, every programming language environment, etc). This is potentially nice for the \"get builds for a small project running quickly\" use case, but it's a total disaster for a larger project that needs a decent number of dependencies and cares about the performance and reliability of their build. </p>\n\n<p>This issue is exacerbated by their networking infrastructure being unreliable; we usually saw over 1% of builds failing due to transient networking errors in Travis CI, <strong>even after we added retries</strong> to the most frequently failing operations like <code>apt update</code> or <code>pip install</code>. And they never install Ubuntu's point release updates to their images. So doing an <code>apt update</code>, <code>apt install</code>, or especially <code>apt upgrade</code> would take forever. We ended up writing code to actually uninstall many of their base packages and pin the versions of hundreds of others to get a semi-fast, semi-reliable build. It was infuriating.</p>\n\n<p>The CircleCI v2.0 system has the right design for a CI system: we can customize the base image to start with any expensive-to-install packages we need for our build, and we can update that image if and when we want to. The end result is that when migrating, we were able to delete all the hacky optimizations mentioned above, while still ending up with a 50% faster build latency. And we've also had 5-10x fewer issues with networking-related flakes, which means one doesn't have to constantly check whether a build failure is actually due to an issue with the code under test or \"just another networking flake\".</p>","viewCount":340472,"upvotesCount":14,"services":[{"type":"id","generated":false,"id":"Tool:101231773636491087","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773501041914","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101897486541876212.company":{"imageUrl":"https://img.stackshare.io/company/8625/default_82a9880731d85e55d9b18803f73e42c135fe6415.png","thumbUrl":"https://img.stackshare.io/company/8625/thumb_82a9880731d85e55d9b18803f73e42c135fe6415.png","name":"Zulip","path":"/companies/zulip","features":[],"__typename":"Company"},"$Tool:101231773501041914.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:101897486541876212","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773501041914.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773501041914.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773501041914.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.1":{"node":{"type":"id","generated":false,"id":"Tool:101231773501041914","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231774142825916":{"id":"101231774142825916","path":"/bamboo","slug":"bamboo","title":"Tie automated builds, tests, and releases together in a single workflow","votes":17,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231774142825916.followers","typename":"UserConnection"},"stacks":491,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/1729/bamboo.png","thumbRetinaUrl":"https://img.stackshare.io/service/1729/thumb_retina_bamboo.png","name":"Bamboo","description":"Focus on coding and count on Bamboo as your CI and build server! Create multi-stage build plans, set up triggers to start builds upon commits, and assign agents to your critical builds and deployments.","contactEnabled":false,"contactButtonText":"Integrate with Lighstep","contactFlow":{"type":"json","json":{"links":[{"url":"https://www.airapp.lightstep.com/signup?utm_source=stackshare&utm_medium=display&utm_campaign=air_acq_prospects_stackshare&utm_term=CTA_placement","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231774142825916.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231774142825916.cons","typename":"ReasonConnection"},"verified":true,"canonicalUrl":"/bamboo","fans":643,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231774142825916.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231774142825916.followers":{"count":504,"__typename":"UserConnection"},"Reason:101978469591983479":{"id":"101978469591983479","upvoted":false,"upvotesCount":10,"text":"Integrates with other Atlassian tools","__typename":"Reason"},"$Tool:101231774142825916.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469591983479","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469592374848":{"id":"101978469592374848","upvoted":false,"upvotesCount":4,"text":"Great notification scheme","__typename":"Reason"},"$Tool:101231774142825916.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469592374848","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470218183703":{"id":"101978470218183703","upvoted":false,"upvotesCount":2,"text":"Great UI","__typename":"Reason"},"$Tool:101231774142825916.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978470218183703","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105688089883454729":{"id":"105688089883454729","upvoted":false,"upvotesCount":1,"text":"Has Deployment Projects","__typename":"Reason"},"$Tool:101231774142825916.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:105688089883454729","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774142825916.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774142825916.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774142825916.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774142825916.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774142825916.pros.edges.3","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:102566548812493636":{"id":"102566548812493636","upvoted":false,"upvotesCount":6,"text":"Expensive","__typename":"Reason"},"$Tool:101231774142825916.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:102566548812493636","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:109088683163174728":{"id":"109088683163174728","upvoted":false,"upvotesCount":1,"text":"Low community support","__typename":"Reason"},"$Tool:101231774142825916.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:109088683163174728","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:109088680880857642":{"id":"109088680880857642","upvoted":false,"upvotesCount":1,"text":"Bad UI","__typename":"Reason"},"$Tool:101231774142825916.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:109088680880857642","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:109088678286272403":{"id":"109088678286272403","upvoted":false,"upvotesCount":1,"text":"Bad integration with docker","__typename":"Reason"},"$Tool:101231774142825916.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:109088678286272403","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231774142825916.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774142825916.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774142825916.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774142825916.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231774142825916.cons.edges.3","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:105513026502130228":{"id":"105513026502130228","username":"xiezhifeng","title":"cto","companyName":"csdn","imageUrl":"https://img.stackshare.io/user/841157/default_bda91f710833aefad256e7bfb4d19e7f6414621e.png","thumbUrl":"https://img.stackshare.io/user/841157/thumb_bda91f710833aefad256e7bfb4d19e7f6414621e.png","displayName":"xie zhifeng","__typename":"User"},"StackDecision:106209327616626180":{"user":{"type":"id","generated":false,"id":"User:105513026502130228","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:106209327616626180.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:106209327616626180.link","typename":"Link"},"publicId":"106209327616626180","publishedAt":"2021-05-10T05:48:46Z","id":"106209327616626180","htmlContent":"<p>I am choosing a DevOps toolset for my team. <span class=\"tool\">GitLab</span> is open source and quite cloud-native. <span class=\"tool\">Jenkins</span> has a very popular environment system but old-style technicals. <span class=\"tool\">Bamboo</span> is very nice but integrated only with Atlassian products.</p>","viewCount":28705,"upvotesCount":2,"services":[{"type":"id","generated":false,"id":"Tool:101231774142825916","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773703650742","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773791035497","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:106209327616626180.company":{"imageUrl":"https://img.stackshare.io/company/159211/default_be8efcf2d62c3fca1069c918d247458586cf14f3.jpg","thumbUrl":"https://img.stackshare.io/company/159211/thumb_be8efcf2d62c3fca1069c918d247458586cf14f3.jpg","name":"ByteArk","path":"/companies/byteark-cdn","features":[],"__typename":"Company"},"$StackDecision:106209327616626180.link":{"url":"http://blog.csdn.net","title":"CSDN博客 - 专业IT技术发表平台","__typename":"Link"},"Tool:101231773791035497":{"id":"101231773791035497","name":"GitLab","slug":"gitlab","title":"Open source self-hosted Git management software","verified":true,"imageUrl":"https://img.stackshare.io/service/880/lmalkclL.png","canonicalUrl":"/gitlab","path":"/gitlab","votes":2376,"fans":53201,"stacks":53056,"following":false,"followContext":null,"__typename":"Tool","followers":{"type":"id","generated":true,"id":"$Tool:101231773791035497.followers","typename":"UserConnection"},"githubForksCount":0,"thumbRetinaUrl":"https://img.stackshare.io/service/880/thumb_retina_lmalkclL.png","description":"GitLab offers git repository management, code reviews, issue tracking, activity feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers.","contactEnabled":false,"contactButtonText":"Get code intelligence in GitLab with Sourcegraph","contactFlow":{"type":"json","json":{"links":[{"url":"https://about.sourcegraph.com/?utm_source=stackshare&utm_medium=text&utm_campaign=gitlab&utm_content=text","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773791035497.cons","typename":"ReasonConnection"},"stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773791035497.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231774142825916.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:106209327616626180","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231774142825916.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231774142825916.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.2":{"node":{"type":"id","generated":false,"id":"Tool:101231774142825916","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231775485321502":{"id":"101231775485321502","path":"/azure-devops","slug":"azure-devops","title":"Services for teams to share code, track work, and ship software","votes":244,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231775485321502.followers","typename":"UserConnection"},"stacks":2372,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/4313/XNKktHjN_400x400.png","thumbRetinaUrl":"https://img.stackshare.io/service/4313/thumb_retina_XNKktHjN_400x400.png","name":"Azure DevOps","description":"Azure DevOps provides unlimited private Git hosting, cloud build for continuous integration, agile planning, and release management for continuous delivery to the cloud and on-premises. Includes broad IDE support.","contactEnabled":true,"contactButtonText":"Join the Snowflake Build Summit","contactFlow":{"type":"json","json":{"links":[{"url":"https://www.snowflake.com/build/?utm_source=stackshare&utm_medium=display&utm_campaign=na-us-en-stackshare&utm_content=-ld-build-stackshare","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons","typename":"ReasonConnection"},"verified":true,"canonicalUrl":"/azure-devops","fans":3194,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231775485321502.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231775485321502.followers":{"count":2540,"__typename":"UserConnection"},"Reason:101978469612541183":{"id":"101978469612541183","upvoted":false,"upvotesCount":54,"text":"Complete and powerful","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469612541183","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469676569824":{"id":"101978469676569824","upvoted":false,"upvotesCount":31,"text":"Huge extension ecosystem","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469676569824","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469990530461":{"id":"101978469990530461","upvoted":false,"upvotesCount":27,"text":"Azure integration","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978469990530461","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470185322452":{"id":"101978470185322452","upvoted":false,"upvotesCount":26,"text":"One Stop Shop For Build server, Project Mgt, CDCI ","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978470185322452","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469704025469":{"id":"101978469704025469","upvoted":false,"upvotesCount":25,"text":"Flexible and powerful","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978469704025469","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469954847648":{"id":"101978469954847648","upvoted":false,"upvotesCount":15,"text":"Everything I need. Simple and intuitive UI","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978469954847648","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469976369984":{"id":"101978469976369984","upvoted":false,"upvotesCount":13,"text":"Support Open Source","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978469976369984","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469991331661":{"id":"101978469991331661","upvoted":false,"upvotesCount":8,"text":"Integrations","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978469991331661","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102417278791373842":{"id":"102417278791373842","upvoted":false,"upvotesCount":7,"text":"GitHub Integration","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:102417278791373842","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104313520938115890":{"id":"104313520938115890","upvoted":false,"upvotesCount":6,"text":"Cost free for Stakeholders","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:104313520938115890","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103773387831026191":{"id":"103773387831026191","upvoted":false,"upvotesCount":6,"text":"Project Mgmt Features","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:103773387831026191","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104105856787910690":{"id":"104105856787910690","upvoted":false,"upvotesCount":6,"text":"One 4 all","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:104105856787910690","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104313537577922515":{"id":"104313537577922515","upvoted":false,"upvotesCount":5,"text":"Runs in the cloud","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:104313537577922515","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469948153156":{"id":"101978469948153156","upvoted":false,"upvotesCount":5,"text":"Crap","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978469948153156","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105112695003820229":{"id":"105112695003820229","upvoted":false,"upvotesCount":3,"text":"Agent On-Premise(Linux - Windows)","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:105112695003820229","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103915580825413844":{"id":"103915580825413844","upvoted":false,"upvotesCount":2,"text":"Aws integration","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:103915580825413844","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102417277856461619":{"id":"102417277856461619","upvoted":false,"upvotesCount":2,"text":"Jenkins Integration","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:102417277856461619","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:107896030401469962":{"id":"107896030401469962","upvoted":false,"upvotesCount":2,"text":"Link Test Cases to Stories","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:107896030401469962","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:105422757756325606":{"id":"105422757756325606","upvoted":false,"upvotesCount":1,"text":"GCP Integration","__typename":"Reason"},"$Tool:101231775485321502.pros.edges.18":{"node":{"type":"id","generated":false,"id":"Reason:105422757756325606","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231775485321502.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.17","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.pros.edges.18","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:102111779650173994":{"id":"102111779650173994","upvoted":false,"upvotesCount":7,"text":"Still dependant on C# for agents","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:102111779650173994","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104992327744453943":{"id":"104992327744453943","upvoted":false,"upvotesCount":4,"text":"Many in devops disregard MS altogether","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:104992327744453943","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102111771312633849":{"id":"102111771312633849","upvoted":false,"upvotesCount":4,"text":"Not a requirements management tool","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:102111771312633849","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102111775380327430":{"id":"102111775380327430","upvoted":false,"upvotesCount":4,"text":"Capacity across cross functional teams not visibile","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:102111775380327430","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102111777097797337":{"id":"102111777097797337","upvoted":false,"upvotesCount":4,"text":"Half Baked","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:102111777097797337","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102111778018846138":{"id":"102111778018846138","upvoted":false,"upvotesCount":3,"text":"Jack of all trades, master of none","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:102111778018846138","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102111780359612069":{"id":"102111780359612069","upvoted":false,"upvotesCount":3,"text":"Poor Jenkins integration","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:102111780359612069","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:107896024159189578":{"id":"107896024159189578","upvoted":false,"upvotesCount":2,"text":"Tedious for test plan/case creation","__typename":"Reason"},"$Tool:101231775485321502.cons.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:107896024159189578","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231775485321502.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.cons.edges.7","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:102133416453263150":{"id":"102133416453263150","username":"Berryworld","title":"Senior Software Architect","companyName":"BerryWorld","imageUrl":"https://img.stackshare.io/user/295951/default_c5b0093e677a1b5cb86d7ec04e2377500c5e30ea.jpeg","thumbUrl":"https://img.stackshare.io/user/295951/thumb_c5b0093e677a1b5cb86d7ec04e2377500c5e30ea.jpeg","displayName":"Farzad Jalali","__typename":"User"},"StackDecision:102133557556206457":{"user":{"type":"id","generated":false,"id":"User:102133416453263150","typename":"User"},"company":null,"link":null,"publicId":"102133557556206457","publishedAt":"2019-05-21T10:26:49Z","id":"102133557556206457","htmlContent":"<p><span class=\"tool\">Visual Studio</span> <span class=\"tool\">Azure DevOps</span> <span class=\"tool\">Azure Functions</span> <span class=\"tool\">Azure Websites</span> <span class=\"topic\"><span class=\"topic\"><span class=\"topic\">#Azure</span></span></span> <span class=\"topic\"><span class=\"topic\"><span class=\"topic\">#Azure</span></span>KeyVault</span> <span class=\"topic\"><span class=\"topic\"><span class=\"topic\">#Azure</span></span>AD</span> <span class=\"topic\"><span class=\"topic\"><span class=\"topic\">#Azure</span></span>Apps</span> </p>\n\n<p><span class=\"topic\"><span class=\"topic\"><span class=\"topic\">#Azure</span></span></span> Cloud\n Since Amazon is potentially our competitor then we need a different cloud vendor, also our programmers are microsoft oriented so the choose were obviously <span class=\"topic\"><span class=\"topic\">#Azure</span></span> for us.</p>\n\n<p><span class=\"tool\">Azure DevOps</span>\nBecause we need to be able to develop a neww pipeline into Azure environment ina few minutes.</p>\n\n<p><span class=\"tool\">Azure Kubernetes Service</span>\nWe already in <span class=\"topic\"><span class=\"topic\">#Azure</span></span> , also need to use K8s , so let's use AKS as it's a manged Kubernetes in the <span class=\"topic\"><span class=\"topic\"><span class=\"topic\">#Azure</span></span></span> </p>","viewCount":221221,"upvotesCount":8,"services":[{"type":"id","generated":false,"id":"Tool:101231774035145826","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775485321502","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775768748177","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774284953028","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778000971130","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988912463766","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988886079950","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988885721858","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:102133557472489079","typename":"Topic"}],"__typename":"StackDecision"},"Tool:101231774035145826":{"id":"101231774035145826","name":"Visual Studio","slug":"visual-studio","title":"State-of-the-art tools and services that you can use to create great apps for devices, the cloud, and everything in between.","verified":true,"imageUrl":"https://img.stackshare.io/service/1451/SR2hUhQN.png","canonicalUrl":"/visual-studio","path":"/visual-studio","votes":1087,"fans":38318,"stacks":38465,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775768748177":{"id":"101231775768748177","name":"Azure Functions","slug":"azure-functions","title":"Listen and react to events across your stack","verified":true,"imageUrl":"https://img.stackshare.io/service/4851/default_1c86e0d45d685cb73aa9a39a658159f6199de49d.png","canonicalUrl":"/azure-functions","path":"/azure-functions","votes":55,"fans":793,"stacks":567,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774284953028":{"id":"101231774284953028","name":"Azure Websites","slug":"azure-websites","title":"Deploy and scale modern websites and web apps in seconds","verified":false,"imageUrl":"https://img.stackshare.io/service/2100/W9gT7hZo.png","canonicalUrl":"/azure-websites","path":"/azure-websites","votes":23,"fans":453,"stacks":396,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231778000971130":{"id":"101231778000971130","name":"Azure Kubernetes Service","slug":"azure-kubernetes-service","title":"Simplify Kubernetes management, deployment, and operations.","verified":true,"imageUrl":"https://img.stackshare.io/service/9133/Azure-Container-Service_COLOR-300x300.png","canonicalUrl":"/azure-kubernetes-service","path":"/azure-kubernetes-service","votes":0,"fans":436,"stacks":357,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988912463766":{"name":"Azure","id":"101231988912463766","__typename":"Topic"},"Topic:101231988886079950":{"name":"AzureKeyVault","id":"101231988886079950","__typename":"Topic"},"Topic:101231988885721858":{"name":"AzureAD","id":"101231988885721858","__typename":"Topic"},"Topic:102133557472489079":{"name":"AzureApps","id":"102133557472489079","__typename":"Topic"},"$Tool:101231775485321502.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:102133557556206457","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232026032014539":{"id":"101232026032014539","username":"nrogoff","title":null,"companyName":"Avanade UK Ltd.","imageUrl":"https://img.stackshare.io/user/74418/default_590a16f2c35da7d3f06a27a6b666c0cc72efd811.jpeg","thumbUrl":"https://img.stackshare.io/user/74418/thumb_590a16f2c35da7d3f06a27a6b666c0cc72efd811.jpeg","displayName":"Nicholas Rogoff","__typename":"User"},"StackDecision:102145295722757693":{"user":{"type":"id","generated":false,"id":"User:101232026032014539","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:102145295722757693.company","typename":"Company"},"link":null,"publicId":"102145295722757693","publishedAt":"2019-05-23T12:11:58Z","id":"102145295722757693","htmlContent":"<p>Secure Membership Web API backed by SQL Server.\nThis is the backing API to store additional profile and complex membership metadata outside of an Azure AD B2C provider. The front-end using the Azure AD B2C to allow 3rd party trusted identity providers to authenticate. This API provides a way to add and manage more complex permission structures than can easily be maintained in Azure AD.</p>\n\n<p>We have .Net developers and an Azure infrastructure environment using server-less functions, logic apps and SaaS where ever possible. For this service I opted to keep it as a classic WebAPI project and deployed to AppService.</p>\n\n<ul>\n<li>Trusted Authentication Provider: @AzureActiveDirectoryB2C\n</li>\n<li>Frameworks: <span class=\"tool\">.NET Core</span>\n</li>\n<li>Language: <span class=\"tool\">C#</span> , <span class=\"tool\">Microsoft SQL Server</span> , <span class=\"tool\">JavaScript</span> </li>\n<li>IDEs: <span class=\"tool\">Visual Studio Code</span> , <span class=\"tool\">Visual Studio</span> </li>\n<li>Libraries: <span class=\"tool\">jQuery</span> @EntityFramework, @AutoMapper, @FeatureToggle , @Swashbuckle</li>\n<li>Database: @SqlAzure </li>\n<li>Source Control: <span class=\"tool\">Git</span> </li>\n<li>Build and Release Pipelines: <span class=\"tool\">Azure DevOps</span> </li>\n<li>Test tools: <span class=\"tool\">Postman</span> , <span class=\"tool\">Newman</span> </li>\n<li>Test framework: @nUnit, @moq </li>\n<li>Infrastructure: @AzureAppService, @AzureAPIManagement </li>\n</ul>","viewCount":1020913,"upvotesCount":7,"services":[{"type":"id","generated":false,"id":"Tool:101231776647396130","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773846783660","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853065695","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773939333405","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773849559490","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773858546548","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775485321502","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773990286939","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775183939838","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775423888689","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774035145826","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:102145295722757693.company":{"imageUrl":"https://img.stackshare.io/company/31562/default_85f78679464d23c64f24c516c5dc448ba4f2193b.png","thumbUrl":"https://img.stackshare.io/company/31562/thumb_85f78679464d23c64f24c516c5dc448ba4f2193b.png","name":"NHS Digital (NHS.UK)","path":"/companies/nhs-digital-nhs-uk","features":[],"__typename":"Company"},"Tool:101231776647396130":{"id":"101231776647396130","name":".NET Core","slug":"dot-net-core","title":"An Open Source, General-Purpose Development Platform Maintained by Microsoft and the .NET Community","verified":false,"imageUrl":"https://img.stackshare.io/service/6403/default_91fc1f0ee315262794273aa1387eaf8fed8436e6.png","canonicalUrl":"/dot-net-core","path":"/dot-net-core","votes":145,"fans":3034,"stacks":2665,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773846783660":{"id":"101231773846783660","name":"C#","slug":"c-sharp","title":"Simple, general-purpose, object-oriented programming language for the .NET platform","verified":true,"imageUrl":"https://img.stackshare.io/service/1015/1200px-C_Sharp_wordmark.svg.png","canonicalUrl":"/c-sharp","path":"/c-sharp","votes":2044,"fans":44710,"stacks":46029,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773853065695":{"id":"101231773853065695","name":"Microsoft SQL Server","slug":"microsoft-sql-server","title":"A relational database management system developed by Microsoft","verified":false,"imageUrl":"https://img.stackshare.io/service/1027/sql_server.png","canonicalUrl":"/microsoft-sql-server","path":"/microsoft-sql-server","votes":539,"fans":16033,"stacks":16500,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773939333405":{"id":"101231773939333405","name":"JavaScript","slug":"javascript","title":"Lightweight, interpreted, object-oriented language with first-class functions","verified":false,"imageUrl":"https://img.stackshare.io/service/1209/javascript.jpeg","canonicalUrl":"/javascript","path":"/javascript","votes":7913,"fans":262443,"stacks":273880,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773849559490":{"id":"101231773849559490","name":"jQuery","slug":"jquery","title":"The Write Less, Do More, JavaScript Library.","verified":false,"imageUrl":"https://img.stackshare.io/service/1021/lxEKmMnB_400x400.jpg","canonicalUrl":"/jquery","path":"/jquery","votes":6552,"fans":72525,"stacks":179120,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773990286939":{"id":"101231773990286939","name":"Postman","slug":"postman","title":"Only complete API development environment","verified":true,"imageUrl":"https://img.stackshare.io/service/1336/xWMRvm_5_400x400.png","canonicalUrl":"/postman","path":"/postman","votes":1760,"fans":79996,"stacks":80388,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775183939838":{"id":"101231775183939838","name":"Newman","slug":"newman","title":"CLI collection runner for Postman","verified":true,"imageUrl":"https://img.stackshare.io/service/3766/10251060.png","canonicalUrl":"/newman","path":"/newman","votes":0,"fans":108,"stacks":78,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775423888689":{"id":"101231775423888689","name":"Visual Studio Code","slug":"visual-studio-code","title":"Build and debug modern web and cloud applications, by Microsoft","verified":true,"imageUrl":"https://img.stackshare.io/service/4202/Visual_Studio_Code_logo.png","canonicalUrl":"/visual-studio-code","path":"/visual-studio-code","votes":2203,"fans":145769,"stacks":141597,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231775485321502.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:102145295722757693","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231775485321502.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231775485321502.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231775485321502.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.3":{"node":{"type":"id","generated":false,"id":"Tool:101231775485321502","typename":"Tool"},"__typename":"ToolEdge"},"$Tool:101231773791035497.followers":{"count":44981,"__typename":"UserConnection"},"Reason:101978468499529242":{"id":"101978468499529242","upvoted":false,"upvotesCount":501,"text":"Self hosted","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468499529242","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468735427819":{"id":"101978468735427819","upvoted":false,"upvotesCount":428,"text":"Free","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468735427819","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468186371738":{"id":"101978468186371738","upvoted":false,"upvotesCount":336,"text":"Has community edition","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468186371738","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468181857101":{"id":"101978468181857101","upvoted":false,"upvotesCount":241,"text":"Easy setup","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468181857101","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468181935704":{"id":"101978468181935704","upvoted":false,"upvotesCount":239,"text":"Familiar interface","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468181935704","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468699968697":{"id":"101978468699968697","upvoted":false,"upvotesCount":133,"text":"Includes many features, including ci","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978468699968697","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468895620958":{"id":"101978468895620958","upvoted":false,"upvotesCount":109,"text":"Nice UI","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978468895620958","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468182099526":{"id":"101978468182099526","upvoted":false,"upvotesCount":82,"text":"Good integration with gitlabci","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978468182099526","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468809843815":{"id":"101978468809843815","upvoted":false,"upvotesCount":55,"text":"Simple setup","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978468809843815","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468199964355":{"id":"101978468199964355","upvoted":false,"upvotesCount":33,"text":"Has an official mobile app","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978468199964355","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468925128710":{"id":"101978468925128710","upvoted":false,"upvotesCount":32,"text":"Free private repository","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978468925128710","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469263670574":{"id":"101978469263670574","upvoted":false,"upvotesCount":29,"text":"Continuous Integration","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978469263670574","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468952368163":{"id":"101978468952368163","upvoted":false,"upvotesCount":20,"text":"Open source, great ui (like github)","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978468952368163","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469178962869":{"id":"101978469178962869","upvoted":false,"upvotesCount":16,"text":"Slack Integration","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978469178962869","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469333743962":{"id":"101978469333743962","upvoted":false,"upvotesCount":12,"text":"Full CI flow","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:101978469333743962","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469329877637":{"id":"101978469329877637","upvoted":false,"upvotesCount":10,"text":"Free and unlimited private git repos","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:101978469329877637","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469495060740":{"id":"101978469495060740","upvoted":false,"upvotesCount":8,"text":"User, group, and project access management is simple","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:101978469495060740","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469197310559":{"id":"101978469197310559","upvoted":false,"upvotesCount":7,"text":"Intuitive UI","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:101978469197310559","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469863830586":{"id":"101978469863830586","upvoted":false,"upvotesCount":7,"text":"Built-in CI","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.18":{"node":{"type":"id","generated":false,"id":"Reason:101978469863830586","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470236281483":{"id":"101978470236281483","upvoted":false,"upvotesCount":7,"text":"All in one (Git, CI, Agile..)","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.19":{"node":{"type":"id","generated":false,"id":"Reason:101978470236281483","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469626036273":{"id":"101978469626036273","upvoted":false,"upvotesCount":4,"text":"Both public and private Repositories","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.20":{"node":{"type":"id","generated":false,"id":"Reason:101978469626036273","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470021262795":{"id":"101978470021262795","upvoted":false,"upvotesCount":3,"text":"Integrated Docker Registry","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.21":{"node":{"type":"id","generated":false,"id":"Reason:101978470021262795","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103190484926595725":{"id":"103190484926595725","upvoted":false,"upvotesCount":3,"text":"CI","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.22":{"node":{"type":"id","generated":false,"id":"Reason:103190484926595725","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470021363392":{"id":"101978470021363392","upvoted":false,"upvotesCount":3,"text":"Full DevOps suite with Git","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.23":{"node":{"type":"id","generated":false,"id":"Reason:101978470021363392","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469323640527":{"id":"101978469323640527","upvoted":false,"upvotesCount":3,"text":"It's powerful source code management tool ","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.24":{"node":{"type":"id","generated":false,"id":"Reason:101978469323640527","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469384648607":{"id":"101978469384648607","upvoted":false,"upvotesCount":3,"text":"Excellent","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.25":{"node":{"type":"id","generated":false,"id":"Reason:101978469384648607","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469614443570":{"id":"101978469614443570","upvoted":false,"upvotesCount":3,"text":"Build/pipeline definition alongside code","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.26":{"node":{"type":"id","generated":false,"id":"Reason:101978469614443570","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469333620198":{"id":"101978469333620198","upvoted":false,"upvotesCount":3,"text":"Mattermost Chat client","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.27":{"node":{"type":"id","generated":false,"id":"Reason:101978469333620198","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469653975528":{"id":"101978469653975528","upvoted":false,"upvotesCount":3,"text":"Issue system","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.28":{"node":{"type":"id","generated":false,"id":"Reason:101978469653975528","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469853217095":{"id":"101978469853217095","upvoted":false,"upvotesCount":3,"text":"So easy to use","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.29":{"node":{"type":"id","generated":false,"id":"Reason:101978469853217095","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469984910722":{"id":"101978469984910722","upvoted":false,"upvotesCount":2,"text":"Because is the best remote host for git repositories","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.30":{"node":{"type":"id","generated":false,"id":"Reason:101978469984910722","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469803000200":{"id":"101978469803000200","upvoted":false,"upvotesCount":2,"text":"Dockerized","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.31":{"node":{"type":"id","generated":false,"id":"Reason:101978469803000200","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469674968140":{"id":"101978469674968140","upvoted":false,"upvotesCount":2,"text":"Free private repos","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.32":{"node":{"type":"id","generated":false,"id":"Reason:101978469674968140","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103291928064252192":{"id":"103291928064252192","upvoted":false,"upvotesCount":2,"text":"Great for team collaboration","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.33":{"node":{"type":"id","generated":false,"id":"Reason:103291928064252192","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470254171526":{"id":"101978470254171526","upvoted":false,"upvotesCount":2,"text":"Unlimited free repos & collaborators","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.34":{"node":{"type":"id","generated":false,"id":"Reason:101978470254171526","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469530854716":{"id":"101978469530854716","upvoted":false,"upvotesCount":2,"text":"It's fully integrated","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.35":{"node":{"type":"id","generated":false,"id":"Reason:101978469530854716","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469694697123":{"id":"101978469694697123","upvoted":false,"upvotesCount":2,"text":"I like the its runners and executors feature","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.36":{"node":{"type":"id","generated":false,"id":"Reason:101978469694697123","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469218480275":{"id":"101978469218480275","upvoted":false,"upvotesCount":2,"text":"One-click install through DigitalOcean","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.37":{"node":{"type":"id","generated":false,"id":"Reason:101978469218480275","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469633885706":{"id":"101978469633885706","upvoted":false,"upvotesCount":2,"text":"Security and Stable","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.38":{"node":{"type":"id","generated":false,"id":"Reason:101978469633885706","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469724026378":{"id":"101978469724026378","upvoted":false,"upvotesCount":2,"text":"Low maintenance cost due omnibus-deployment","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.39":{"node":{"type":"id","generated":false,"id":"Reason:101978469724026378","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469281097979":{"id":"101978469281097979","upvoted":false,"upvotesCount":2,"text":"On-premises","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.40":{"node":{"type":"id","generated":false,"id":"Reason:101978469281097979","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712475280424882":{"id":"103712475280424882","upvoted":false,"upvotesCount":1,"text":"Kubernetes integration with GitLab CI","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.41":{"node":{"type":"id","generated":false,"id":"Reason:103712475280424882","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:104296729643100514":{"id":"104296729643100514","upvoted":false,"upvotesCount":1,"text":"Multilingual interface","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.42":{"node":{"type":"id","generated":false,"id":"Reason:104296729643100514","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712487161051486":{"id":"103712487161051486","upvoted":false,"upvotesCount":1,"text":"Review Apps feature","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.43":{"node":{"type":"id","generated":false,"id":"Reason:103712487161051486","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469637124270":{"id":"101978469637124270","upvoted":false,"upvotesCount":1,"text":"Powerful software planning and maintaining tools","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.44":{"node":{"type":"id","generated":false,"id":"Reason:101978469637124270","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469653818289":{"id":"101978469653818289","upvoted":false,"upvotesCount":1,"text":"Groups of groups","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.45":{"node":{"type":"id","generated":false,"id":"Reason:101978469653818289","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712487481523132":{"id":"103712487481523132","upvoted":false,"upvotesCount":1,"text":"Built-in Docker Registry","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.46":{"node":{"type":"id","generated":false,"id":"Reason:103712487481523132","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469852909147":{"id":"101978469852909147","upvoted":false,"upvotesCount":1,"text":"Beautiful","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.47":{"node":{"type":"id","generated":false,"id":"Reason:101978469852909147","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469853044665":{"id":"101978469853044665","upvoted":false,"upvotesCount":1,"text":"Wounderful","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.48":{"node":{"type":"id","generated":false,"id":"Reason:101978469853044665","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469870705665":{"id":"101978469870705665","upvoted":false,"upvotesCount":1,"text":"Opensource","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.49":{"node":{"type":"id","generated":false,"id":"Reason:101978469870705665","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470019537850":{"id":"101978470019537850","upvoted":false,"upvotesCount":1,"text":"Not Microsoft Owned","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.50":{"node":{"type":"id","generated":false,"id":"Reason:101978470019537850","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470026613316":{"id":"101978470026613316","upvoted":false,"upvotesCount":1,"text":"Many private repo","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.51":{"node":{"type":"id","generated":false,"id":"Reason:101978470026613316","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470253717950":{"id":"101978470253717950","upvoted":false,"upvotesCount":1,"text":"Published IP list for whitelisting (gl-infra#434)","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.52":{"node":{"type":"id","generated":false,"id":"Reason:101978470253717950","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712492947388497":{"id":"103712492947388497","upvoted":false,"upvotesCount":1,"text":"The dashboard with deployed environments","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.53":{"node":{"type":"id","generated":false,"id":"Reason:103712492947388497","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712455995341320":{"id":"103712455995341320","upvoted":false,"upvotesCount":1,"text":"Powerful Continuous Integration System","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.54":{"node":{"type":"id","generated":false,"id":"Reason:103712455995341320","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712458035998302":{"id":"103712458035998302","upvoted":false,"upvotesCount":1,"text":"Kubernetes Integration","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.55":{"node":{"type":"id","generated":false,"id":"Reason:103712458035998302","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102618515132065621":{"id":"102618515132065621","upvoted":false,"upvotesCount":1,"text":"Native CI","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.56":{"node":{"type":"id","generated":false,"id":"Reason:102618515132065621","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468889607485":{"id":"101978468889607485","upvoted":false,"upvotesCount":1,"text":"HipChat intergration","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.57":{"node":{"type":"id","generated":false,"id":"Reason:101978468889607485","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469331557901":{"id":"101978469331557901","upvoted":false,"upvotesCount":1,"text":"It includes everything I need, all packaged with docker","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.58":{"node":{"type":"id","generated":false,"id":"Reason:101978469331557901","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468969723583":{"id":"101978468969723583","upvoted":false,"upvotesCount":0,"text":"Supports Radius/Ldap & Browser Code Edits","__typename":"Reason"},"$Tool:101231773791035497.pros.edges.59":{"node":{"type":"id","generated":false,"id":"Reason:101978468969723583","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773791035497.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.17","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.18","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.19","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.20","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.21","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.22","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.23","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.24","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.25","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.26","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.27","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.28","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.29","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.30","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.31","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.32","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.33","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.34","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.35","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.36","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.37","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.38","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.39","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.40","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.41","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.42","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.43","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.44","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.45","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.46","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.47","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.48","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.49","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.50","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.51","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.52","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.53","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.54","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.55","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.56","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.57","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.58","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.pros.edges.59","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:101978469544616871":{"id":"101978469544616871","upvoted":false,"upvotesCount":27,"text":"Slow ui performance","__typename":"Reason"},"$Tool:101231773791035497.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469544616871","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470025726690":{"id":"101978470025726690","upvoted":false,"upvotesCount":7,"text":"Introduce breaking bugs every release","__typename":"Reason"},"$Tool:101231773791035497.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978470025726690","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470251808886":{"id":"101978470251808886","upvoted":false,"upvotesCount":5,"text":"Insecure (no published IP list for whitelisting)","__typename":"Reason"},"$Tool:101231773791035497.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978470251808886","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712484655694033":{"id":"103712484655694033","upvoted":false,"upvotesCount":1,"text":"Built-in Docker Registry ","__typename":"Reason"},"$Tool:101231773791035497.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:103712484655694033","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103712485866816158":{"id":"103712485866816158","upvoted":false,"upvotesCount":0,"text":"Review Apps feature","__typename":"Reason"},"$Tool:101231773791035497.cons.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:103712485866816158","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773791035497.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773791035497.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.cons.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.cons.edges.4","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"StackDecision:101184293593162197":{"user":{"type":"id","generated":false,"id":"User:101232089820318756","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101184293593162197.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101184293593162197.link","typename":"Link"},"publicId":"101184293593162197","publishedAt":"2018-12-04T18:56:32Z","id":"101184293593162197","htmlContent":"<p>I have mixed feelings on <span class=\"tool\">GitHub</span> as a product and our use of it for the Zulip open source project. On the one hand, I do feel that being on GitHub helps people discover Zulip, because we have enough stars (etc.) that we rank highly among projects on the platform. and there is a definite benefit for lowering barriers to contribution (which is important to us) that GitHub has such a dominant position in terms of what everyone has accounts with.</p>\n\n<p>But even ignoring how one might feel about their new corporate owner (MicroSoft), in a lot of ways GitHub is a bad product for open source projects. Years after the \"Dear GitHub\" letter, there are still basic gaps in its issue tracker:</p>\n\n<ul>\n<li>You can't give someone permission to label/categorize issues without full write access to a project (including ability to merge things to master, post releases, etc.).\n</li>\n<li>You can't let anyone with a GitHub account self-assign issues to themselves.</li>\n<li>Many more similar issues.</li>\n</ul>\n\n<p>It's embarrassing, because I've talked to GitHub product managers at various open source events about these things for 3 years, and they always agree the thing is important, but then nothing ever improves in the Issues product. Maybe the new management at MicroSoft will fix their product management situation, but if not, I imagine we'll eventually do the migration to <span class=\"tool\">GitLab</span>.</p>\n\n<p>We have a custom bot project, <a href=\"http://github.com/zulip/zulipbot\" rel=\"nofollow noopener\" target=\"_blank\">http://github.com/zulip/zulipbot</a>, to deal with some of these issues where possible, and every other large project we talk to does the same thing, more or less.</p>","viewCount":701521,"upvotesCount":25,"services":[{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773791035497","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101184293593162197.company":{"imageUrl":"https://img.stackshare.io/company/8625/default_82a9880731d85e55d9b18803f73e42c135fe6415.png","thumbUrl":"https://img.stackshare.io/company/8625/thumb_82a9880731d85e55d9b18803f73e42c135fe6415.png","name":"Zulip","path":"/companies/zulip","features":[],"__typename":"Company"},"$StackDecision:101184293593162197.link":{"url":"http://github.com/zulip/zulip/","title":"GitHub - zulip/zulip: Zulip server - powerful open source team chat","__typename":"Link"},"$Tool:101231773791035497.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101184293593162197","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101232070678997624":{"id":"101232070678997624","username":"Scrayos","title":"CEO","companyName":"Scrayos UG (haftungsbeschränkt)","imageUrl":"https://img.stackshare.io/user/157783/default_3261fc6c63b4f7df47dd9f0524d6e1016d9107cb.png","thumbUrl":"https://img.stackshare.io/user/157783/thumb_3261fc6c63b4f7df47dd9f0524d6e1016d9107cb.png","displayName":"Joshua Dean Küpper","__typename":"User"},"StackDecision:101750627694181605":{"user":{"type":"id","generated":false,"id":"User:101232070678997624","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101750627694181605.company","typename":"Company"},"link":null,"publicId":"101750627694181605","publishedAt":"2019-03-14T19:22:43Z","id":"101750627694181605","htmlContent":"<p>We use <span class=\"tool\">GitLab CI</span> because of the great native integration as a part of the <span class=\"tool\">GitLab</span> framework and the linting-capabilities it offers. The visualization of complex pipelines and the embedding within the project overview made Gitlab CI even more convenient. We use it for all projects, all deployments and as a part of <span class=\"tool\">GitLab Pages</span>. </p>\n\n<p>While we initially used the Shell-executor, we quickly switched to the Docker-executor and use it exclusively now. </p>\n\n<p>We formerly used <span class=\"tool\">Jenkins</span> but preferred to handle everything within <span class=\"tool\">GitLab</span> . Aside from the unification of our infrastructure another motivation was the \"configuration-in-file\"-approach, that Gitlab CI offered, while Jenkins support of this concept was very limited and users had to resort to using the webinterface. Since the file is included within the repository, it is also version controlled, which was a huge plus for us.</p>","viewCount":447839,"upvotesCount":20,"services":[{"type":"id","generated":false,"id":"Tool:101231776189486570","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773791035497","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775801644822","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773703650742","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101750627694181605.company":{"imageUrl":"https://img.stackshare.io/company/23305/default_d6bc79c2bb597bc269388be95cc72731f00ace1e.png","thumbUrl":"https://img.stackshare.io/company/23305/thumb_d6bc79c2bb597bc269388be95cc72731f00ace1e.png","name":"Scrayos UG (haftungsbeschränkt)","path":"/companies/scrayos-ug-haftungsbeschrankt","features":[],"__typename":"Company"},"Tool:101231776189486570":{"id":"101231776189486570","name":"GitLab CI","slug":"gitlab-ci","title":"GitLab integrated CI to test, build and deploy your code","verified":true,"imageUrl":"https://img.stackshare.io/service/5545/9pAwHBR0.jpg","canonicalUrl":"/gitlab-ci","path":"/gitlab-ci","votes":73,"fans":2084,"stacks":2115,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775801644822":{"id":"101231775801644822","name":"GitLab Pages","slug":"gitlab-pages","title":"Create websites for your GitLab projects, groups, or user account","verified":true,"imageUrl":"https://img.stackshare.io/service/4907/lmalkclL.png","canonicalUrl":"/gitlab-pages","path":"/gitlab-pages","votes":10,"fans":347,"stacks":238,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773791035497.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:101750627694181605","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773791035497.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773791035497.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773791035497.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.4":{"node":{"type":"id","generated":false,"id":"Tool:101231773791035497","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231777263893339":{"id":"101231777263893339","path":"/spinnaker","slug":"spinnaker","title":"Multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence","votes":12,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231777263893339.followers","typename":"UserConnection"},"stacks":221,"githubForksCount":1173,"imageUrl":"https://img.stackshare.io/service/7674/7634182.png","thumbRetinaUrl":"https://img.stackshare.io/service/7674/thumb_retina_7634182.png","name":"Spinnaker","description":"Created at Netflix, it has been battle-tested in production by hundreds of teams over millions of deployments. It combines a powerful and flexible pipeline management system with integrations to the major cloud providers.","contactEnabled":false,"contactButtonText":"Integrate with Lighstep","contactFlow":{"type":"json","json":{"links":[{"url":"https://www.airapp.lightstep.com/signup?utm_source=stackshare&utm_medium=display&utm_campaign=air_acq_prospects_stackshare&utm_term=CTA_placement","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231777263893339.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231777263893339.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/spinnaker","fans":409,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231777263893339.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231777263893339.followers":{"count":332,"__typename":"UserConnection"},"Reason:102681511725206855":{"id":"102681511725206855","upvoted":false,"upvotesCount":12,"text":"Mature","__typename":"Reason"},"$Tool:101231777263893339.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:102681511725206855","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231777263893339.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777263893339.pros.edges.0","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:102681511040589262":{"id":"102681511040589262","upvoted":false,"upvotesCount":3,"text":"No GitOps","__typename":"Reason"},"$Tool:101231777263893339.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:102681511040589262","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103768310016617957":{"id":"103768310016617957","upvoted":false,"upvotesCount":1,"text":"Configuration time","__typename":"Reason"},"$Tool:101231777263893339.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:103768310016617957","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103768310773523105":{"id":"103768310773523105","upvoted":false,"upvotesCount":1,"text":"Management overhead","__typename":"Reason"},"$Tool:101231777263893339.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:103768310773523105","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103768311915190107":{"id":"103768311915190107","upvoted":false,"upvotesCount":1,"text":"Ease of use","__typename":"Reason"},"$Tool:101231777263893339.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:103768311915190107","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231777263893339.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777263893339.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777263893339.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777263893339.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231777263893339.cons.edges.3","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232005755435697":{"id":"101232005755435697","username":"jkodumal","title":"CTO","companyName":"LaunchDarkly","imageUrl":"https://img.stackshare.io/user/35058/default_93cffdd3de7457354ebd67ed848dcc0293db817f.jpeg","thumbUrl":"https://img.stackshare.io/user/35058/thumb_93cffdd3de7457354ebd67ed848dcc0293db817f.jpeg","displayName":"John Kodumal","__typename":"User"},"StackDecision:101739551483173129":{"user":{"type":"id","generated":false,"id":"User:101232005755435697","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101739551483173129.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101739551483173129.link","typename":"Link"},"publicId":"101739551483173129","publishedAt":"2019-03-12T20:25:54Z","id":"101739551483173129","htmlContent":"<p>LaunchDarkly is almost a five year old company, and our methodology for deploying was state of the art... for 2014. We recently undertook a project to modernize the way we <span class=\"topic\">#deploy</span> our software, moving from <span class=\"tool\">Ansible</span>-based deploy scripts that executed on our local machines, to using <span class=\"tool\">Spinnaker</span> (along with <span class=\"tool\">Terraform</span> and <span class=\"tool\">Packer</span>) as the basis of our deployment system. We've been using <span class=\"tool\">Armory</span>'s enterprise Spinnaker offering to make this project a reality.</p>","viewCount":281986,"upvotesCount":6,"services":[{"type":"id","generated":false,"id":"Tool:101231773700412232","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231777263893339","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773970332063","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773825068049","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776741734967","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:101739551483173129.company":{"imageUrl":"https://img.stackshare.io/company/6182/default_2119cf7ac922b781704952f39f729d1cc1bd3692.png","thumbUrl":"https://img.stackshare.io/company/6182/thumb_2119cf7ac922b781704952f39f729d1cc1bd3692.png","name":"LaunchDarkly","path":"/companies/launchdarkly","features":[],"__typename":"Company"},"$StackDecision:101739551483173129.link":{"url":"https://stackshare.io/launchdarkly/redux-scaling-launchdarkly-from-4-to-200-billion-feature-flags-daily","title":"Redux: Scaling LaunchDarkly from 4 to 200 billion feature flags daily - LaunchDarkly Tech Stack | StackShare","__typename":"Link"},"Tool:101231773970332063":{"id":"101231773970332063","name":"Terraform","slug":"terraform","title":"Describe your complete infrastructure as code and build resources across providers","verified":true,"imageUrl":"https://img.stackshare.io/service/1276/og-image-8b3e4f7d.png","canonicalUrl":"/terraform","path":"/terraform","votes":337,"fans":14130,"stacks":14410,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773825068049":{"id":"101231773825068049","name":"Packer","slug":"packer","title":"Create identical machine images for multiple platforms from a single source configuration","verified":true,"imageUrl":"https://img.stackshare.io/service/967/packer.png","canonicalUrl":"/packer","path":"/packer","votes":42,"fans":672,"stacks":559,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776741734967":{"id":"101231776741734967","name":"Armory","slug":"armory","title":"Make Deployments Boring and Self-Service","verified":true,"imageUrl":"https://img.stackshare.io/service/6591/default_773364c0e651db1b58e86defdaec0f1dc653acad.png","canonicalUrl":"/armory","path":"/armory","votes":0,"fans":33,"stacks":11,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231777263893339.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101739551483173129","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231777263893339.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231777263893339.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.5":{"node":{"type":"id","generated":false,"id":"Tool:101231777263893339","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773470689784":{"id":"101231773470689784","path":"/heroku","slug":"heroku","title":"Build, deliver, monitor and scale web apps and APIs with a trail blazing developer experience.","votes":3210,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231773470689784.followers","typename":"UserConnection"},"stacks":23296,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/133/3wgIDj3j.png","thumbRetinaUrl":"https://img.stackshare.io/service/133/thumb_retina_3wgIDj3j.png","name":"Heroku","description":"Heroku is a cloud application platform – a new way of building and deploying web apps. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling.","contactEnabled":true,"contactButtonText":"Deploy to Heroku from CircleCI","contactFlow":{"type":"json","json":{"links":[{"url":"http://bit.ly/3kH57Ua","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773470689784.cons","typename":"ReasonConnection"},"verified":true,"canonicalUrl":"/heroku","fans":23145,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773470689784.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773470689784.followers":{"count":18775,"__typename":"UserConnection"},"Reason:101978468038427785":{"id":"101978468038427785","upvoted":false,"upvotesCount":705,"text":"Easy deployment","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468038427785","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468034145586":{"id":"101978468034145586","upvoted":false,"upvotesCount":459,"text":"Free for side projects","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468034145586","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468080919001":{"id":"101978468080919001","upvoted":false,"upvotesCount":374,"text":"Huge time-saver","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468080919001","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468034332048":{"id":"101978468034332048","upvoted":false,"upvotesCount":348,"text":"Simple scaling","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468034332048","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468073416626":{"id":"101978468073416626","upvoted":false,"upvotesCount":261,"text":"Low devops skills required","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468073416626","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468216106776":{"id":"101978468216106776","upvoted":false,"upvotesCount":190,"text":"Easy setup","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978468216106776","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468084802857":{"id":"101978468084802857","upvoted":false,"upvotesCount":174,"text":"Add-ons for almost everything","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978468084802857","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468074884393":{"id":"101978468074884393","upvoted":false,"upvotesCount":153,"text":"Beginner friendly","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978468074884393","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468085075790":{"id":"101978468085075790","upvoted":false,"upvotesCount":150,"text":"Better for startups","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978468085075790","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468077745238":{"id":"101978468077745238","upvoted":false,"upvotesCount":133,"text":"Low learning curve","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978468077745238","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468194594993":{"id":"101978468194594993","upvoted":false,"upvotesCount":48,"text":"Postgres hosting","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978468194594993","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468034812598":{"id":"101978468034812598","upvoted":false,"upvotesCount":41,"text":"Easy to add collaborators","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978468034812598","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468240650146":{"id":"101978468240650146","upvoted":false,"upvotesCount":30,"text":"Faster development","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978468240650146","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468198873532":{"id":"101978468198873532","upvoted":false,"upvotesCount":24,"text":"Awesome documentation","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978468198873532","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468528988166":{"id":"101978468528988166","upvoted":false,"upvotesCount":19,"text":"Simple rollback","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:101978468528988166","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468590213455":{"id":"101978468590213455","upvoted":false,"upvotesCount":19,"text":"Focus on product, not deployment","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:101978468590213455","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468496148825":{"id":"101978468496148825","upvoted":false,"upvotesCount":15,"text":"Natural companion for rails development","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:101978468496148825","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468688628849":{"id":"101978468688628849","upvoted":false,"upvotesCount":15,"text":"Easy integration","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.17":{"node":{"type":"id","generated":false,"id":"Reason:101978468688628849","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468096284303":{"id":"101978468096284303","upvoted":false,"upvotesCount":12,"text":"Great customer support","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.18":{"node":{"type":"id","generated":false,"id":"Reason:101978468096284303","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469271456960":{"id":"101978469271456960","upvoted":false,"upvotesCount":8,"text":"GitHub integration","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.19":{"node":{"type":"id","generated":false,"id":"Reason:101978469271456960","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469010388419":{"id":"101978469010388419","upvoted":false,"upvotesCount":6,"text":"Painless & well documented","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.20":{"node":{"type":"id","generated":false,"id":"Reason:101978469010388419","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468717607679":{"id":"101978468717607679","upvoted":false,"upvotesCount":6,"text":"No-ops","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.21":{"node":{"type":"id","generated":false,"id":"Reason:101978468717607679","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468796983448":{"id":"101978468796983448","upvoted":false,"upvotesCount":4,"text":"I love that they make it free to launch a side project","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.22":{"node":{"type":"id","generated":false,"id":"Reason:101978468796983448","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469374821200":{"id":"101978469374821200","upvoted":false,"upvotesCount":4,"text":"Free","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.23":{"node":{"type":"id","generated":false,"id":"Reason:101978469374821200","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469271617559":{"id":"101978469271617559","upvoted":false,"upvotesCount":3,"text":"Great UI","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.24":{"node":{"type":"id","generated":false,"id":"Reason:101978469271617559","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468726387330":{"id":"101978468726387330","upvoted":false,"upvotesCount":3,"text":"Just works","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.25":{"node":{"type":"id","generated":false,"id":"Reason:101978468726387330","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469762602100":{"id":"101978469762602100","upvoted":false,"upvotesCount":2,"text":"PostgreSQL forking and following","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.26":{"node":{"type":"id","generated":false,"id":"Reason:101978469762602100","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:102813279916541532":{"id":"102813279916541532","upvoted":false,"upvotesCount":2,"text":"MySQL extension","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.27":{"node":{"type":"id","generated":false,"id":"Reason:102813279916541532","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:106954166635375868":{"id":"106954166635375868","upvoted":false,"upvotesCount":1,"text":"Security","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.28":{"node":{"type":"id","generated":false,"id":"Reason:106954166635375868","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:107214823631856422":{"id":"107214823631856422","upvoted":false,"upvotesCount":1,"text":"Able to host stuff good like Discord Bot","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.29":{"node":{"type":"id","generated":false,"id":"Reason:107214823631856422","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:106954161338221123":{"id":"106954161338221123","upvoted":false,"upvotesCount":0,"text":"Sec","__typename":"Reason"},"$Tool:101231773470689784.pros.edges.30":{"node":{"type":"id","generated":false,"id":"Reason:106954161338221123","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773470689784.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.16","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.17","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.18","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.19","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.20","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.21","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.22","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.23","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.24","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.25","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.26","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.27","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.28","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.29","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.pros.edges.30","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"Reason:101978469491020808":{"id":"101978469491020808","upvoted":false,"upvotesCount":26,"text":"Super expensive","__typename":"Reason"},"$Tool:101231773470689784.cons.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978469491020808","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469576977747":{"id":"101978469576977747","upvoted":false,"upvotesCount":8,"text":"Not a whole lot of flexibility","__typename":"Reason"},"$Tool:101231773470689784.cons.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978469576977747","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103632363160359932":{"id":"103632363160359932","upvoted":false,"upvotesCount":6,"text":"Storage","__typename":"Reason"},"$Tool:101231773470689784.cons.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:103632363160359932","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978470184546432":{"id":"101978470184546432","upvoted":false,"upvotesCount":6,"text":"No usable MySQL option","__typename":"Reason"},"$Tool:101231773470689784.cons.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978470184546432","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:103966660698722602":{"id":"103966660698722602","upvoted":false,"upvotesCount":4,"text":"Low performance on free tier","__typename":"Reason"},"$Tool:101231773470689784.cons.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:103966660698722602","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:106746536344671268":{"id":"106746536344671268","upvoted":false,"upvotesCount":1,"text":"24/7 support is $1,000 per month","__typename":"Reason"},"$Tool:101231773470689784.cons.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:106746536344671268","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773470689784.cons":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773470689784.cons.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.cons.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.cons.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.cons.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.cons.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.cons.edges.5","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"User:101232105721188820":{"id":"101232105721188820","username":"ruswerner","title":"Lead Engineer","companyName":"StackShare","imageUrl":"https://img.stackshare.io/user/223620/default_1e513bec60c7ca6a6ee6125383833dbaeec3ba47.jpeg","thumbUrl":"https://img.stackshare.io/user/223620/thumb_1e513bec60c7ca6a6ee6125383833dbaeec3ba47.jpeg","displayName":"Russel Werner","__typename":"User"},"StackDecision:101179192780777665":{"user":{"type":"id","generated":false,"id":"User:101232105721188820","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101179192780777665.company","typename":"Company"},"link":null,"publicId":"101179192780777665","publishedAt":"2018-12-03T21:19:00Z","id":"101179192780777665","htmlContent":"<p>StackShare Feed is built entirely with <span class=\"tool\">React</span>, <span class=\"tool\">Glamorous</span>, and <span class=\"tool\">Apollo</span>. One of our objectives with the public launch of the Feed was to enable a Server-side rendered (SSR) experience for our organic search traffic. When you visit the StackShare Feed, and you aren't logged in, you are delivered the Trending feed experience. We use an in-house <span class=\"tool\">Node.js</span> rendering microservice to generate this HTML. This microservice needs to run and serve requests independent of our <span class=\"tool\">Rails</span> web app. Up until recently, we had a mono-repo with our Rails and React code living happily together and all served from the same web process. In order to deploy our SSR app into a <span class=\"tool\">Heroku</span> environment, we needed to split out our front-end application into a separate repo in <span class=\"tool\">GitHub</span>. The driving factor in this decision was mostly due to limitations imposed by <span class=\"tool\">Heroku</span> specifically with how processes can't communicate with each other. A new SSR app was created in Heroku and linked directly to the frontend repo so it stays in-sync with changes. </p>\r\n\r\n<p>Related to this, we need a way to \"deploy\" our frontend changes to various server environments without building &amp; releasing the entire Ruby application. We built a hybrid <span class=\"tool\">Amazon S3</span> <span class=\"tool\">Amazon CloudFront</span> solution to host our <span class=\"tool\">Webpack</span> bundles. A new <span class=\"tool\">CircleCI</span> script builds the bundles and uploads them to S3. The final step in our rollout is to update some keys in <span class=\"tool\">Redis</span> so our Rails app knows which bundles to serve. The result of these efforts were significant. Our frontend team now moves independently of our backend team, our build &amp; release process takes only a few minutes, we are now using an edge CDN to serve JS assets, and we have pre-rendered React pages!</p>\r\n\r\n<p><span class=\"topic\">#StackDecisionsLaunch</span> <span class=\"topic\">#SSR</span> <span class=\"topic\">#Microservices</span> <span class=\"topic\">#FrontEndRepoSplit</span> </p>","viewCount":1651394,"upvotesCount":32,"services":[{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231778008701210","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776161934711","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773845103618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773835996572","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773470689784","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773409399220","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773403188549","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774125163302","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773501041914","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988917140544","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988918366806","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988911787479","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988920379723","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:101179192780777665.company":{"imageUrl":"https://img.stackshare.io/company/1595/default_0ef9f2b4cb2992a16b9ce66eafac78c97fa851e4.png","thumbUrl":"https://img.stackshare.io/company/1595/thumb_0ef9f2b4cb2992a16b9ce66eafac78c97fa851e4.png","name":"StackShare","path":"/companies/stackshare","features":[],"__typename":"Company"},"Tool:101231773849098825":{"id":"101231773849098825","name":"React","slug":"react","title":"A JavaScript library for building user interfaces","verified":false,"imageUrl":"https://img.stackshare.io/service/1020/OYIaJ1KK.png","canonicalUrl":"/react","path":"/react","votes":3950,"fans":136419,"stacks":140609,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231778008701210":{"id":"101231778008701210","name":"Glamorous","slug":"glamorous","title":"Maintainable CSS with React","verified":true,"imageUrl":"https://img.stackshare.io/service/9149/full.png","canonicalUrl":"/glamorous","path":"/glamorous","votes":0,"fans":41,"stacks":9,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776161934711":{"id":"101231776161934711","name":"Apollo","slug":"apollo","title":"GraphQL server for Express, Connect, Hapi, Koa and more","verified":false,"imageUrl":"https://img.stackshare.io/service/5508/CyUH653y.png","canonicalUrl":"/apollo","path":"/apollo","votes":22,"fans":2219,"stacks":2049,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773845103618":{"id":"101231773845103618","name":"Node.js","slug":"nodejs","title":"A platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications","verified":false,"imageUrl":"https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png","canonicalUrl":"/nodejs","path":"/nodejs","votes":8511,"fans":155041,"stacks":154475,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773835996572":{"id":"101231773835996572","name":"Rails","slug":"rails","title":"Web development that doesn't hurt","verified":false,"imageUrl":"https://img.stackshare.io/service/990/x57_Lorv.png","canonicalUrl":"/rails","path":"/rails","votes":5422,"fans":15130,"stacks":17284,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773409399220":{"id":"101231773409399220","name":"Amazon S3","slug":"amazon-s3","title":"Store and retrieve any amount of data, at any time, from anywhere on the web","verified":false,"imageUrl":"https://img.stackshare.io/service/25/amazon-s3.png","canonicalUrl":"/amazon-s3","path":"/amazon-s3","votes":2046,"fans":42650,"stacks":47663,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773403188549":{"id":"101231773403188549","name":"Amazon CloudFront","slug":"amazon-cloudfront","title":"Content delivery with low latency and high data transfer speeds","verified":false,"imageUrl":"https://img.stackshare.io/service/13/amazon-cloudfront.png","canonicalUrl":"/amazon-cloudfront","path":"/amazon-cloudfront","votes":935,"fans":12089,"stacks":19713,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774125163302":{"id":"101231774125163302","name":"Webpack","slug":"webpack","title":"A bundler for javascript and friends","verified":true,"imageUrl":"https://img.stackshare.io/service/1682/IMG_4636.PNG","canonicalUrl":"/webpack","path":"/webpack","votes":749,"fans":30023,"stacks":33046,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773854768982":{"id":"101231773854768982","name":"Redis","slug":"redis","title":"Open source (BSD licensed), in-memory data structure store","verified":false,"imageUrl":"https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png","canonicalUrl":"/redis","path":"/redis","votes":3866,"fans":47857,"stacks":51055,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988917140544":{"name":"StackDecisionsLaunch","id":"101231988917140544","__typename":"Topic"},"Topic:101231988918366806":{"name":"SSR","id":"101231988918366806","__typename":"Topic"},"Topic:101231988911787479":{"name":"Microservices","id":"101231988911787479","__typename":"Topic"},"Topic:101231988920379723":{"name":"FrontEndRepoSplit","id":"101231988920379723","__typename":"Topic"},"$Tool:101231773470689784.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101179192780777665","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:104042388677869390":{"id":"104042388677869390","username":"zimoony","title":"Senior Fullstack Developer","companyName":"QUANTUSflow Software GmbH","imageUrl":"https://img.stackshare.io/user/535402/default_002baf8a5098e7badd949774288e37e836a64e0f.jpeg","thumbUrl":"https://img.stackshare.io/user/535402/thumb_002baf8a5098e7badd949774288e37e836a64e0f.jpeg","displayName":"Simon Reymann","__typename":"User"},"StackDecision:104069607668616391":{"user":{"type":"id","generated":false,"id":"User:104042388677869390","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:104069607668616391.company","typename":"Company"},"link":null,"publicId":"104069607668616391","publishedAt":"2020-04-27T08:29:50Z","id":"104069607668616391","htmlContent":"<p>Our whole DevOps stack consists of the following tools:</p>\n\n<ul>\n<li><span class=\"tool\">GitHub</span> (incl. <span class=\"tool\">GitHub Pages</span>/<span class=\"tool\">Markdown</span> for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool</li>\n<li>Respectively <span class=\"tool\">Git</span> as revision control system</li>\n<li><span class=\"tool\">SourceTree</span> as <span class=\"tool\">Git</span> GUI</li>\n<li><span class=\"tool\">Visual Studio Code</span> as IDE</li>\n<li><span class=\"tool\">CircleCI</span> for continuous integration (automatize development process)</li>\n<li><span class=\"tool\">Prettier</span> / <span class=\"tool\">TSLint</span> / <span class=\"tool\">ESLint</span> as code linter</li>\n<li><span class=\"tool\">SonarQube</span> as quality gate</li>\n<li><span class=\"tool\">Docker</span> as container management (incl. <span class=\"tool\">Docker Compose</span> for multi-container application management)</li>\n<li><span class=\"tool\">VirtualBox</span> for operating system simulation tests</li>\n<li><span class=\"tool\">Kubernetes</span> as cluster management for docker containers</li>\n<li><span class=\"tool\">Heroku</span> for deploying in test environments</li>\n<li><span class=\"tool\">nginx</span> as web server (preferably used as facade server in production environment)</li>\n<li><span class=\"tool\">SSLMate</span> (using <span class=\"tool\">OpenSSL</span>) for certificate management</li>\n<li><span class=\"tool\">Amazon EC2</span> (incl. <span class=\"tool\">Amazon S3</span>) for deploying in stage (production-like) and production environments</li>\n<li><span class=\"tool\">PostgreSQL</span> as preferred database system</li>\n<li><span class=\"tool\">Redis</span> as preferred in-memory database/store (great for caching)</li>\n</ul>\n\n<p>The main reason we have chosen <span class=\"tool\">Kubernetes</span> over <span class=\"tool\">Docker Swarm</span> is related to the following artifacts:</p>\n\n<ul>\n<li>\n<strong>Key features:</strong> Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.</li>\n<li>\n<strong>Applications:</strong> An application can be deployed using a combination of pods, deployments, and services (or micro-services).</li>\n<li>\n<strong>Functionality:</strong> Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.</li>\n<li>\n<strong>Monitoring:</strong> It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).</li>\n<li>\n<strong>Scalability:</strong> All-in-one framework for distributed systems.</li>\n<li>\n<strong>Other Benefits:</strong> Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.</li>\n</ul>","viewCount":5057563,"upvotesCount":29,"services":[{"type":"id","generated":false,"id":"Tool:101231774758913738","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774572660226","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773861864225","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774802095562","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773854768982","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773853533403","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773409399220","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773405612798","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773470689784","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774206661614","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773746758442","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774781423216","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773669807419","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774515773093","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774903366255","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776199438193","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776970439629","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773501041914","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775423888689","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774092760028","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773858546548","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773905830618","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773708072227","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773410696721","typename":"Tool"}],"topics":[],"__typename":"StackDecision"},"$StackDecision:104069607668616391.company":{"imageUrl":"https://img.stackshare.io/company/161697/default_08547f3b95ad3a1f312db050bc6e0a5460ff1969.png","thumbUrl":"https://img.stackshare.io/company/161697/thumb_08547f3b95ad3a1f312db050bc6e0a5460ff1969.png","name":"QUANTUSflow Software GmbH","path":"/companies/quantusflow-software-gmbh","features":[],"__typename":"Company"},"Tool:101231774758913738":{"id":"101231774758913738","name":"OpenSSL","slug":"openssl","title":"Full-featured toolkit for the Transport Layer Security and Secure Sockets Layer protocols","verified":false,"imageUrl":"https://img.stackshare.io/service/3091/preview.png","canonicalUrl":"/openssl","path":"/openssl","votes":0,"fans":7281,"stacks":11547,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774572660226":{"id":"101231774572660226","name":"SSLMate","slug":"sslmate","title":"Buy SSL Certificates from the Command Line. Automate your renewals.","verified":false,"imageUrl":"https://img.stackshare.io/service/2752/i7GmJlTT.png","canonicalUrl":"/sslmate","path":"/sslmate","votes":2,"fans":24,"stacks":11,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773861864225":{"id":"101231773861864225","name":"NGINX","slug":"nginx","title":"A high performance free open source web server powering busiest sites on the Internet.","verified":true,"imageUrl":"https://img.stackshare.io/service/1052/YMxUfyWf.png","canonicalUrl":"/nginx","path":"/nginx","votes":5491,"fans":64870,"stacks":104197,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774802095562":{"id":"101231774802095562","name":"Docker Swarm","slug":"docker-swarm","title":"Native clustering for Docker. Turn a pool of Docker hosts into a single, virtual host.","verified":true,"imageUrl":"https://img.stackshare.io/service/3177/preview.png","canonicalUrl":"/docker-swarm","path":"/docker-swarm","votes":268,"fans":1153,"stacks":748,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773853533403":{"id":"101231773853533403","name":"PostgreSQL","slug":"postgresql","title":"A powerful, open source object-relational database system","verified":false,"imageUrl":"https://img.stackshare.io/service/1028/ASOhU5xJ.png","canonicalUrl":"/postgresql","path":"/postgresql","votes":3467,"fans":80085,"stacks":81471,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774206661614":{"id":"101231774206661614","name":"Kubernetes","slug":"kubernetes","title":"Manage a cluster of Linux containers as a single system to accelerate Dev and simplify Ops","verified":false,"imageUrl":"https://img.stackshare.io/service/1885/21_d3cvM.png","canonicalUrl":"/kubernetes","path":"/kubernetes","votes":639,"fans":51027,"stacks":49724,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774781423216":{"id":"101231774781423216","name":"Docker Compose","slug":"docker-compose","title":"Define and run multi-container applications with Docker","verified":true,"imageUrl":"https://img.stackshare.io/service/3136/docker-compose.png","canonicalUrl":"/docker-compose","path":"/docker-compose","votes":501,"fans":17610,"stacks":18400,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774515773093":{"id":"101231774515773093","name":"SonarQube","slug":"sonarqube","title":"Continuous Code Quality","verified":false,"imageUrl":"https://img.stackshare.io/service/2638/zIVhxKyn_400x400.png","canonicalUrl":"/sonarqube","path":"/sonarqube","votes":49,"fans":2252,"stacks":1450,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774903366255":{"id":"101231774903366255","name":"ESLint","slug":"eslint","title":"The fully pluggable JavaScript code quality tool","verified":false,"imageUrl":"https://img.stackshare.io/service/3337/Q4L7Jncy.jpg","canonicalUrl":"/eslint","path":"/eslint","votes":28,"fans":14806,"stacks":16782,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776199438193":{"id":"101231776199438193","name":"TSLint","slug":"tslint","title":"An extensible linter for the TypeScript language","verified":false,"imageUrl":"https://img.stackshare.io/service/5561/303157.png","canonicalUrl":"/tslint","path":"/tslint","votes":0,"fans":388,"stacks":446,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776970439629":{"id":"101231776970439629","name":"Prettier","slug":"prettier","title":"Prettier is an opinionated code formatter. ","verified":false,"imageUrl":"https://img.stackshare.io/service/7035/default_66f265943abed56bcdbfca1c866a4261b1fbb063.jpg","canonicalUrl":"/prettier","path":"/prettier","votes":7,"fans":1211,"stacks":1692,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231774092760028":{"id":"101231774092760028","name":"SourceTree","slug":"sourcetree","title":"A free Git GUI client for Windows and macOS","verified":false,"imageUrl":"https://img.stackshare.io/service/1599/sourcetree.png","canonicalUrl":"/sourcetree","path":"/sourcetree","votes":728,"fans":9021,"stacks":9414,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773905830618":{"id":"101231773905830618","name":"Markdown","slug":"markdown","title":"Text-to-HTML conversion tool/syntax for web writers, by John Gruber","verified":false,"imageUrl":"https://img.stackshare.io/service/1147/markdown.png","canonicalUrl":"/markdown","path":"/markdown","votes":961,"fans":17469,"stacks":18399,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773708072227":{"id":"101231773708072227","name":"GitHub Pages","slug":"github-pages","title":"Public webpages freely hosted and easily published.","verified":true,"imageUrl":"https://img.stackshare.io/service/683/default_5eeb660db1239eeb3f1c1f6187f2abf0f3a0500d.png","canonicalUrl":"/github-pages","path":"/github-pages","votes":1103,"fans":15265,"stacks":15957,"following":false,"followContext":null,"__typename":"Tool"},"$Tool:101231773470689784.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:104069607668616391","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773470689784.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773470689784.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773470689784.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.6":{"node":{"type":"id","generated":false,"id":"Tool:101231773470689784","typename":"Tool"},"__typename":"ToolEdge"},"Tool:101231773474576994":{"id":"101231773474576994","path":"/google-app-engine","slug":"google-app-engine","title":"Build web applications on the same scalable systems that power Google applications","votes":609,"following":false,"followers":{"type":"id","generated":true,"id":"$Tool:101231773474576994.followers","typename":"UserConnection"},"stacks":8872,"githubForksCount":null,"imageUrl":"https://img.stackshare.io/service/139/s01TMTGn.png","thumbRetinaUrl":"https://img.stackshare.io/service/139/thumb_retina_s01TMTGn.png","name":"Google App Engine","description":"Google has a reputation for highly reliable, high performance infrastructure. With App Engine you can take advantage of the 10 years of knowledge Google has in running massively scalable, performance driven systems. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. ","contactEnabled":true,"contactButtonText":"Build APIs, implement app logic on MongoDB Atlas","contactFlow":{"type":"json","json":{"links":[{"url":"https://www.mongodb.com/cloud/atlas/lp/try2?utm_source=stackshare&utm_medium=display&utm_term=atlas&utm_content=googleappengine","type":"website"}],"steps":["direct_link"]}},"pros":{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros","typename":"ReasonConnection"},"cons":{"type":"id","generated":true,"id":"$Tool:101231773474576994.cons","typename":"ReasonConnection"},"verified":false,"canonicalUrl":"/google-app-engine","fans":8742,"followContext":null,"__typename":"Tool","stackDecisionsWithAlternatives({\"first\":2})":{"type":"id","generated":true,"id":"$Tool:101231773474576994.stackDecisionsWithAlternatives({\"first\":2})","typename":"StackDecisionConnection"}},"$Tool:101231773474576994.followers":{"count":7013,"__typename":"UserConnection"},"Reason:101978468116508552":{"id":"101978468116508552","upvoted":false,"upvotesCount":144,"text":"Easy to deploy","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.0":{"node":{"type":"id","generated":false,"id":"Reason:101978468116508552","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468183673976":{"id":"101978468183673976","upvoted":false,"upvotesCount":106,"text":"Auto scaling","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.1":{"node":{"type":"id","generated":false,"id":"Reason:101978468183673976","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468190558128":{"id":"101978468190558128","upvoted":false,"upvotesCount":80,"text":"Good free plan","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.2":{"node":{"type":"id","generated":false,"id":"Reason:101978468190558128","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468308821440":{"id":"101978468308821440","upvoted":false,"upvotesCount":62,"text":"Easy management","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.3":{"node":{"type":"id","generated":false,"id":"Reason:101978468308821440","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468308995469":{"id":"101978468308995469","upvoted":false,"upvotesCount":56,"text":"Scalability","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.4":{"node":{"type":"id","generated":false,"id":"Reason:101978468308995469","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468309115080":{"id":"101978468309115080","upvoted":false,"upvotesCount":35,"text":"Low cost","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.5":{"node":{"type":"id","generated":false,"id":"Reason:101978468309115080","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468037547423":{"id":"101978468037547423","upvoted":false,"upvotesCount":32,"text":"Comprehensive set of features","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.6":{"node":{"type":"id","generated":false,"id":"Reason:101978468037547423","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468183900504":{"id":"101978468183900504","upvoted":false,"upvotesCount":28,"text":"All services in one place","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.7":{"node":{"type":"id","generated":false,"id":"Reason:101978468183900504","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468305917258":{"id":"101978468305917258","upvoted":false,"upvotesCount":22,"text":"Simple scaling","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.8":{"node":{"type":"id","generated":false,"id":"Reason:101978468305917258","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468308685188":{"id":"101978468308685188","upvoted":false,"upvotesCount":19,"text":"Quick and reliable cloud servers","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.9":{"node":{"type":"id","generated":false,"id":"Reason:101978468308685188","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468183802641":{"id":"101978468183802641","upvoted":false,"upvotesCount":6,"text":"Granular Billing","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.10":{"node":{"type":"id","generated":false,"id":"Reason:101978468183802641","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468434192597":{"id":"101978468434192597","upvoted":false,"upvotesCount":5,"text":"Easy to develop and unit test","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.11":{"node":{"type":"id","generated":false,"id":"Reason:101978468434192597","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468616945194":{"id":"101978468616945194","upvoted":false,"upvotesCount":4,"text":"Monitoring gives comprehensive set of key indicators","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.12":{"node":{"type":"id","generated":false,"id":"Reason:101978468616945194","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468769280455":{"id":"101978468769280455","upvoted":false,"upvotesCount":3,"text":"Create APIs quickly with cloud endpoints","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.13":{"node":{"type":"id","generated":false,"id":"Reason:101978468769280455","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468526664192":{"id":"101978468526664192","upvoted":false,"upvotesCount":3,"text":"Really easy to quickly bring up a full stack","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.14":{"node":{"type":"id","generated":false,"id":"Reason:101978468526664192","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978469091517389":{"id":"101978469091517389","upvoted":false,"upvotesCount":2,"text":"No Ops","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.15":{"node":{"type":"id","generated":false,"id":"Reason:101978469091517389","typename":"Reason"},"__typename":"ReasonEdge"},"Reason:101978468757841928":{"id":"101978468757841928","upvoted":false,"upvotesCount":2,"text":"Mostly up","__typename":"Reason"},"$Tool:101231773474576994.pros.edges.16":{"node":{"type":"id","generated":false,"id":"Reason:101978468757841928","typename":"Reason"},"__typename":"ReasonEdge"},"$Tool:101231773474576994.pros":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.0","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.1","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.2","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.3","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.4","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.5","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.6","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.7","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.8","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.9","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.10","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.11","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.12","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.13","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.14","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.15","typename":"ReasonEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.pros.edges.16","typename":"ReasonEdge"}],"__typename":"ReasonConnection"},"$Tool:101231773474576994.cons":{"edges":[],"__typename":"ReasonConnection"},"User:101232101674306748":{"id":"101232101674306748","username":"nsrockwell","title":"SVP, Engineering","companyName":"Fastly","imageUrl":"https://img.stackshare.io/user/216044/default_dd7efb4300def272bbe06fea82b243ab25e6eb64.jpeg","thumbUrl":"https://img.stackshare.io/user/216044/thumb_dd7efb4300def272bbe06fea82b243ab25e6eb64.jpeg","displayName":"Nick Rockwell","__typename":"User"},"StackDecision:101031322437593505":{"user":{"type":"id","generated":false,"id":"User:101232101674306748","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101031322437593505.company","typename":"Company"},"link":{"type":"id","generated":true,"id":"$StackDecision:101031322437593505.link","typename":"Link"},"publicId":"101031322437593505","publishedAt":"2018-09-24T08:13:27Z","id":"101031322437593505","htmlContent":"<p>So, the shift from <span class=\"tool\">Amazon EC2</span> to <span class=\"tool\">Google App Engine</span> and generally <span class=\"topic\">#AWS</span> to <span class=\"topic\">#GCP</span> was a long decision and in the end, it's one that we've taken with eyes open and that we reserve the right to modify at any time. And to be clear, we continue to do a lot of stuff with AWS. But, by default, the content of the decision was, for our consumer-facing products, we're going to use GCP first. And if there's some reason why we don't think that's going to work out great, then we'll happily use AWS. In practice, that hasn't really happened. We've been able to meet almost 100% of our needs in GCP. </p>\n\n<p>So it's basically mostly <span class=\"tool\">Google Kubernetes Engine</span> , we're mostly running stuff on <span class=\"tool\">Kubernetes</span> right now.</p>\n\n<p><span class=\"topic\">#AWStoGCPmigration</span> <span class=\"topic\">#cloudmigration</span> <span class=\"topic\">#migration</span></p>","viewCount":348143,"upvotesCount":11,"services":[{"type":"id","generated":false,"id":"Tool:101231773405612798","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773474576994","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774087656167","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231774206661614","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101231988867646475","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988867981447","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988868400886","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988868710768","typename":"Topic"},{"type":"id","generated":false,"id":"Topic:101231988869127711","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:101031322437593505.company":{"imageUrl":"https://img.stackshare.io/company/11449/default_f61b2ecc134d44d8e461308e5732cbedb635fa38.png","thumbUrl":"https://img.stackshare.io/company/11449/thumb_f61b2ecc134d44d8e461308e5732cbedb635fa38.png","name":"The New York Times","path":"/companies/the-new-york-times","features":[],"__typename":"Company"},"$StackDecision:101031322437593505.link":{"url":"https://stackshare.io/posts/evolution-of-new-york-times-tech-stack","title":"The Evolution of The New York Times Tech Stack | StackShare","__typename":"Link"},"Tool:101231774087656167":{"id":"101231774087656167","name":"Google Kubernetes Engine","slug":"google-kubernetes-engine","title":"Deploy, manage, and scale containerized applications on Kubernetes, powered by Google Cloud","verified":true,"imageUrl":"https://img.stackshare.io/service/1587/s01TMTGn.png","canonicalUrl":"/google-kubernetes-engine","path":"/google-kubernetes-engine","votes":69,"fans":1053,"stacks":1100,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101231988867646475":{"name":"AWS","id":"101231988867646475","__typename":"Topic"},"Topic:101231988867981447":{"name":"GCP","id":"101231988867981447","__typename":"Topic"},"Topic:101231988868400886":{"name":"AWStoGCPmigration","id":"101231988868400886","__typename":"Topic"},"Topic:101231988868710768":{"name":"Cloudmigration","id":"101231988868710768","__typename":"Topic"},"Topic:101231988869127711":{"name":"Migration","id":"101231988869127711","__typename":"Topic"},"$Tool:101231773474576994.stackDecisionsWithAlternatives({\"first\":2}).edges.0":{"node":{"type":"id","generated":false,"id":"StackDecision:101031322437593505","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"User:101848291586373803":{"id":"101848291586373803","username":"aliadocWeb","title":null,"companyName":"aliadoc.com","imageUrl":"https://img.stackshare.io/user/289406/default_bf6f507d852092a8d2d8ad47e136821925c4de3c.png","thumbUrl":"https://img.stackshare.io/user/289406/thumb_bf6f507d852092a8d2d8ad47e136821925c4de3c.png","displayName":"Aliadoc Team","__typename":"User"},"StackDecision:101848826192347222":{"user":{"type":"id","generated":false,"id":"User:101848291586373803","typename":"User"},"company":{"type":"id","generated":true,"id":"$StackDecision:101848826192347222.company","typename":"Company"},"link":null,"publicId":"101848826192347222","publishedAt":"2019-04-01T03:35:50Z","id":"101848826192347222","htmlContent":"<p>In <span class=\"topic\">#Aliadoc</span>, we're exploring the crowdfunding option to get traction before launch. We are building a SaaS platform for website design customization.</p>\n\n<p>For the Admin UI and website editor we use <span class=\"tool\">React</span> and we're currently transitioning from a <span class=\"tool\">Create React App</span> setup to a custom one because our needs have become more specific. We use <span class=\"tool\">CloudFlare</span> as much as possible, it's a great service.</p>\n\n<p>For routing dynamic resources and proxy tasks to feed websites to the editor we leverage <span class=\"tool\">CloudFlare</span> Workers for improved responsiveness. We use <span class=\"tool\">Firebase</span> for our hosting needs and user authentication while also using several <span class=\"tool\">Cloud Functions for Firebase</span> to interact with other services along with <span class=\"tool\">Google App Engine</span> and <span class=\"tool\">Google Cloud Storage</span>, but also the Real Time Database is on the radar for collaborative website editing.</p>\n\n<p>We generally hate configuration but honestly because of the stage of our project we lack resources for doing heavy sysops work. So we are basically just relying on <span class=\"tool\">Serverless</span> technologies as much as we can to do all server side processing.</p>\n\n<p><span class=\"tool\">Visual Studio Code</span> definitively makes programming a much easier and enjoyable task, we just love it. We combine it with <span class=\"tool\">Bitbucket</span> for our source code control needs.</p>","viewCount":712086,"upvotesCount":5,"services":[{"type":"id","generated":false,"id":"Tool:101231773849098825","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776176987604","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773404113083","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773461393493","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231776794429029","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773474576994","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773712725009","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775927452566","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231775423888689","typename":"Tool"},{"type":"id","generated":false,"id":"Tool:101231773411223883","typename":"Tool"}],"topics":[{"type":"id","generated":false,"id":"Topic:101848825876777386","typename":"Topic"}],"__typename":"StackDecision"},"$StackDecision:101848826192347222.company":{"imageUrl":"https://img.stackshare.io/company/32973/default_c3b0121b422d152a5b46325cdbfe1d87d6638e76.png","thumbUrl":"https://img.stackshare.io/company/32973/thumb_c3b0121b422d152a5b46325cdbfe1d87d6638e76.png","name":"Aliadoc","path":"/companies/aliadoc","features":[],"__typename":"Company"},"Tool:101231776176987604":{"id":"101231776176987604","name":"Create React App","slug":"create-react-app","title":"Create React apps with no build configuration","verified":true,"imageUrl":"https://img.stackshare.io/service/5537/oi64YzXY.jpg","canonicalUrl":"/create-react-app","path":"/create-react-app","votes":4,"fans":1246,"stacks":1005,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773404113083":{"id":"101231773404113083","name":"CloudFlare","slug":"cloudflare","title":"The Web Performance & Security Company.","verified":true,"imageUrl":"https://img.stackshare.io/service/15/twitter-profile-400x400.png","canonicalUrl":"/cloudflare","path":"/cloudflare","votes":1764,"fans":23310,"stacks":72071,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773461393493":{"id":"101231773461393493","name":"Firebase","slug":"firebase","title":"The Realtime App Platform","verified":true,"imageUrl":"https://img.stackshare.io/service/116/cZLxNFZS.jpg","canonicalUrl":"/firebase","path":"/firebase","votes":1945,"fans":35770,"stacks":34844,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231776794429029":{"id":"101231776794429029","name":"Cloud Functions for Firebase","slug":"cloud-functions-for-firebase","title":"Run your mobile backend code without managing servers","verified":true,"imageUrl":"https://img.stackshare.io/service/6673/cZLxNFZS.jpg","canonicalUrl":"/cloud-functions-for-firebase","path":"/cloud-functions-for-firebase","votes":6,"fans":486,"stacks":443,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773712725009":{"id":"101231773712725009","name":"Google Cloud Storage","slug":"google-cloud-storage","title":"Durable and highly available object storage service","verified":false,"imageUrl":"https://img.stackshare.io/service/694/Cloud_Storage.png","canonicalUrl":"/google-cloud-storage","path":"/google-cloud-storage","votes":74,"fans":1396,"stacks":1265,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231775927452566":{"id":"101231775927452566","name":"Serverless","slug":"serverless","title":"The most widely-adopted toolkit for building serverless applications","verified":false,"imageUrl":"https://img.stackshare.io/service/5095/serverless-logo.png","canonicalUrl":"/serverless","path":"/serverless","votes":23,"fans":1386,"stacks":1050,"following":false,"followContext":null,"__typename":"Tool"},"Tool:101231773411223883":{"id":"101231773411223883","name":"Bitbucket","slug":"bitbucket","title":"One place to plan projects, collaborate on code, test and deploy, all with free private repositories","verified":true,"imageUrl":"https://img.stackshare.io/service/28/35O2KIRX_400x400.jpg","canonicalUrl":"/bitbucket","path":"/bitbucket","votes":2841,"fans":35823,"stacks":36631,"following":false,"followContext":null,"__typename":"Tool"},"Topic:101848825876777386":{"name":"Aliadoc","id":"101848825876777386","__typename":"Topic"},"$Tool:101231773474576994.stackDecisionsWithAlternatives({\"first\":2}).edges.1":{"node":{"type":"id","generated":false,"id":"StackDecision:101848826192347222","typename":"StackDecision"},"__typename":"StackDecisionEdge"},"$Tool:101231773474576994.stackDecisionsWithAlternatives({\"first\":2})":{"edges":[{"type":"id","generated":true,"id":"$Tool:101231773474576994.stackDecisionsWithAlternatives({\"first\":2}).edges.0","typename":"StackDecisionEdge"},{"type":"id","generated":true,"id":"$Tool:101231773474576994.stackDecisionsWithAlternatives({\"first\":2}).edges.1","typename":"StackDecisionEdge"}],"__typename":"StackDecisionConnection"},"$Tool:101231773472115839.alternativeTools({\"first\":8}).edges.7":{"node":{"type":"id","generated":false,"id":"Tool:101231773474576994","typename":"Tool"},"__typename":"ToolEdge"}}</script> <!-- glamorIds: 135 --> <script type="application/json" id="ToolAlternatives-glamor-355da1f3-ce3c-4127-80e0-4f2cae8975e1">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","1wr1kub","1nxoxgf","mtutfo","f3khu","1ag7ge9","ld8qhm","11b98zt","12i35kv","1mjw833","a5x1lt","1m5j888","4bpmfq","1pvkxrw","1cylxxa","1g92dqh","1x2bey4","1cs0rzs","1j0qgmo","kxs423","1krun48","eemya1","3dgua6","1guve57","z63j1n","19r489t","1puyxnn","z9c3fl","i52n91","13sfqhu","12257h","13u3lpy","1iqua1m","em9idi","12llqor","81jah4","guqgrw","69zjs9","8a04gk","1m38k02","162qu2y","p797gu","jyk0kg","4hck59","1drwozb","gbti5j","1ahj942","1an0suy","1dgfc7p","14pk3xx","1o4togz","41bx4t","83t7xw","m7giud","1to1q1s","np1rfd","zwwro1","1ps7r35","1w2c3xd","n746ki","13hey0t","ua0sjh","8qpfeu","kb8or3","1d3wilq","ljm4wn","mwikcm","1jltg37","1489hth","8wh4b7","pltn6z","1hhgtx3","rpzmwi","12alag6","5f7045","3k44bn","1qckosq","1a4uubp","q4ncy","1mj0hbk","1dnnpo5","ubpjqb","1erkkk4","a55l86","usifiy","6t66tf","1v4wqws","1x4ysa3","7c9av6","16s8o6z","1bn5mmw","1dnwvu3","1v4bhi8","6wyd29","19dpmz","v6oua5","16r6zz5","f2odf3","1m02by6","4gnhqq","6nrkpz","1mlbi0l","1cda8k4","2an9kq","5x5cr6","rsz8c","1pwtf47","z9ms26","6uh2e7","t68yd0","1rz3855","i6njnm","uw1ldh","xkasvz","atv6j6","1m8tyev","1vf0ygt","utnqcw","ds0hbm","dg4ww9","1dp4k20","ztg526","1srb7t4","1ob9em9","1mpii3w","1j2w1cg","1b2ktnx","13nf4of","xd3exe","gpa5xw"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-1wr1kub,[data-css-1wr1kub]{width:100%;background:#f9f9f9;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:column;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-1nxoxgf,[data-css-1nxoxgf]{width:100%;background:#fff;}.css-mtutfo,[data-css-mtutfo]{width:100%;height:100%;max-width:1170px;padding-left:15px;padding-right:15px;margin:0 auto;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-f3khu,[data-css-f3khu]{margin:10px 0;}.css-1ag7ge9,[data-css-1ag7ge9]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:wrap;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}@media only screen and (max-width: 812px){.css-1ag7ge9 > a,[data-css-1ag7ge9] > a{text-align:center;}}.css-ld8qhm,[data-css-ld8qhm]{text-decoration:none;cursor:pointer;color:#c2c2c2;}.css-ld8qhm:hover,[data-css-ld8qhm]:hover{color:#068dfe;}.css-11b98zt,[data-css-11b98zt]{color:#c2c2c2;margin:0 5px 0 5px;}.css-11b98zt::after,[data-css-11b98zt]::after{content:"/";}.css-12i35kv,[data-css-12i35kv]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;margin:10px 0 10px 0;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 480px){.css-12i35kv,[data-css-12i35kv]{align-items:center;flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-1mjw833,[data-css-1mjw833]{max-width:100%;}.css-a5x1lt,[data-css-a5x1lt]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-a5x1lt,[data-css-a5x1lt]{flex-direction:column;margin-bottom:15px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-1m5j888,[data-css-1m5j888]{height:110px;width:110px;margin-right:25px;margin-bottom:10px;border-radius:4px;border:1px solid #e1e1e1;}@media only screen and (max-width: 480px){.css-1m5j888,[data-css-1m5j888]{margin-right:0;height:70px;width:70px;}}.css-4bpmfq,[data-css-4bpmfq]{width:100%;max-width:500px;}@media only screen and (max-width: 480px){.css-4bpmfq,[data-css-4bpmfq]{text-align:center;}}.css-1pvkxrw,[data-css-1pvkxrw]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1pvkxrw .fork,[data-css-1pvkxrw] .fork{margin-top:5px;}@media only screen and (max-width: 480px){.css-1pvkxrw,[data-css-1pvkxrw]{justify-content:center;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-1cylxxa,[data-css-1cylxxa]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:25px;line-height:1;letter-spacing:normal;-webkit-font-smoothing:antialiased;padding:0;margin:0;color:#333;}.css-1g92dqh,[data-css-1g92dqh]{color:#707070;padding:5px 0;}.css-1x2bey4,[data-css-1x2bey4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}.css-1cs0rzs,[data-css-1cs0rzs]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;width:450px;-webkit-box-align:start;-webkit-align-items:flex-start;}@media only screen and (max-width: 480px){.css-1cs0rzs,[data-css-1cs0rzs]{width:100%;}}.css-1j0qgmo,[data-css-1j0qgmo]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;width:100%;justify-content:space-between;-webkit-box-align:start;-webkit-align-items:flex-start;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 480px){.css-1j0qgmo,[data-css-1j0qgmo]{flex-wrap:wrap;width:100%;justify-content:center;margin:0 auto;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-kxs423,[data-css-kxs423]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:flex-start;padding:0 8px 0 24px;margin:5px 8px 0 0;flex-direction:column;border-left:1px solid #e1e1e1;gap:9px;-webkit-box-align:start;-webkit-align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-kxs423 a,[data-css-kxs423] a, .css-kxs423 span, [data-css-kxs423] span{padding-right:8px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:nowrap;flex:2;align-items:center;-webkit-box-lines:nowrap;-webkit-flex-wrap:nowrap;-webkit-flex:2;-webkit-box-align:center;-webkit-align-items:center;}.css-kxs423 a div,[data-css-kxs423] a div, .css-kxs423 span div, [data-css-kxs423] span div{text-align:initial;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.css-kxs423 div > span,[data-css-kxs423] div > span{width:90px;}.css-kxs423 a,[data-css-kxs423] a{text-decoration:none;}.css-kxs423 svg,[data-css-kxs423] svg{margin-right:8px;position:relative;top:2px;width:14px;height:14px;}.css-kxs423 a:first-child > svg,[data-css-kxs423] a:first-child > svg{margin-left:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2), .css-kxs423 span:nth-last-child(2), [data-css-kxs423] span:nth-last-child(2){padding-right:0;}@media only screen and (max-width: 480px){.css-kxs423,[data-css-kxs423]{width:100%;padding-right:0;display:grid;grid-template-columns:48% 48%;grid-gap:11px;-ms-grid-template-columns:48% 48%;-ms-grid-gap:11px;}.css-kxs423 a,[data-css-kxs423] a, .css-kxs423 span, [data-css-kxs423] span{padding-right:0;}.css-kxs423 a,[data-css-kxs423] a{height:40px;border:1px solid #dedede;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;}.css-kxs423 svg,[data-css-kxs423] svg{margin-left:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2), .css-kxs423 span:nth-last-child(2), [data-css-kxs423] span:nth-last-child(2){padding-right:0;}.css-kxs423 a:nth-last-child(2),[data-css-kxs423] a:nth-last-child(2){border-right:1px solid #dedede;}}.css-1krun48 path,[data-css-1krun48] path{fill:#068dfe;}.css-eemya1,[data-css-eemya1]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:12px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#008FF9;}.css-eemya1 a,[data-css-eemya1] a, .css-eemya1 a:hover, [data-css-eemya1] a:hover, .css-eemya1 a:visited, [data-css-eemya1] a:visited{color:#707070;text-decoration:none;}.css-3dgua6,[data-css-3dgua6]{display:none;}@media only screen and (max-width: 480px){.css-3dgua6,[data-css-3dgua6]{display:block;}}.css-1guve57,[data-css-1guve57]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;}@media only screen and (max-width: 480px){.css-1guve57,[data-css-1guve57]{display:none;}}.css-z63j1n,[data-css-z63j1n]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;justify-content:flex-end;margin-top:40px;-webkit-box-pack:end;-webkit-justify-content:flex-end;}.css-19r489t,[data-css-19r489t]{border-bottom:2px solid #e1e1e1;width:100%;}.css-1puyxnn,[data-css-1puyxnn]{width:100%;height:100%;padding:20px 15px 0;max-width:1170px;min-height:100vh;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-z9c3fl,[data-css-z9c3fl]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;position:relative;}.css-i52n91,[data-css-i52n91]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;margin:0;}.css-13sfqhu,[data-css-13sfqhu]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.69;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-top:8px;color:#707070;}.css-12257h,[data-css-12257h]{margin:25px 0;}.css-13u3lpy,[data-css-13u3lpy]{margin-top:20px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;}.css-1iqua1m,[data-css-1iqua1m]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1iqua1m:hover,[data-css-1iqua1m]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-em9idi,[data-css-em9idi]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;margin-left:auto;min-width:280px;}.css-12llqor,[data-css-12llqor]{width:260px;margin-left:20px;margin-bottom:25px;}.css-81jah4,[data-css-81jah4]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;margin:50px 0;-webkit-box-pack:center;-webkit-justify-content:center;}.css-guqgrw,[data-css-guqgrw]{width:100%;}@media only screen and (max-width: 480px){.css-guqgrw,[data-css-guqgrw]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-69zjs9,[data-css-69zjs9]{background:#f7f7f7;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;padding-top:68px;padding-bottom:68px;-webkit-box-pack:center;-webkit-justify-content:center;}@media only screen and (max-width: 812px){.css-69zjs9,[data-css-69zjs9]{padding-top:30px;padding-bottom:50px;}}.css-8a04gk,[data-css-8a04gk]{width:1140px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;padding-left:20px;padding-right:20px;-webkit-box-pack:justify;-webkit-justify-content:space-between;}@media only screen and (max-width: 812px){.css-8a04gk,[data-css-8a04gk]{flex-direction:column;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;}}.css-1m38k02,[data-css-1m38k02]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}@media only screen and (max-width: 812px){.css-1m38k02,[data-css-1m38k02]{text-align:center;}}.css-162qu2y,[data-css-162qu2y]{font-size:20px;font-weight:600;letter-spacing:0.4px;}.css-p797gu,[data-css-p797gu]{font-size:13px;line-height:2.07;letter-spacing:0.3px;text-decoration:none;color:#333;}.css-p797gu:hover,[data-css-p797gu]:hover{color:#068dfe;}@media only screen and (max-width: 768px){.css-p797gu,[data-css-p797gu]{font-size:14px;}}.css-jyk0kg,[data-css-jyk0kg]{position:relative;width:260px;height:100%;padding-top:30px;}.css-jyk0kg > div,[data-css-jyk0kg] > div{position:absolute;bottom:0;right:0;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-flow:column nowrap;justify-content:flex-end;align-items:stretch;margin-bottom:20px;-webkit-flex-flow:column nowrap;-webkit-box-pack:end;-webkit-justify-content:flex-end;-webkit-box-align:stretch;-webkit-align-items:stretch;}.css-jyk0kg > div > div:last-of-type > div ,[data-css-jyk0kg] > div > div:last-of-type > div {margin:0;max-width:100%;}.css-jyk0kg > div a,[data-css-jyk0kg] > div a{max-width:100%;}.css-jyk0kg > div > * + *,[data-css-jyk0kg] > div > * + *{margin-top:10px;}@media only screen and (max-width: 768px){.css-jyk0kg,[data-css-jyk0kg]{width:100%;margin:20px 0 0 0;padding:0;}}.css-4hck59,[data-css-4hck59]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1drwozb,[data-css-1drwozb]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:80%;justify-content:space-between;align-items:center;order:4;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-webkit-order:4;}@media only screen and (max-width: 480px){.css-1drwozb,[data-css-1drwozb]{margin-bottom:20px;}}.css-gbti5j,[data-css-gbti5j]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;position:relative;color:#707070;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-gbti5j>:first-child,[data-css-gbti5j]>:first-child{margin-bottom:5px;}.css-gbti5j>span,[data-css-gbti5j]>span{color:#333;line-height:1.22;letter-spacing:0.8px;font-weight:600;font-size:18px;}.css-1ahj942,[data-css-1ahj942]{border-left:1px solid #e1e1e1;width:1px;height:36px;}.css-1an0suy,[data-css-1an0suy]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;position:relative;color:#707070;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;transition:color 0.6s ease-in-out;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;-webkit-transition:color 0.6s ease-in-out;-moz-transition:color 0.6s ease-in-out;}.css-1an0suy>:first-child,[data-css-1an0suy]>:first-child{margin-bottom:5px;}.css-1an0suy>span,[data-css-1an0suy]>span{color:#333;line-height:1.22;letter-spacing:0.8px;font-weight:600;font-size:18px;}.css-1an0suy div,[data-css-1an0suy] div{position:absolute;top:-15px;right:0;left:0;text-align:center;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#45C57C;opacity:0;animation:none;-webkit-animation:none;}.css-1dgfc7p,[data-css-1dgfc7p]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-1dgfc7p > button,[data-css-1dgfc7p] > button{width:48%;margin-right:10px;}.css-1dgfc7p > button:last-child,[data-css-1dgfc7p] > button:last-child{margin:0;}.css-14pk3xx,[data-css-14pk3xx]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:8px;padding-right:8px;width:98px;outline:none;flex-grow:0;flex-shrink:0;margin-right:10px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-grow:0;-webkit-flex-shrink:0;}.css-14pk3xx:hover,[data-css-14pk3xx]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-1o4togz,[data-css-1o4togz]{height:32px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #068dfe;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#068dfe;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;flex-grow:0;flex-shrink:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-grow:0;-webkit-flex-shrink:0;}.css-1o4togz:hover,[data-css-1o4togz]:hover{background-color:rgba(6,141,254,0.8);border-color:rgba(6,141,254,0.79);color:#fff;}.css-41bx4t,[data-css-41bx4t]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#a1a1a1;text-transform:uppercase;margin-bottom:10px;}.css-83t7xw>ul>li,[data-css-83t7xw]>ul>li{width:50%;margin-bottom:30px;padding-right:30px;}@media only screen and (max-width: 480px){.css-83t7xw>ul>li,[data-css-83t7xw]>ul>li{width:100%;padding-right:0;}}.css-m7giud,[data-css-m7giud]{padding:0;max-width:860px;justify-content:space-between;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-wrap:wrap;text-align:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}.css-1to1q1s,[data-css-1to1q1s]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;list-style-type:none;color:#707070;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;}.css-1to1q1s:hover,[data-css-1to1q1s]:hover{color:#068dfe;}.css-np1rfd,[data-css-np1rfd]{width:70px;height:70px;border:1px solid #e1e1e1;border-radius:4px;}@media only screen and (max-width: 480px){.css-np1rfd,[data-css-np1rfd]{width:60px;height:60px;}}.css-zwwro1,[data-css-zwwro1]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;margin-left:18px;justify-content:center;text-align:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;}.css-1ps7r35,[data-css-1ps7r35]{font-size:12px;margin:5px 0;font-weight:600;letter-spacing:0.17px;color:#333;}.css-1w2c3xd,[data-css-1w2c3xd]{font-size:11px;overflow:hidden;margin:0;line-height:1.64;color:#707070;}.css-1w2c3xd > span,[data-css-1w2c3xd] > span{display:none;}.css-n746ki,[data-css-n746ki]{margin-top:30px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;z-index:1;-webkit-box-pack:center;-webkit-justify-content:center;}.css-13hey0t,[data-css-13hey0t]{width:100%;padding-bottom:80px;}@media only screen and (max-width: 480px){.css-13hey0t,[data-css-13hey0t]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-ua0sjh,[data-css-ua0sjh]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#333;}@media only screen and (max-width: 768px){.css-ua0sjh,[data-css-ua0sjh]{align-self:flex-start;margin-bottom:25px;-webkit-align-self:flex-start;}}.css-8qpfeu,[data-css-8qpfeu]{width:100%;padding:25px 0;margin-bottom:20px;background:#fff;border-radius:4px;box-shadow:0 1px 0 0 #e1e1e1;border:1px solid #e1e1e1;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-8qpfeu,[data-css-8qpfeu]{border:solid 1px #e1e1e1;border-radius:4px;box-shadow:none;margin-bottom:20px;padding:10px;padding-top:35px;}}.css-kb8or3,[data-css-kb8or3]{width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1d3wilq,[data-css-1d3wilq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;flex-direction:row;align-items:center;width:100%;padding:0 20px;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-1d3wilq,[data-css-1d3wilq]{padding:0;flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-ljm4wn,[data-css-ljm4wn]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:row;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-ljm4wn,[data-css-ljm4wn]{flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}}.css-mwikcm,[data-css-mwikcm]{width:110px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;}.css-1jltg37,[data-css-1jltg37]{text-decoration:none;cursor:pointer;color:#333;width:70px;height:70px;margin-right:20px;border-radius:2px;border:1px solid #e1e1e1;}.css-1jltg37:hover,[data-css-1jltg37]:hover, .css-1jltg37:focus, [data-css-1jltg37]:focus{color:#068dfe;}@media only screen and (max-width: 768px){.css-1jltg37,[data-css-1jltg37]{margin-right:initial;width:80px;height:80px;}}.css-1489hth,[data-css-1489hth]{width:68px;height:68px;}@media only screen and (max-width: 768px){.css-1489hth,[data-css-1489hth]{width:78px;height:78px;}}.css-8wh4b7,[data-css-8wh4b7]{height:100%;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}@media only screen and (max-width: 768px){.css-8wh4b7,[data-css-8wh4b7]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}}.css-pltn6z,[data-css-pltn6z]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:18px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin:0;}@media only screen and (max-width: 768px){.css-pltn6z,[data-css-pltn6z]{margin:15px auto;}}.css-1hhgtx3,[data-css-1hhgtx3]{text-decoration:none;cursor:pointer;color:#333;}.css-1hhgtx3:hover,[data-css-1hhgtx3]:hover, .css-1hhgtx3:focus, [data-css-1hhgtx3]:focus{color:#068dfe;}.css-rpzmwi,[data-css-rpzmwi]{padding:5px 0;}@media only screen and (max-width: 768px){.css-rpzmwi,[data-css-rpzmwi]{display:none;}}.css-12alag6,[data-css-12alag6]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-5f7045,[data-css-5f7045]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-right:28px;-webkit-box-align:center;-webkit-align-items:center;}.css-3k44bn,[data-css-3k44bn]{height:23px;width:23px;}.css-1qckosq,[data-css-1qckosq]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;fonst-size:15px;color:#333;margin-left:5px;}.css-1a4uubp,[data-css-1a4uubp]{position:relative;top:3px;}.css-q4ncy,[data-css-q4ncy]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.5;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}@media only screen and (max-width: 768px){.css-q4ncy,[data-css-q4ncy]{text-align:center;margin:20px 0;}}.css-1mj0hbk,[data-css-1mj0hbk]{display:none;}@media only screen and (max-width: 768px){.css-1mj0hbk,[data-css-1mj0hbk]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;margin-bottom:10px;}.css-1mj0hbk > div,[data-css-1mj0hbk] > div{margin:0 auto;}}.css-1dnnpo5,[data-css-1dnnpo5]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 480px){.css-1dnnpo5,[data-css-1dnnpo5]{width:100%;}}.css-ubpjqb,[data-css-ubpjqb]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;width:100%;padding:10px 0;}.css-ubpjqb > button,[data-css-ubpjqb] > button{width:125px;}@media only screen and (max-width: 768px){.css-ubpjqb,[data-css-ubpjqb]{justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-ubpjqb > button,[data-css-ubpjqb] > button{width:48%;margin:0;}}.css-1erkkk4,[data-css-1erkkk4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;display:grid;grid-template-columns:33% 33% 33%;margin-top:28px;margin-right:20px;margin-left:20px;-ms-grid-template-columns:33% 33% 33%;}@media only screen and (max-width: 480px){.css-1erkkk4,[data-css-1erkkk4]{display:block;margin:0;}}.css-a55l86,[data-css-a55l86]{width:100%;padding:5px;min-height:240px;}@media only screen and (max-width: 1199px){.css-a55l86,[data-css-a55l86]{border-right:none;}}@media only screen and (max-width: 768px){.css-a55l86,[data-css-a55l86]{border:0;margin-top:30px;width:auto;}}@media only screen and (max-width: 480px){.css-a55l86,[data-css-a55l86]{padding:0;}}.css-usifiy,[data-css-usifiy]{height:42px;border-radius:4px;background-color:#f8f8f8;font-size:13px;font-weight:600;line-height:1.08;letter-spacing:0.66px;color:#707070;padding-left:20px;margin-bottom:15px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;-webkit-box-align:center;-webkit-align-items:center;}.css-6t66tf,[data-css-6t66tf]{margin-left:15px;}@media only screen and (max-width: 480px){.css-6t66tf,[data-css-6t66tf]{margin-left:0;}}.css-1v4wqws,[data-css-1v4wqws]{display:block;flex-direction:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:none;}.css-1x4ysa3,[data-css-1x4ysa3]{position:relative;overflow-y:scroll;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-grow:1;height:160px;max-height:auto;flex-direction:column;flex-wrap:nowrap;-webkit-flex-grow:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-lines:nowrap;-webkit-flex-wrap:nowrap;}.css-1x4ysa3::-webkit-scrollbar,[data-css-1x4ysa3]::-webkit-scrollbar{width:4px;}.css-1x4ysa3::-webkit-scrollbar-thumb,[data-css-1x4ysa3]::-webkit-scrollbar-thumb{background:#c2c2c2;border-radius:2.5px;}.css-1x4ysa3 > div,[data-css-1x4ysa3] > div{flex-basis:unset;-webkit-flex-basis:unset;}@media only screen and (max-width: 480px){.css-1x4ysa3 > div,[data-css-1x4ysa3] > div{flex-basis:unset;-webkit-flex-basis:unset;}}.css-7c9av6,[data-css-7c9av6]{margin:0;padding:0;}.css-16s8o6z,[data-css-16s8o6z]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;height:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;justify-content:center;fontsize:14px;color:#c2c2c2;font-style:italic;text-align:center;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;}.css-1bn5mmw,[data-css-1bn5mmw]{text-decoration:none;min-width:300px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1dnwvu3,[data-css-1dnwvu3]{text-decoration:none;}.css-1v4bhi8,[data-css-1v4bhi8]{width:150px;margin-right:100px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;flex-direction:row;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-6wyd29,[data-css-6wyd29]{width:50px;height:50px;border-radius:2px;border:1px solid #e1e1e1;}.css-19dpmz,[data-css-19dpmz]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:11px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#4a4a4a;height:21px;width:21px;box-sizing:content-box;flex-shrink:0;margin-right:5px;margin-left:5px;border-radius:50%;border:1px solid #e1e1e1;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;flex-direction:row;align-items:center;-webkit-flex-shrink:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-v6oua5,[data-css-v6oua5]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;margin-top:15px;}.css-v6oua5 div,[data-css-v6oua5] div{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;}.css-16r6zz5,[data-css-16r6zz5]{height:25px;width:25px;margin-right:5px;}.css-16r6zz5 svg > g,[data-css-16r6zz5] svg > g{fill:#068dfe;stroke:#068dfe;}.css-f2odf3,[data-css-f2odf3]{width:100%;padding:20px 20px 0;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:initial;flex-direction:column;align-items:center;-webkit-box-pack:initial;-webkit-justify-content:initial;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-f2odf3 > div:last-child,[data-css-f2odf3] > div:last-child{border-bottom:none;}@media only screen and (max-width: 1199px){.css-f2odf3,[data-css-f2odf3]{width:95%;}}@media only screen and (max-width: 768px){.css-f2odf3,[data-css-f2odf3]{width:93%;}}@media only screen and (max-width: 480px){.css-f2odf3,[data-css-f2odf3]{width:97%;}}.css-1m02by6,[data-css-1m02by6]{width:100%;height:42px;border-radius:4px;padding-left:10px;background:#fafafa;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:flex-start;flex-direction:row;align-items:center;-webkit-box-pack:start;-webkit-justify-content:flex-start;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-1m02by6 h2,[data-css-1m02by6] h2{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;margin:0;text-transform:uppercase;}.css-4gnhqq,[data-css-4gnhqq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;}.css-6nrkpz,[data-css-6nrkpz]{list-style:none;}.css-1mlbi0l,[data-css-1mlbi0l]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-bottom:15px;flex-shrink:0;cursor:default;-webkit-box-align:center;-webkit-align-items:center;-webkit-flex-shrink:0;}.css-1mlbi0l > div:first-of-type,[data-css-1mlbi0l] > div:first-of-type{width:40px;flex-shrink:0;-webkit-flex-shrink:0;}.css-1cda8k4,[data-css-1cda8k4]{display:inline-block;border-radius:2px;cursor:pointer;background-color:#fff;border:1px solid #c2c2c2;color:#4a4a4a;}.css-2an9kq,[data-css-2an9kq]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;justify-content:center;align-items:center;padding-top:5px;padding-left:8px;padding-right:8px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-5x5cr6,[data-css-5x5cr6]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:12px;font-weight:600;line-height:1.83;letter-spacing:0.5px;}.css-rsz8c,[data-css-rsz8c]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-left:10px;text-decoration:none;color:#000;}.css-1pwtf47,[data-css-1pwtf47]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:row;align-items:center;text-decoration:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-webkit-box-align:center;-webkit-align-items:center;}.css-z9ms26,[data-css-z9ms26]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#2d2d2d;margin-right:7px;}.css-6uh2e7,[data-css-6uh2e7]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#939393;margin-right:7px;}.css-t68yd0,[data-css-t68yd0]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;position:relative;justify-content:center;align-items:center;width:22px;min-width:22px;height:22px;min-height:22px;background-color:#fff;border-radius:3.1px;border:0;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-t68yd0:hover,[data-css-t68yd0]:hover{background-color:#fff;}.css-1rz3855,[data-css-1rz3855]{border:solid 1px #c2c2c2;border-radius:3.1px;height:22px;width:22px;}.css-i6njnm,[data-css-i6njnm]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;margin-left:7px;color:#000;}.css-uw1ldh,[data-css-uw1ldh]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:0.2px;-webkit-font-smoothing:antialiased;border-bottom:1px solid;border-color:#e1e1e1;padding:10px 0 20px 0;width:100%;}.css-xkasvz,[data-css-xkasvz]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;padding:20px 0;width:100%;}.css-atv6j6,[data-css-atv6j6]{margin-top:5px;}.css-1m8tyev,[data-css-1m8tyev]{position:relative;}.css-1m8tyev a,[data-css-1m8tyev] a{display:inline-block;}.css-1m8tyev img,[data-css-1m8tyev] img{width:31px;height:31px;border-radius:50%;}.css-1m8tyev> svg,[data-css-1m8tyev]> svg{width:31px;height:31px;}.css-1vf0ygt,[data-css-1vf0ygt]{margin-left:15px;width:100%;}.css-1vf0ygt a,[data-css-1vf0ygt] a{color:#333;}.css-1vf0ygt a:hover,[data-css-1vf0ygt] a:hover{color:#068dfe;}.css-utnqcw,[data-css-utnqcw]{font-weight:bold;font-size:14px;width:100%;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:space-between;-webkit-box-pack:justify;-webkit-justify-content:space-between;}.css-ds0hbm,[data-css-ds0hbm]{color:#4a4a4a;}.css-dg4ww9,[data-css-dg4ww9]{width:100%;margin-top:0;margin-bottom:18px;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;flex-wrap:wrap;-webkit-box-align:center;-webkit-align-items:center;-webkit-box-lines:multiple;-webkit-flex-wrap:wrap;}.css-dg4ww9 > svg:first-of-type,[data-css-dg4ww9] > svg:first-of-type{margin-right:7px;}.css-dg4ww9 > a,[data-css-dg4ww9] > a{text-decoration:none;margin-right:7px;}.css-dg4ww9 > a:last-of-type,[data-css-dg4ww9] > a:last-of-type{text-decoration:none;margin-right:0;}.css-dg4ww9 > *,[data-css-dg4ww9] > *{margin-bottom:13px;}.css-dg4ww9 > a > span:last-of-type,[data-css-dg4ww9] > a > span:last-of-type{font-size:14px;}.css-1dp4k20,[data-css-1dp4k20]{height:75px;position:relative;overflow:hidden;}.css-1dp4k20:after,[data-css-1dp4k20]:after{content:" ";position:absolute;bottom:0;left:0;width:100%;height:30px;background:-webkit-linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%); background: -moz-linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%); background: linear-gradient(to bottom, rgba(255,255,255,0), #fff 80%);}.css-ztg526 .topic,[data-css-ztg526] .topic,.css-ztg526 .tool,[data-css-ztg526] .tool{font-weight:normal;background:rgba(6,141,254,0.15);padding:0px 2px;}.css-ztg526 a,[data-css-ztg526] a,.css-ztg526 a:visited,[data-css-ztg526] a:visited{color:#068dfe;text-decoration:underline;cursor:pointer;}.css-ztg526 a:hover,[data-css-ztg526] a:hover,.css-ztg526 a:visited:hover,[data-css-ztg526] a:visited:hover{text-decoration:underline;}.css-ztg526 pre,[data-css-ztg526] pre{white-space:pre-wrap;word-wrap:break-word;background:#fafafa;color:#333;margin:15px 0;font-family:monospace;padding:10px;border-radius:0;}.css-ztg526 code,[data-css-ztg526] code{border-radius:0;background:#fafafa;color:#333;}.css-1srb7t4,[data-css-1srb7t4]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.6666666666666667;letter-spacing:normal;-webkit-font-smoothing:antialiased;width:100%;text-align:center;text-decoration:underline;cursor:pointer;color:#333;}.css-1srb7t4:hover,[data-css-1srb7t4]:hover{color:#333;text-decoration:none;}.css-1ob9em9,[data-css-1ob9em9]{max-width:225px;margin:0 auto;width:100%;}.css-1ob9em9 > button,[data-css-1ob9em9] > button{width:100%;margin:auto;padding-left:16px;padding-right:16px;}.css-1mpii3w,[data-css-1mpii3w]{height:auto;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;border-radius:2px;border:1px solid #f87a46;font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-size:13px;font-weight:400;letter-spacing:0.8px;background-color:#f87a46;color:#fff;text-decoration:none;cursor:pointer;-webkit-font-smoothing:antialiased;padding-top:0;padding-bottom:0;padding-left:16px;padding-right:16px;width:auto;outline:none;line-height:20px;min-height:32px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}.css-1mpii3w:hover,[data-css-1mpii3w]:hover{background-color:rgba(248,122,70,0.8);border-color:rgba(248,122,70,0.8);color:#fff;}.css-1j2w1cg,[data-css-1j2w1cg]{cursor:pointer;text-decoration:none;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;align-items:center;margin-right:0;-webkit-box-align:center;-webkit-align-items:center;}.css-1j2w1cg > div:last-of-type,[data-css-1j2w1cg] > div:last-of-type{margin-right:0;}.css-1b2ktnx,[data-css-1b2ktnx]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:600;font-size:14px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#2d2d2d;margin-right:7px;margin-left:7px;}.css-13nf4of,[data-css-13nf4of]{margin:15px 0;border-top:solid 1px #e1e1e1;border-bottom:solid 1px #e1e1e1;padding:15px 0;}.css-13nf4of a,[data-css-13nf4of] a{color:#333;text-decoration:underline;}.css-xd3exe,[data-css-xd3exe]{margin-right:5px;}.css-gpa5xw,[data-css-gpa5xw]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.7;letter-spacing:normal;-webkit-font-smoothing:antialiased;color:#707070;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;margin-left:0;margin-right:0;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-gpa5xw strong,[data-css-gpa5xw] strong{color:#333;}.css-gpa5xw:last-child > div,[data-css-gpa5xw]:last-child > div{margin:0;max-width:260px;}@media only screen and (max-width: 480px){.css-gpa5xw,[data-css-gpa5xw]{padding:0;box-sizing:border-box;}}@media only screen and (max-width: 812px){.css-gpa5xw > div,[data-css-gpa5xw] > div{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;-webkit-box-pack:center;-webkit-justify-content:center;}}@media only screen and (max-width: 768px){.css-gpa5xw:last-child > div,[data-css-gpa5xw]:last-child > div{margin:0;max-width:100%;}}</style> <div id="ToolAlternatives-react-component-355da1f3-ce3c-4127-80e0-4f2cae8975e1" data-ssr="true" ><div class="css-1wr1kub"><div class="css-1nxoxgf"><div class="css-mtutfo"><div class="css-f3khu"><div data-testid="breadcrumbs" class="css-1ag7ge9"><a href="/" class="css-ld8qhm">Home</a><div class="css-11b98zt"></div><a href="/application_and_data" class="css-ld8qhm">Application and Data</a><div class="css-11b98zt"></div><a href="/application-hosting" class="css-ld8qhm">Application Hosting</a><div class="css-11b98zt"></div><a href="/platform-as-a-service" class="css-ld8qhm">Platform as a Service</a></div></div><div class="css-12i35kv"><div class="css-1mjw833"><div class="css-a5x1lt"><a href="http://www.cloudbees.com" target="_blank" rel="noopener noreferrer" title="Alternatives to CloudBees website"><img src="https://img.stackshare.io/service/136/o-p1F0I9_400x400.jpg" alt="Alternatives to CloudBees logo" class="css-1m5j888"/></a><div class="css-4bpmfq"><div class="css-1pvkxrw"><h1 class="css-1cylxxa">Alternatives to CloudBees</h1></div><div class="css-1g92dqh"><span class="css-1x2bey4"> Jenkins, CircleCI, Bamboo, Azure DevOps, and GitLab are the most popular alternatives and competitors to CloudBees. </span></div></div></div></div><div class="css-1cs0rzs"><div class="css-1j0qgmo"><div class="css-kxs423"><a href="/jobs/cloudbees"><svg class="css-1krun48" id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g><path class="st0" d="M.7 16.8h28.6v1.8H.7v-1.8zm27.7.9l-.9.9v-1.8l.9.9z"></path><path class="st0" d="M4.6 6.1h20.7c2.2 0 3.9 1.8 3.9 3.9v13.6c0 2.2-1.8 3.9-3.9 3.9H4.6c-2.2 0-3.9-1.8-3.9-3.9V10c0-2.2 1.8-3.9 3.9-3.9zm0 1.8c-1.2 0-2.1 1-2.1 2.1v13.6c0 1.2 1 2.1 2.1 2.1h20.7c1.2 0 2.1-1 2.1-2.1V10c0-1.2-1-2.1-2.1-2.1H4.6z"></path><path class="st0" d="M10.5 16.8v4.3c0 1.1.9 2 2 2h5c1.1 0 2-.9 2-2v-4.3h-1.8v4.3c0 .1-.1.2-.2.2h-5c-.1 0-.2-.1-.2-.2v-4.3h-1.8zM8.8 7V4.5c0-1.1.9-2 2-2h8.6c1.1 0 2 .9 2 2V7h-1.8V4.5c0-.1-.1-.2-.2-.2h-8.6c-.1 0-.2.1-.2.2V7H8.8z"></path></g></svg> <div class="css-eemya1">View Jobs</div></a><a href="/cloudbees"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="16" viewBox="0 0 15 16"><path fill="#068DFE" fill-rule="evenodd" d="M13.564 13.523c.263-.26.407-.607.407-.976 0-.368-.144-.715-.407-.975L7.516 5.906a3.076 3.076 0 0 0-.144-.131l-.235-.197.11-.286a3.265 3.265 0 0 0-.752-3.471A3.307 3.307 0 0 0 4.162.86c-.013 0-.027 0-.04.002l1.82 1.806-.783 2.459-2.472.777L.862 4.093a3.25 3.25 0 0 0 .965 2.355c.53.528 1.22.84 1.94.927a4.44 4.44 0 0 1 1.993-.486c2.467 0 4.475 1.996 4.475 4.45 0 .222-.034.434-.066.647l1.432 1.53a1.398 1.398 0 0 0 1.963.007zM5.76 14.656a3.341 3.341 0 0 0 3.268-2.631c.047-.222.073-.451.073-.686 0-.19-.025-.375-.057-.557a3.32 3.32 0 0 0-2.478-2.65 3.299 3.299 0 0 0-.806-.11c-.4 0-.78.083-1.134.21-1.284.464-2.207 1.676-2.207 3.107 0 1.829 1.498 3.317 3.34 3.317zm8.396-3.711c.44.439.677 1.002.677 1.602a2.234 2.234 0 0 1-2.244 2.236 2.26 2.26 0 0 1-1.597-.657l-1.08-1.154A4.473 4.473 0 0 1 5.76 15.79c-2.467 0-4.475-1.997-4.475-4.451 0-1.32.59-2.493 1.512-3.31a4.154 4.154 0 0 1-1.578-.97 4.114 4.114 0 0 1-1.203-3.28.753.753 0 0 1 1.279-.468l1.63 1.618 1.548-.487.488-1.531-1.626-1.614a.751.751 0 0 1 .467-1.28 4.162 4.162 0 0 1 3.3 1.194 4.126 4.126 0 0 1 1.045 4.106l6.009 5.629zm-7.97-1.96l.218.235a.517.517 0 1 1-.991.205c0-.285.231-.516.517-.516.095 0 .18.032.255.076zm-.298 1.65c.216 0 .388.173.388.387v2.319a.385.385 0 0 1-.388.386.385.385 0 0 1-.388-.386v-2.32c0-.213.172-.386.388-.386zm6.083 1.109a.675.675 0 0 1 .95 0 .663.663 0 0 1 0 .942.675.675 0 0 1-.95 0 .663.663 0 0 1 0-.942z"></path></svg> <div class="css-eemya1">Tool Profile</div></a><a rel="nofollow" href="http://twitter.com/CloudBees"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="12" viewBox="0 0 14 12"><path fill="none" stroke="#49A8F9" d="M11.884 3.45c.486-.344.891-.79 1.236-1.275a5.58 5.58 0 0 1-1.439.385c.527-.304.892-.79 1.074-1.378a5.216 5.216 0 0 1-1.56.608A2.449 2.449 0 0 0 9.39 1a2.473 2.473 0 0 0-2.473 2.491c0 .183.02.385.06.567A7.08 7.08 0 0 1 1.83 1.446c-.203.384-.324.81-.324 1.255 0 .871.425 1.62 1.094 2.066a2.29 2.29 0 0 1-1.115-.304v.02a2.5 2.5 0 0 0 1.987 2.451 2.274 2.274 0 0 1-.649.081c-.162 0-.324-.02-.466-.04.304.992 1.236 1.66 2.31 1.681-.85.668-1.905 1.134-3.08 1.134-.203 0-.406-.02-.588-.04 1.094.709 2.412 1.093 3.81 1.093 4.58 0 7.074-3.787 7.074-7.068V3.45z"></path></svg> <div class="css-eemya1">CloudBees</div></a><a rel="nofollow" href="http://www.cloudbees.com"><svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg> <div class="css-eemya1">cloudbees.com</div></a><div class="css-3dgua6"></div></div><div class="css-1guve57"></div></div></div></div><div class="css-z63j1n"><div class="css-jyk0kg"><div><div class="css-4hck59"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>92</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>159</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>5</span></div></div></div><div class="css-1dgfc7p"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div></div></div></div><div class="css-19r489t"></div><main class="css-1puyxnn"><div class="css-z9c3fl"><div class="css-nil"><div class="css-nil"><h2 class="css-i52n91">What is CloudBees and what are its top alternatives?</h2><div class="css-13sfqhu">Enables organizations to build, test and deploy applications to production, utilizing continuous delivery practices. They are focused solely on Jenkins as a tool for continuous delivery both on-premises and in the cloud. </div><div class="css-13sfqhu">CloudBees<!-- --> is a tool in the <strong>Platform as a Service</strong> category of a tech stack.</div><div class="css-13sfqhu"></div><div class="css-13sfqhu"></div></div><div class="css-12257h"><h2 class="css-41bx4t">Top Alternatives to <!-- -->CloudBees</h2><div class="css-83t7xw"><ul class="css-m7giud"><li class="css-1to1q1s"><a href="/jenkins"><img src="https://img.stackshare.io/service/670/thumb_retina_jenkins.png" alt="Jenkins" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/jenkins" class="css-1ps7r35">Jenkins</a><p class="css-1w2c3xd">In a nutshell Jenkins CI is the leading open-source continuous integration server. <span>Built with Java, it provides over 300 plugins to support building and testing virtually any project. </span>...</p></div></li><li class="css-1to1q1s"><a href="/circleci"><img src="https://img.stackshare.io/service/190/thumb_retina_CvqrSSFs_400x400.jpg" alt="CircleCI" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/circleci" class="css-1ps7r35">CircleCI</a><p class="css-1w2c3xd">Continuous integration and delivery platform helps software teams rapidly release <span>code with confidence by automating the build, test, and deploy process. Offers a modern software development platform that lets teams ramp. </span>...</p></div></li><li class="css-1to1q1s"><a href="/bamboo"><img src="https://img.stackshare.io/service/1729/thumb_retina_bamboo.png" alt="Bamboo" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/bamboo" class="css-1ps7r35">Bamboo</a><p class="css-1w2c3xd">Focus on coding and count on Bamboo as your CI and build server! Create multi-stage <span>build plans, set up triggers to start builds upon commits, and assign agents to your critical builds and deployments. </span>...</p></div></li><li class="css-1to1q1s"><a href="/azure-devops"><img src="https://img.stackshare.io/service/4313/thumb_retina_XNKktHjN_400x400.png" alt="Azure DevOps" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/azure-devops" class="css-1ps7r35">Azure DevOps</a><p class="css-1w2c3xd">Azure DevOps provides unlimited private Git hosting, cloud build for continuous <span>integration, agile planning, and release management for continuous delivery to the cloud and on-premises. Includes broad IDE support. </span>...</p></div></li><li class="css-1to1q1s"><a href="/gitlab"><img src="https://img.stackshare.io/service/880/thumb_retina_lmalkclL.png" alt="GitLab" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/gitlab" class="css-1ps7r35">GitLab</a><p class="css-1w2c3xd">GitLab offers git repository management, code reviews, issue tracking, activity <span>feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers. </span>...</p></div></li><li class="css-1to1q1s"><a href="/spinnaker"><img src="https://img.stackshare.io/service/7674/thumb_retina_7634182.png" alt="Spinnaker" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/spinnaker" class="css-1ps7r35">Spinnaker</a><p class="css-1w2c3xd">Created at Netflix, it has been battle-tested in production by hundreds of teams <span>over millions of deployments. It combines a powerful and flexible pipeline management system with integrations to the major cloud providers. </span>...</p></div></li><li class="css-1to1q1s"><a href="/heroku"><img src="https://img.stackshare.io/service/133/thumb_retina_3wgIDj3j.png" alt="Heroku" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/heroku" class="css-1ps7r35">Heroku</a><p class="css-1w2c3xd">Heroku is a cloud application platform – a new way of building and deploying <span>web apps. Heroku lets app developers spend 100% of their time on their application code, not managing servers, deployment, ongoing operations, or scaling. </span>...</p></div></li><li class="css-1to1q1s"><a href="/google-app-engine"><img src="https://img.stackshare.io/service/139/thumb_retina_s01TMTGn.png" alt="Google App Engine" class="css-np1rfd"/></a><div class="css-zwwro1"><a href="/google-app-engine" class="css-1ps7r35">Google App Engine</a><p class="css-1w2c3xd">Google has a reputation for highly reliable, high performance infrastructure. <span>With App Engine you can take advantage of the 10 years of knowledge Google has in running massively scalable, performance driven systems. App Engine applications are easy to build, easy to maintain, and easy to scale as your traffic and data storage needs grow. </span>...</p></div></li></ul><div class="css-n746ki"></div></div><div class="css-13u3lpy"><button class="css-1iqua1m">Sign up to see more</button></div></div></div><aside class="css-em9idi"><div class="css-12llqor"><div class="css-81jah4"></div></div></aside></div><div class="css-guqgrw"><div class="css-13hey0t"><h3 class="css-ua0sjh">CloudBees alternatives &amp; related posts</h3><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/jenkins" class="css-1jltg37"><img src="https://img.stackshare.io/service/670/thumb_retina_jenkins.png" alt="Jenkins logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/jenkins" class="css-1hhgtx3">Jenkins</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">51.6K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">43.8K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">2.2K</div></div></div></div><div class="css-q4ncy">An extendable open source continuous integration server</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>51.6K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>43.8K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>2.2K</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Deploy Jenkins With One Click On Linode</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->JENKINS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">521</span></div></div><span class="css-rsz8c">Hosted internally</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">464</span></div></div><span class="css-rsz8c">Free open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">315</span></div></div><span class="css-rsz8c">Great to build, deploy or launch anything async</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">243</span></div></div><span class="css-rsz8c">Tons of integrations</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">210</span></div></div><span class="css-rsz8c">Rich set of plugins with good documentation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">110</span></div></div><span class="css-rsz8c">Has support for build pipelines</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">72</span></div></div><span class="css-rsz8c">Open source and tons of integrations</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">65</span></div></div><span class="css-rsz8c">Easy setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">62</span></div></div><span class="css-rsz8c">It is open-source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">54</span></div></div><span class="css-rsz8c">Workflow plugin</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">11</span></div></div><span class="css-rsz8c">Configuration as code</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Very powerful tool</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Continuous Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Many Plugins</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Git and Maven integration is better</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Great flexibility</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">100% free and open source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Github integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Slack Integration (plugin)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Easy customisation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Self-hosted GitLab Integration (plugin)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Docker support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Pipeline API</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Platform idnependency</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Excellent docker integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Fast builds</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Hosted Externally</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Customizable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">AWS Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">It&#x27;s Everywhere</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">JOBDSL</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Can be run as a Docker container</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">It`w worked</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Easily extendable with seamless integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Build PR Branch Only</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">NodeJS Support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">PHP Support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Ruby/Rails Support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Universal controller</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Loose Coupling</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->JENKINS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">Workarounds needed for basic requirements</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">9</span></div></div><span class="css-rsz8c">Groovy with cumbersome syntax</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Plugins compatibility issues</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Lack of support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Limited abilities with declarative pipelines</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">No YAML syntax</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Too tied to plugins versions</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/jenkins-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/670/thumb_retina_jenkins.png" alt="Jenkins logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Jenkins vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Jenkins posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Tymoteusz Paul</div></div><div class="css-ds0hbm">Devops guy<!-- --> at X20X Development LTD<!-- --> · <a href="/Puciek/decisions/101212201442710058" class="css-nil"><time>Dec 9, 2018</time> <!-- -->| 23 upvotes · 5.5M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/vagrant" class="css-1pwtf47"><span title="Vagrant" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/768/150px-Vagrant.png" alt="Vagrant" class="css-1rz3855"/></span><span class="css-i6njnm">Vagrant</span></a><a href="/virtualbox" class="css-1pwtf47"><span title="VirtualBox" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/774/vbox_94px.png" alt="VirtualBox" class="css-1rz3855"/></span><span class="css-i6njnm">VirtualBox</span></a><a href="/ansible" class="css-1pwtf47"><span title="Ansible" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/663/ElOjna20.png" alt="Ansible" class="css-1rz3855"/></span><span class="css-i6njnm">Ansible</span></a><a href="/elasticsearch" class="css-1pwtf47"><span title="Elasticsearch" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/841/Image_2019-05-20_at_4.58.04_PM.png" alt="Elasticsearch" class="css-1rz3855"/></span><span class="css-i6njnm">Elasticsearch</span></a><a href="/kibana" class="css-1pwtf47"><span title="Kibana" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1722/Image_2019-05-20_at_4.53.31_PM.png" alt="Kibana" class="css-1rz3855"/></span><span class="css-i6njnm">Kibana</span></a><a href="/logstash" class="css-1pwtf47"><span title="Logstash" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1683/preview.png" alt="Logstash" class="css-1rz3855"/></span><span class="css-i6njnm">Logstash</span></a><a href="/teamcity" class="css-1pwtf47"><span title="TeamCity" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1357/317jQkeS.png" alt="TeamCity" class="css-1rz3855"/></span><span class="css-i6njnm">TeamCity</span></a><a href="/jenkins" class="css-1pwtf47"><span title="Jenkins" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/670/jenkins.png" alt="Jenkins" class="css-1rz3855"/></span><span class="css-i6njnm">Jenkins</span></a><a href="/slack" class="css-1pwtf47"><span title="Slack" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/675/RNiSRYOF_400x400.jpg" alt="Slack" class="css-1rz3855"/></span><span class="css-i6njnm">Slack</span></a><a href="/maven" class="css-1pwtf47"><span title="Apache Maven" class="css-t68yd0 service"><img src="https://img.stackshare.io/package_manager/977/default_9833f2ef0bbc2a946b4cc5e9307264033361076b.png" alt="Apache Maven" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Maven</span></a><a href="/vault" class="css-1pwtf47"><span title="Vault" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2905/vault.png" alt="Vault" class="css-1rz3855"/></span><span class="css-i6njnm">Vault</span></a><a href="/git" class="css-1pwtf47"><span title="Git" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1046/git.png" alt="Git" class="css-1rz3855"/></span><span class="css-i6njnm">Git</span></a><a href="/docker" class="css-1pwtf47"><span title="Docker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/586/n4u37v9t_400x400.png" alt="Docker" class="css-1rz3855"/></span><span class="css-i6njnm">Docker</span></a><a href="/circleci" class="css-1pwtf47"><span title="CircleCI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/190/CvqrSSFs_400x400.jpg" alt="CircleCI" class="css-1rz3855"/></span><span class="css-i6njnm">CircleCI</span></a><a href="/lxc" class="css-1pwtf47"><span title="LXC" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3884/linux-containers.png" alt="LXC" class="css-1rz3855"/></span><span class="css-i6njnm">LXC</span></a><a href="/amazon-ec2" class="css-1pwtf47"><span title="Amazon EC2" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/18/amazon-ec2.png" alt="Amazon EC2" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon EC2</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).</p> <p>It always starts with an app, whatever it may be and reading the readmes available while <span class="tool">Vagrant</span> and <span class="tool">VirtualBox</span> is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into <span class="tool">Ansible</span> playbook(s), and only stopping when doing a clear <code>vagrant up</code> or <code>vagrant reload</code> we will have a fully working environment. As our <span class="tool">Vagrant</span> environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product. </p> <p>I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with <span class="tool">Vagrant</span> as developer boxes should be as easy as <code>vagrant up</code>, but the meat of our product lies in <span class="tool">Ansible</span> which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.</p> <p>We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab <span class="tool">Elasticsearch</span>, <span class="tool">Kibana</span>, and <span class="tool">Logstash</span>. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through <span class="tool">Ansible</span>, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.</p> <p>If we are happy with the state of the <span class="tool">Ansible</span> it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: <span class="tool">TeamCity</span>. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with <span class="tool">Jenkins</span>, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with <span class="tool">TeamCity</span>). It also comes with all the common-handy plugins like <span class="tool">Slack</span> or <span class="tool">Apache Maven</span> integration.</p> <p>The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual <span class="tool">Vault</span> instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. <span class="tool">TeamCity</span> shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific <span class="tool">Git</span> branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).</p> <p>Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common <span class="tool">Docker</span> and <span class="tool">CircleCI</span> setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and <span class="tool">LXC</span>. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for <span class="tool">Amazon EC2</span> (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="http://puciek.me/2018/12/how-to-design-ci-cd-pipelines-or-rather-how-i-do-it" title="How to design CI/CD pipelines, or rather how I do it. | Tymoteusz Paul - X20X Development" class="css-nil">How to design CI/CD pipelines, or rather how I do it. | Tymoteusz Paul - X20X Development</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Thierry Schellenbach</div></div><div class="css-ds0hbm">CEO<!-- --> at Stream<!-- --> · <a href="/tschellenbach/decisions/101031322395260474" class="css-nil"><time>Sep 13, 2018</time> <!-- -->| 23 upvotes · 672.2K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/golang" class="css-1pwtf47"><span title="Golang" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1005/O6AczwfV_400x400.png" alt="Golang" class="css-1rz3855"/></span><span class="css-i6njnm">Golang</span></a><a href="/travis-ci" class="css-1pwtf47"><span title="Travis CI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/460/Lu6cGu0z_400x400.png" alt="Travis CI" class="css-1rz3855"/></span><span class="css-i6njnm">Travis CI</span></a><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><a href="/jenkins" class="css-1pwtf47"><span title="Jenkins" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/670/jenkins.png" alt="Jenkins" class="css-1rz3855"/></span><span class="css-i6njnm">Jenkins</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/stream" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Stream</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Releasing new versions of our services is done by <span class="tool">Travis CI</span>. Travis first runs our test suite. Once it passes, it publishes a new release binary to <span class="tool">GitHub</span>.</p> <p>Common tasks such as installing dependencies for the <span class="tool">Go</span> project, or building a binary are automated using plain old Makefiles. (We know, crazy old school, right?) Our binaries are compressed using UPX.</p> <p>Travis has come a long way over the past years. I used to prefer <span class="tool">Jenkins</span> in some cases since it was easier to debug broken builds. With the addition of the aptly named “debug build” button, Travis is now the clear winner. It’s easy to use and free for open source, with no need to maintain anything.</p> <p><span class="topic">#ContinuousIntegration</span> <span class="topic">#CodeCollaborationVersionControl</span></p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://stackshare.io/stream/stream-and-go-news-feeds-for-over-300-million-end-users" title="Stream &amp; Go: News Feeds for Over 300 Million End Users - Stream Tech Stack | StackShare" class="css-nil">Stream &amp; Go: News Feeds for Over 300 Million End Users - Stream Tech Stack | StackShare</a></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/circleci" class="css-1jltg37"><img src="https://img.stackshare.io/service/190/thumb_retina_CvqrSSFs_400x400.jpg" alt="CircleCI logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/circleci" class="css-1hhgtx3">CircleCI</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">9K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">6.4K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">962</div></div></div></div><div class="css-q4ncy">Automate your development process quickly, safely, and at scale</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>9K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>6.4K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>962</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Visit CircleCI</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->CIRCLECI</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">224</span></div></div><span class="css-rsz8c">Github integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">176</span></div></div><span class="css-rsz8c">Easy setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">152</span></div></div><span class="css-rsz8c">Fast builds</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">94</span></div></div><span class="css-rsz8c">Competitively priced</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">74</span></div></div><span class="css-rsz8c">Slack integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">54</span></div></div><span class="css-rsz8c">Docker support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">44</span></div></div><span class="css-rsz8c">Awesome UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">33</span></div></div><span class="css-rsz8c">Great customer support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">18</span></div></div><span class="css-rsz8c">Ios support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">14</span></div></div><span class="css-rsz8c">Hipchat integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">13</span></div></div><span class="css-rsz8c">SSH debug access</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">11</span></div></div><span class="css-rsz8c">Free for Open Source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c"> Bitbucket integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Mobile support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Nodejs support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">AWS CodeDeploy integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Great support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Free for Github private repo</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">YAML configuration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Clojurescript</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">OSX support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Continuous Deployment</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Simple, clean UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Clojure</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Unstable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Favorite</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Helpful documentation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Autoscaling</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Extremely configurable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Works</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Android support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Fair pricing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">All inclusive testing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Japanese in rspec comment appears OK</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Build PR Branch Only</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">So circular</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Easy setup, easy to understand, fast and reliable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Parallel builds for slow test suites</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Easy setup. 2.0 is fast! </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Parallelism</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Easy to deploy to private servers</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Really easy to use</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Stable</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->CIRCLECI</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">Unstable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Scammy pricing structure</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Aggressive Github permissions</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/circleci-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/190/thumb_retina_CvqrSSFs_400x400.jpg" alt="CircleCI logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare CircleCI vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related CircleCI posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Tymoteusz Paul</div></div><div class="css-ds0hbm">Devops guy<!-- --> at X20X Development LTD<!-- --> · <a href="/Puciek/decisions/101212201442710058" class="css-nil"><time>Dec 9, 2018</time> <!-- -->| 23 upvotes · 5.5M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/vagrant" class="css-1pwtf47"><span title="Vagrant" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/768/150px-Vagrant.png" alt="Vagrant" class="css-1rz3855"/></span><span class="css-i6njnm">Vagrant</span></a><a href="/virtualbox" class="css-1pwtf47"><span title="VirtualBox" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/774/vbox_94px.png" alt="VirtualBox" class="css-1rz3855"/></span><span class="css-i6njnm">VirtualBox</span></a><a href="/ansible" class="css-1pwtf47"><span title="Ansible" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/663/ElOjna20.png" alt="Ansible" class="css-1rz3855"/></span><span class="css-i6njnm">Ansible</span></a><a href="/elasticsearch" class="css-1pwtf47"><span title="Elasticsearch" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/841/Image_2019-05-20_at_4.58.04_PM.png" alt="Elasticsearch" class="css-1rz3855"/></span><span class="css-i6njnm">Elasticsearch</span></a><a href="/kibana" class="css-1pwtf47"><span title="Kibana" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1722/Image_2019-05-20_at_4.53.31_PM.png" alt="Kibana" class="css-1rz3855"/></span><span class="css-i6njnm">Kibana</span></a><a href="/logstash" class="css-1pwtf47"><span title="Logstash" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1683/preview.png" alt="Logstash" class="css-1rz3855"/></span><span class="css-i6njnm">Logstash</span></a><a href="/teamcity" class="css-1pwtf47"><span title="TeamCity" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1357/317jQkeS.png" alt="TeamCity" class="css-1rz3855"/></span><span class="css-i6njnm">TeamCity</span></a><a href="/jenkins" class="css-1pwtf47"><span title="Jenkins" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/670/jenkins.png" alt="Jenkins" class="css-1rz3855"/></span><span class="css-i6njnm">Jenkins</span></a><a href="/slack" class="css-1pwtf47"><span title="Slack" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/675/RNiSRYOF_400x400.jpg" alt="Slack" class="css-1rz3855"/></span><span class="css-i6njnm">Slack</span></a><a href="/maven" class="css-1pwtf47"><span title="Apache Maven" class="css-t68yd0 service"><img src="https://img.stackshare.io/package_manager/977/default_9833f2ef0bbc2a946b4cc5e9307264033361076b.png" alt="Apache Maven" class="css-1rz3855"/></span><span class="css-i6njnm">Apache Maven</span></a><a href="/vault" class="css-1pwtf47"><span title="Vault" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2905/vault.png" alt="Vault" class="css-1rz3855"/></span><span class="css-i6njnm">Vault</span></a><a href="/git" class="css-1pwtf47"><span title="Git" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1046/git.png" alt="Git" class="css-1rz3855"/></span><span class="css-i6njnm">Git</span></a><a href="/docker" class="css-1pwtf47"><span title="Docker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/586/n4u37v9t_400x400.png" alt="Docker" class="css-1rz3855"/></span><span class="css-i6njnm">Docker</span></a><a href="/circleci" class="css-1pwtf47"><span title="CircleCI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/190/CvqrSSFs_400x400.jpg" alt="CircleCI" class="css-1rz3855"/></span><span class="css-i6njnm">CircleCI</span></a><a href="/lxc" class="css-1pwtf47"><span title="LXC" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3884/linux-containers.png" alt="LXC" class="css-1rz3855"/></span><span class="css-i6njnm">LXC</span></a><a href="/amazon-ec2" class="css-1pwtf47"><span title="Amazon EC2" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/18/amazon-ec2.png" alt="Amazon EC2" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon EC2</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Often enough I have to explain my way of going about setting up a CI/CD pipeline with multiple deployment platforms. Since I am a bit tired of yapping the same every single time, I've decided to write it up and share with the world this way, and send people to read it instead ;). I will explain it on "live-example" of how the Rome got built, basing that current methodology exists only of readme.md and wishes of good luck (as it usually is ;)).</p> <p>It always starts with an app, whatever it may be and reading the readmes available while <span class="tool">Vagrant</span> and <span class="tool">VirtualBox</span> is installing and updating. Following that is the first hurdle to go over - convert all the instruction/scripts into <span class="tool">Ansible</span> playbook(s), and only stopping when doing a clear <code>vagrant up</code> or <code>vagrant reload</code> we will have a fully working environment. As our <span class="tool">Vagrant</span> environment is now functional, it's time to break it! This is the moment to look for how things can be done better (too rigid/too lose versioning? Sloppy environment setup?) and replace them with the right way to do stuff, one that won't bite us in the backside. This is the point, and the best opportunity, to upcycle the existing way of doing dev environment to produce a proper, production-grade product. </p> <p>I should probably digress here for a moment and explain why. I firmly believe that the way you deploy production is the same way you should deploy develop, shy of few debugging-friendly setting. This way you avoid the discrepancy between how production work vs how development works, which almost always causes major pains in the back of the neck, and with use of proper tools should mean no more work for the developers. That's why we start with <span class="tool">Vagrant</span> as developer boxes should be as easy as <code>vagrant up</code>, but the meat of our product lies in <span class="tool">Ansible</span> which will do meat of the work and can be applied to almost anything: AWS, bare metal, docker, LXC, in open net, behind vpn - you name it.</p> <p>We must also give proper consideration to monitoring and logging hoovering at this point. My generic answer here is to grab <span class="tool">Elasticsearch</span>, <span class="tool">Kibana</span>, and <span class="tool">Logstash</span>. While for different use cases there may be better solutions, this one is well battle-tested, performs reasonably and is very easy to scale both vertically (within some limits) and horizontally. Logstash rules are easy to write and are well supported in maintenance through <span class="tool">Ansible</span>, which as I've mentioned earlier, are at the very core of things, and creating triggers/reports and alerts based on Elastic and Kibana is generally a breeze, including some quite complex aggregations.</p> <p>If we are happy with the state of the <span class="tool">Ansible</span> it's time to move on and put all those roles and playbooks to work. Namely, we need something to manage our CI/CD pipelines. For me, the choice is obvious: <span class="tool">TeamCity</span>. It's modern, robust and unlike most of the light-weight alternatives, it's transparent. What I mean by that is that it doesn't tell you how to do things, doesn't limit your ways to deploy, or test, or package for that matter. Instead, it provides a developer-friendly and rich playground for your pipelines. You can do most the same with <span class="tool">Jenkins</span>, but it has a quite dated look and feel to it, while also missing some key functionality that must be brought in via plugins (like quality REST API which comes built-in with <span class="tool">TeamCity</span>). It also comes with all the common-handy plugins like <span class="tool">Slack</span> or <span class="tool">Apache Maven</span> integration.</p> <p>The exact flow between CI and CD varies too greatly from one application to another to describe, so I will outline a few rules that guide me in it: 1. Make build steps as small as possible. This way when something breaks, we know exactly where, without needing to dig and root around. 2. All security credentials besides development environment must be sources from individual <span class="tool">Vault</span> instances. Keys to those containers should exist only on the CI/CD box and accessible by a few people (the less the better). This is pretty self-explanatory, as anything besides dev may contain sensitive data and, at times, be public-facing. Because of that appropriate security must be present. <span class="tool">TeamCity</span> shines in this department with excellent secrets-management. 3. Every part of the build chain shall consume and produce artifacts. If it creates nothing, it likely shouldn't be its own build. This way if any issue shows up with any environment or version, all developer has to do it is grab appropriate artifacts to reproduce the issue locally. 4. Deployment builds should be directly tied to specific <span class="tool">Git</span> branches/tags. This enables much easier tracking of what caused an issue, including automated identifying and tagging the author (nothing like automated regression testing!).</p> <p>Speaking of deployments, I generally try to keep it simple but also with a close eye on the wallet. Because of that, I am more than happy with AWS or another cloud provider, but also constantly peeking at the loads and do we get the value of what we are paying for. Often enough the pattern of use is not constantly erratic, but rather has a firm baseline which could be migrated away from the cloud and into bare metal boxes. That is another part where this approach strongly triumphs over the common <span class="tool">Docker</span> and <span class="tool">CircleCI</span> setup, where you are very much tied in to use cloud providers and getting out is expensive. Here to embrace bare-metal hosting all you need is a help of some container-based self-hosting software, my personal preference is with Proxmox and <span class="tool">LXC</span>. Following that all you must write are ansible scripts to manage hardware of Proxmox, similar way as you do for <span class="tool">Amazon EC2</span> (ansible supports both greatly) and you are good to go. One does not exclude another, quite the opposite, as they can live in great synergy and cut your costs dramatically (the heavier your base load, the bigger the savings) while providing production-grade resiliency.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="http://puciek.me/2018/12/how-to-design-ci-cd-pipelines-or-rather-how-i-do-it" title="How to design CI/CD pipelines, or rather how I do it. | Tymoteusz Paul - X20X Development" class="css-nil">How to design CI/CD pipelines, or rather how I do it. | Tymoteusz Paul - X20X Development</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Tim Abbott</div></div><div class="css-ds0hbm">Founder<!-- --> at Zulip<!-- --> · <a href="/tabbott/decisions/101897486541876212" class="css-nil"><time>Apr 9, 2019</time> <!-- -->| 14 upvotes · 340.5K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/travis-ci" class="css-1pwtf47"><span title="Travis CI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/460/Lu6cGu0z_400x400.png" alt="Travis CI" class="css-1rz3855"/></span><span class="css-i6njnm">Travis CI</span></a><a href="/circleci" class="css-1pwtf47"><span title="CircleCI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/190/CvqrSSFs_400x400.jpg" alt="CircleCI" class="css-1rz3855"/></span><span class="css-i6njnm">CircleCI</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/zulip" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Zulip</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>We actually started out on <span class="tool">Travis CI</span>, but we've migrated our main builds to <span class="tool">CircleCI</span>, and it's been a huge improvement. </p> <p>The reason it's been a huge improvement is that Travis CI has a fundamentally bad design for their images, where they start with a standard base Linux image containing tons of packages (several versions of postgres, every programming language environment, etc). This is potentially nice for the "get builds for a small project running quickly" use case, but it's a total disaster for a larger project that needs a decent number of dependencies and cares about the performance and reliability of their build. </p> <p>This issue is exacerbated by their networking infrastructure being unreliable; we usually saw over 1% of builds failing due to transient networking errors in Travis CI, <strong>even after we added retries</strong> to the most frequently failing operations like <code>apt update</code> or <code>pip install</code>. And they never install Ubuntu's point release updates to their images. So doing an <code>apt update</code>, <code>apt install</code>, or especially <code>apt upgrade</code> would take forever. We ended up writing code to actually uninstall many of their base packages and pin the versions of hundreds of others to get a semi-fast, semi-reliable build. It was infuriating.</p> <p>The CircleCI v2.0 system has the right design for a CI system: we can customize the base image to start with any expensive-to-install packages we need for our build, and we can update that image if and when we want to. The end result is that when migrating, we were able to delete all the hacky optimizations mentioned above, while still ending up with a 50% faster build latency. And we've also had 5-10x fewer issues with networking-related flakes, which means one doesn't have to constantly check whether a build failure is actually due to an issue with the code under test or "just another networking flake".</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/bamboo" class="css-1jltg37"><img src="https://img.stackshare.io/service/1729/thumb_retina_bamboo.png" alt="Bamboo logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/bamboo" class="css-1hhgtx3">Bamboo</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">491</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">504</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">17</div></div></div></div><div class="css-q4ncy">Tie automated builds, tests, and releases together in a single workflow</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>491</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>504</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>17</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->BAMBOO</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Integrates with other Atlassian tools</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Great notification scheme</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Great UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Has Deployment Projects</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->BAMBOO</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Expensive</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Low community support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Bad UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Bad integration with docker</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/bamboo-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/1729/thumb_retina_bamboo.png" alt="Bamboo logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Bamboo vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Bamboo posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>xie zhifeng</div></div><div class="css-ds0hbm">cto<!-- --> at csdn<!-- --> · <a href="/xiezhifeng/decisions/106209327616626180" class="css-nil"><time>May 10, 2021</time> <!-- -->| 2 upvotes · 28.7K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/bamboo" class="css-1pwtf47"><span title="Bamboo" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1729/bamboo.png" alt="Bamboo" class="css-1rz3855"/></span><span class="css-i6njnm">Bamboo</span></a><a href="/jenkins" class="css-1pwtf47"><span title="Jenkins" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/670/jenkins.png" alt="Jenkins" class="css-1rz3855"/></span><span class="css-i6njnm">Jenkins</span></a><a href="/gitlab" class="css-1pwtf47"><span title="GitLab" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/880/lmalkclL.png" alt="GitLab" class="css-1rz3855"/></span><span class="css-i6njnm">GitLab</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/byteark-cdn" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">ByteArk</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I am choosing a DevOps toolset for my team. <span class="tool">GitLab</span> is open source and quite cloud-native. <span class="tool">Jenkins</span> has a very popular environment system but old-style technicals. <span class="tool">Bamboo</span> is very nice but integrated only with Atlassian products.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="http://blog.csdn.net" title="CSDN博客 - 专业IT技术发表平台" class="css-nil">CSDN博客 - 专业IT技术发表平台</a></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/azure-devops" class="css-1jltg37"><img src="https://img.stackshare.io/service/4313/thumb_retina_XNKktHjN_400x400.png" alt="Azure DevOps logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/azure-devops" class="css-1hhgtx3">Azure DevOps</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">2.4K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">2.5K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">244</div></div></div></div><div class="css-q4ncy">Services for teams to share code, track work, and ship software</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>2.4K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>2.5K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>244</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Join the Snowflake Build Summit</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->AZURE DEVOPS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">54</span></div></div><span class="css-rsz8c">Complete and powerful</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">31</span></div></div><span class="css-rsz8c">Huge extension ecosystem</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">27</span></div></div><span class="css-rsz8c">Azure integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">26</span></div></div><span class="css-rsz8c">One Stop Shop For Build server, Project Mgt, CDCI </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">25</span></div></div><span class="css-rsz8c">Flexible and powerful</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">15</span></div></div><span class="css-rsz8c">Everything I need. Simple and intuitive UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">13</span></div></div><span class="css-rsz8c">Support Open Source</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Integrations</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">GitHub Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Cost free for Stakeholders</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Project Mgmt Features</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">One 4 all</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Runs in the cloud</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Crap</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Agent On-Premise(Linux - Windows)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Aws integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Jenkins Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Link Test Cases to Stories</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">GCP Integration</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->AZURE DEVOPS</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Still dependant on C# for agents</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Many in devops disregard MS altogether</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Not a requirements management tool</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Capacity across cross functional teams not visibile</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Half Baked</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Jack of all trades, master of none</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Poor Jenkins integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Tedious for test plan/case creation</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/azure-devops-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/4313/thumb_retina_XNKktHjN_400x400.png" alt="Azure DevOps logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Azure DevOps vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Azure DevOps posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Farzad Jalali</div></div><div class="css-ds0hbm">Senior Software Architect<!-- --> at BerryWorld<!-- --> · <a href="/Berryworld/decisions/102133557556206457" class="css-nil"><time>May 21, 2019</time> <!-- -->| 8 upvotes · 221.2K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/visual-studio" class="css-1pwtf47"><span title="Visual Studio" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1451/SR2hUhQN.png" alt="Visual Studio" class="css-1rz3855"/></span><span class="css-i6njnm">Visual Studio</span></a><a href="/azure-devops" class="css-1pwtf47"><span title="Azure DevOps" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4313/XNKktHjN_400x400.png" alt="Azure DevOps" class="css-1rz3855"/></span><span class="css-i6njnm">Azure DevOps</span></a><a href="/azure-functions" class="css-1pwtf47"><span title="Azure Functions" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4851/default_1c86e0d45d685cb73aa9a39a658159f6199de49d.png" alt="Azure Functions" class="css-1rz3855"/></span><span class="css-i6njnm">Azure Functions</span></a><a href="/azure-websites" class="css-1pwtf47"><span title="Azure Websites" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2100/W9gT7hZo.png" alt="Azure Websites" class="css-1rz3855"/></span><span class="css-i6njnm">Azure Websites</span></a><a href="/azure-kubernetes-service" class="css-1pwtf47"><span title="Azure Kubernetes Service" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9133/Azure-Container-Service_COLOR-300x300.png" alt="Azure Kubernetes Service" class="css-1rz3855"/></span><span class="css-i6njnm">Azure Kubernetes Service</span></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p><span class="tool">Visual Studio</span> <span class="tool">Azure DevOps</span> <span class="tool">Azure Functions</span> <span class="tool">Azure Websites</span> <span class="topic"><span class="topic"><span class="topic">#Azure</span></span></span> <span class="topic"><span class="topic"><span class="topic">#Azure</span></span>KeyVault</span> <span class="topic"><span class="topic"><span class="topic">#Azure</span></span>AD</span> <span class="topic"><span class="topic"><span class="topic">#Azure</span></span>Apps</span> </p> <p><span class="topic"><span class="topic"><span class="topic">#Azure</span></span></span> Cloud Since Amazon is potentially our competitor then we need a different cloud vendor, also our programmers are microsoft oriented so the choose were obviously <span class="topic"><span class="topic">#Azure</span></span> for us.</p> <p><span class="tool">Azure DevOps</span> Because we need to be able to develop a neww pipeline into Azure environment ina few minutes.</p> <p><span class="tool">Azure Kubernetes Service</span> We already in <span class="topic"><span class="topic">#Azure</span></span> , also need to use K8s , so let's use AKS as it's a manged Kubernetes in the <span class="topic"><span class="topic"><span class="topic">#Azure</span></span></span> </p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Nicholas Rogoff</div></div><div class="css-ds0hbm"> at Avanade UK Ltd.<!-- --> · <a href="/nrogoff/decisions/102145295722757693" class="css-nil"><time>May 23, 2019</time> <!-- -->| 7 upvotes · 1M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/dot-net-core" class="css-1pwtf47"><span title=".NET Core" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/6403/default_91fc1f0ee315262794273aa1387eaf8fed8436e6.png" alt=".NET Core" class="css-1rz3855"/></span><span class="css-i6njnm">.NET Core</span></a><a href="/c-sharp" class="css-1pwtf47"><span title="C#" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1015/1200px-C_Sharp_wordmark.svg.png" alt="C#" class="css-1rz3855"/></span><span class="css-i6njnm">C#</span></a><a href="/microsoft-sql-server" class="css-1pwtf47"><span title="Microsoft SQL Server" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1027/sql_server.png" alt="Microsoft SQL Server" class="css-1rz3855"/></span><span class="css-i6njnm">Microsoft SQL Server</span></a><a href="/javascript" class="css-1pwtf47"><span title="JavaScript" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1209/javascript.jpeg" alt="JavaScript" class="css-1rz3855"/></span><span class="css-i6njnm">JavaScript</span></a><a href="/jquery" class="css-1pwtf47"><span title="jQuery" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1021/lxEKmMnB_400x400.jpg" alt="jQuery" class="css-1rz3855"/></span><span class="css-i6njnm">jQuery</span></a><a href="/git" class="css-1pwtf47"><span title="Git" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1046/git.png" alt="Git" class="css-1rz3855"/></span><span class="css-i6njnm">Git</span></a><a href="/azure-devops" class="css-1pwtf47"><span title="Azure DevOps" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4313/XNKktHjN_400x400.png" alt="Azure DevOps" class="css-1rz3855"/></span><span class="css-i6njnm">Azure DevOps</span></a><a href="/postman" class="css-1pwtf47"><span title="Postman" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1336/xWMRvm_5_400x400.png" alt="Postman" class="css-1rz3855"/></span><span class="css-i6njnm">Postman</span></a><a href="/newman" class="css-1pwtf47"><span title="Newman" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3766/10251060.png" alt="Newman" class="css-1rz3855"/></span><span class="css-i6njnm">Newman</span></a><a href="/visual-studio-code" class="css-1pwtf47"><span title="Visual Studio Code" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4202/Visual_Studio_Code_logo.png" alt="Visual Studio Code" class="css-1rz3855"/></span><span class="css-i6njnm">Visual Studio Code</span></a><a href="/visual-studio" class="css-1pwtf47"><span title="Visual Studio" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1451/SR2hUhQN.png" alt="Visual Studio" class="css-1rz3855"/></span><span class="css-i6njnm">Visual Studio</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/nhs-digital-nhs-uk" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">NHS Digital (NHS.UK)</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Secure Membership Web API backed by SQL Server. This is the backing API to store additional profile and complex membership metadata outside of an Azure AD B2C provider. The front-end using the Azure AD B2C to allow 3rd party trusted identity providers to authenticate. This API provides a way to add and manage more complex permission structures than can easily be maintained in Azure AD.</p> <p>We have .Net developers and an Azure infrastructure environment using server-less functions, logic apps and SaaS where ever possible. For this service I opted to keep it as a classic WebAPI project and deployed to AppService.</p> <ul> <li>Trusted Authentication Provider: @AzureActiveDirectoryB2C </li> <li>Frameworks: <span class="tool">.NET Core</span> </li> <li>Language: <span class="tool">C#</span> , <span class="tool">Microsoft SQL Server</span> , <span class="tool">JavaScript</span> </li> <li>IDEs: <span class="tool">Visual Studio Code</span> , <span class="tool">Visual Studio</span> </li> <li>Libraries: <span class="tool">jQuery</span> @EntityFramework, @AutoMapper, @FeatureToggle , @Swashbuckle</li> <li>Database: @SqlAzure </li> <li>Source Control: <span class="tool">Git</span> </li> <li>Build and Release Pipelines: <span class="tool">Azure DevOps</span> </li> <li>Test tools: <span class="tool">Postman</span> , <span class="tool">Newman</span> </li> <li>Test framework: @nUnit, @moq </li> <li>Infrastructure: @AzureAppService, @AzureAPIManagement </li> </ul></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/gitlab" class="css-1jltg37"><img src="https://img.stackshare.io/service/880/thumb_retina_lmalkclL.png" alt="GitLab logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/gitlab" class="css-1hhgtx3">GitLab</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">53.1K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">45K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">2.4K</div></div></div></div><div class="css-q4ncy">Open source self-hosted Git management software</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>53.1K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>45K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>2.4K</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->GITLAB</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">501</span></div></div><span class="css-rsz8c">Self hosted</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">428</span></div></div><span class="css-rsz8c">Free</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">336</span></div></div><span class="css-rsz8c">Has community edition</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">241</span></div></div><span class="css-rsz8c">Easy setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">239</span></div></div><span class="css-rsz8c">Familiar interface</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">133</span></div></div><span class="css-rsz8c">Includes many features, including ci</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">109</span></div></div><span class="css-rsz8c">Nice UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">82</span></div></div><span class="css-rsz8c">Good integration with gitlabci</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">55</span></div></div><span class="css-rsz8c">Simple setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">33</span></div></div><span class="css-rsz8c">Has an official mobile app</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">32</span></div></div><span class="css-rsz8c">Free private repository</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">29</span></div></div><span class="css-rsz8c">Continuous Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">20</span></div></div><span class="css-rsz8c">Open source, great ui (like github)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">16</span></div></div><span class="css-rsz8c">Slack Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">Full CI flow</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">10</span></div></div><span class="css-rsz8c">Free and unlimited private git repos</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">User, group, and project access management is simple</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Intuitive UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Built-in CI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">All in one (Git, CI, Agile..)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Both public and private Repositories</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Integrated Docker Registry</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">CI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Full DevOps suite with Git</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">It&#x27;s powerful source code management tool </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Excellent</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Build/pipeline definition alongside code</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Mattermost Chat client</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Issue system</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">So easy to use</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Because is the best remote host for git repositories</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Dockerized</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Free private repos</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Great for team collaboration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Unlimited free repos &amp; collaborators</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">It&#x27;s fully integrated</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">I like the its runners and executors feature</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">One-click install through DigitalOcean</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Security and Stable</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Low maintenance cost due omnibus-deployment</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">On-premises</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Kubernetes integration with GitLab CI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Multilingual interface</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Review Apps feature</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Powerful software planning and maintaining tools</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Groups of groups</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Built-in Docker Registry</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Beautiful</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Wounderful</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Opensource</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Not Microsoft Owned</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Many private repo</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Published IP list for whitelisting (gl-infra#434)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">The dashboard with deployed environments</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Powerful Continuous Integration System</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Kubernetes Integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Native CI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">HipChat intergration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">It includes everything I need, all packaged with docker</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Supports Radius/Ldap &amp; Browser Code Edits</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->GITLAB</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">27</span></div></div><span class="css-rsz8c">Slow ui performance</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">7</span></div></div><span class="css-rsz8c">Introduce breaking bugs every release</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Insecure (no published IP list for whitelisting)</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Built-in Docker Registry </span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Review Apps feature</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/gitlab-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/880/thumb_retina_lmalkclL.png" alt="GitLab logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare GitLab vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related GitLab posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Tim Abbott</div></div><div class="css-ds0hbm">Founder<!-- --> at Zulip<!-- --> · <a href="/tabbott/decisions/101184293593162197" class="css-nil"><time>Dec 4, 2018</time> <!-- -->| 25 upvotes · 701.5K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><a href="/gitlab" class="css-1pwtf47"><span title="GitLab" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/880/lmalkclL.png" alt="GitLab" class="css-1rz3855"/></span><span class="css-i6njnm">GitLab</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/zulip" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Zulip</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>I have mixed feelings on <span class="tool">GitHub</span> as a product and our use of it for the Zulip open source project. On the one hand, I do feel that being on GitHub helps people discover Zulip, because we have enough stars (etc.) that we rank highly among projects on the platform. and there is a definite benefit for lowering barriers to contribution (which is important to us) that GitHub has such a dominant position in terms of what everyone has accounts with.</p> <p>But even ignoring how one might feel about their new corporate owner (MicroSoft), in a lot of ways GitHub is a bad product for open source projects. Years after the "Dear GitHub" letter, there are still basic gaps in its issue tracker:</p> <ul> <li>You can't give someone permission to label/categorize issues without full write access to a project (including ability to merge things to master, post releases, etc.). </li> <li>You can't let anyone with a GitHub account self-assign issues to themselves.</li> <li>Many more similar issues.</li> </ul> <p>It's embarrassing, because I've talked to GitHub product managers at various open source events about these things for 3 years, and they always agree the thing is important, but then nothing ever improves in the Issues product. Maybe the new management at MicroSoft will fix their product management situation, but if not, I imagine we'll eventually do the migration to <span class="tool">GitLab</span>.</p> <p>We have a custom bot project, <a href="http://github.com/zulip/zulipbot" rel="nofollow noopener" target="_blank">http://github.com/zulip/zulipbot</a>, to deal with some of these issues where possible, and every other large project we talk to does the same thing, more or less.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="http://github.com/zulip/zulip/" title="GitHub - zulip/zulip: Zulip server - powerful open source team chat" class="css-nil">GitHub - zulip/zulip: Zulip server - powerful open source team chat</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Joshua Dean Küpper</div></div><div class="css-ds0hbm">CEO<!-- --> at Scrayos UG (haftungsbeschränkt)<!-- --> · <a href="/Scrayos/decisions/101750627694181605" class="css-nil"><time>Mar 14, 2019</time> <!-- -->| 20 upvotes · 447.8K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/gitlab-ci" class="css-1pwtf47"><span title="GitLab CI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5545/9pAwHBR0.jpg" alt="GitLab CI" class="css-1rz3855"/></span><span class="css-i6njnm">GitLab CI</span></a><a href="/gitlab" class="css-1pwtf47"><span title="GitLab" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/880/lmalkclL.png" alt="GitLab" class="css-1rz3855"/></span><span class="css-i6njnm">GitLab</span></a><a href="/gitlab-pages" class="css-1pwtf47"><span title="GitLab Pages" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4907/lmalkclL.png" alt="GitLab Pages" class="css-1rz3855"/></span><span class="css-i6njnm">GitLab Pages</span></a><a href="/jenkins" class="css-1pwtf47"><span title="Jenkins" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/670/jenkins.png" alt="Jenkins" class="css-1rz3855"/></span><span class="css-i6njnm">Jenkins</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/scrayos-ug-haftungsbeschrankt" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Scrayos UG (haftungsbeschränkt)</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>We use <span class="tool">GitLab CI</span> because of the great native integration as a part of the <span class="tool">GitLab</span> framework and the linting-capabilities it offers. The visualization of complex pipelines and the embedding within the project overview made Gitlab CI even more convenient. We use it for all projects, all deployments and as a part of <span class="tool">GitLab Pages</span>. </p> <p>While we initially used the Shell-executor, we quickly switched to the Docker-executor and use it exclusively now. </p> <p>We formerly used <span class="tool">Jenkins</span> but preferred to handle everything within <span class="tool">GitLab</span> . Aside from the unification of our infrastructure another motivation was the "configuration-in-file"-approach, that Gitlab CI offered, while Jenkins support of this concept was very limited and users had to resort to using the webinterface. Since the file is included within the repository, it is also version controlled, which was a huge plus for us.</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/spinnaker" class="css-1jltg37"><img src="https://img.stackshare.io/service/7674/thumb_retina_7634182.png" alt="Spinnaker logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/spinnaker" class="css-1hhgtx3">Spinnaker</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">221</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">332</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">12</div></div></div></div><div class="css-q4ncy">Multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>221</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>332</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>12</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->SPINNAKER</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">Mature</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->SPINNAKER</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">No GitOps</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Configuration time</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Management overhead</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Ease of use</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/spinnaker-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/7674/thumb_retina_7634182.png" alt="Spinnaker logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Spinnaker vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Spinnaker posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>John Kodumal</div></div><div class="css-ds0hbm">CTO<!-- --> at LaunchDarkly<!-- --> · <a href="/jkodumal/decisions/101739551483173129" class="css-nil"><time>Mar 12, 2019</time> <!-- -->| 6 upvotes · 282K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/ansible" class="css-1pwtf47"><span title="Ansible" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/663/ElOjna20.png" alt="Ansible" class="css-1rz3855"/></span><span class="css-i6njnm">Ansible</span></a><a href="/spinnaker" class="css-1pwtf47"><span title="Spinnaker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/7674/7634182.png" alt="Spinnaker" class="css-1rz3855"/></span><span class="css-i6njnm">Spinnaker</span></a><a href="/terraform" class="css-1pwtf47"><span title="Terraform" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1276/og-image-8b3e4f7d.png" alt="Terraform" class="css-1rz3855"/></span><span class="css-i6njnm">Terraform</span></a><a href="/packer" class="css-1pwtf47"><span title="Packer" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/967/packer.png" alt="Packer" class="css-1rz3855"/></span><span class="css-i6njnm">Packer</span></a><a href="/armory" class="css-1pwtf47"><span title="Armory" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/6591/default_773364c0e651db1b58e86defdaec0f1dc653acad.png" alt="Armory" class="css-1rz3855"/></span><span class="css-i6njnm">Armory</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/launchdarkly" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">LaunchDarkly</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>LaunchDarkly is almost a five year old company, and our methodology for deploying was state of the art... for 2014. We recently undertook a project to modernize the way we <span class="topic">#deploy</span> our software, moving from <span class="tool">Ansible</span>-based deploy scripts that executed on our local machines, to using <span class="tool">Spinnaker</span> (along with <span class="tool">Terraform</span> and <span class="tool">Packer</span>) as the basis of our deployment system. We've been using <span class="tool">Armory</span>'s enterprise Spinnaker offering to make this project a reality.</p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://stackshare.io/launchdarkly/redux-scaling-launchdarkly-from-4-to-200-billion-feature-flags-daily" title="Redux: Scaling LaunchDarkly from 4 to 200 billion feature flags daily - LaunchDarkly Tech Stack | StackShare" class="css-nil">Redux: Scaling LaunchDarkly from 4 to 200 billion feature flags daily - LaunchDarkly Tech Stack | StackShare</a></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/heroku" class="css-1jltg37"><img src="https://img.stackshare.io/service/133/thumb_retina_3wgIDj3j.png" alt="Heroku logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/heroku" class="css-1hhgtx3">Heroku</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">23.3K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">18.8K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">3.2K</div></div></div></div><div class="css-q4ncy">Build, deliver, monitor and scale web apps and APIs with a trail blazing developer experience.</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>23.3K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>18.8K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>3.2K</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Deploy to Heroku from CircleCI</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->HEROKU</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">705</span></div></div><span class="css-rsz8c">Easy deployment</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">459</span></div></div><span class="css-rsz8c">Free for side projects</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">374</span></div></div><span class="css-rsz8c">Huge time-saver</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">348</span></div></div><span class="css-rsz8c">Simple scaling</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">261</span></div></div><span class="css-rsz8c">Low devops skills required</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">190</span></div></div><span class="css-rsz8c">Easy setup</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">174</span></div></div><span class="css-rsz8c">Add-ons for almost everything</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">153</span></div></div><span class="css-rsz8c">Beginner friendly</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">150</span></div></div><span class="css-rsz8c">Better for startups</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">133</span></div></div><span class="css-rsz8c">Low learning curve</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">48</span></div></div><span class="css-rsz8c">Postgres hosting</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">41</span></div></div><span class="css-rsz8c">Easy to add collaborators</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">30</span></div></div><span class="css-rsz8c">Faster development</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">24</span></div></div><span class="css-rsz8c">Awesome documentation</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">19</span></div></div><span class="css-rsz8c">Simple rollback</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">19</span></div></div><span class="css-rsz8c">Focus on product, not deployment</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">15</span></div></div><span class="css-rsz8c">Natural companion for rails development</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">15</span></div></div><span class="css-rsz8c">Easy integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">12</span></div></div><span class="css-rsz8c">Great customer support</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">GitHub integration</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Painless &amp; well documented</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">No-ops</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">I love that they make it free to launch a side project</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Free</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Great UI</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Just works</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">PostgreSQL forking and following</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">MySQL extension</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Security</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">Able to host stuff good like Discord Bot</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">0</span></div></div><span class="css-rsz8c">Sec</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->HEROKU</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">26</span></div></div><span class="css-rsz8c">Super expensive</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">8</span></div></div><span class="css-rsz8c">Not a whole lot of flexibility</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Storage</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">No usable MySQL option</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Low performance on free tier</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">1</span></div></div><span class="css-rsz8c">24/7 support is $1,000 per month</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/heroku-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/133/thumb_retina_3wgIDj3j.png" alt="Heroku logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Heroku vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Heroku posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Russel Werner</div></div><div class="css-ds0hbm">Lead Engineer<!-- --> at StackShare<!-- --> · <a href="/ruswerner/decisions/101179192780777665" class="css-nil"><time>Dec 3, 2018</time> <!-- -->| 32 upvotes · 1.7M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/react" class="css-1pwtf47"><span title="React" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1020/OYIaJ1KK.png" alt="React" class="css-1rz3855"/></span><span class="css-i6njnm">React</span></a><a href="/glamorous" class="css-1pwtf47"><span title="Glamorous" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/9149/full.png" alt="Glamorous" class="css-1rz3855"/></span><span class="css-i6njnm">Glamorous</span></a><a href="/apollo" class="css-1pwtf47"><span title="Apollo" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5508/CyUH653y.png" alt="Apollo" class="css-1rz3855"/></span><span class="css-i6njnm">Apollo</span></a><a href="/nodejs" class="css-1pwtf47"><span title="Node.js" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png" alt="Node.js" class="css-1rz3855"/></span><span class="css-i6njnm">Node.js</span></a><a href="/rails" class="css-1pwtf47"><span title="Rails" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/990/x57_Lorv.png" alt="Rails" class="css-1rz3855"/></span><span class="css-i6njnm">Rails</span></a><a href="/heroku" class="css-1pwtf47"><span title="Heroku" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/133/3wgIDj3j.png" alt="Heroku" class="css-1rz3855"/></span><span class="css-i6njnm">Heroku</span></a><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><a href="/amazon-s3" class="css-1pwtf47"><span title="Amazon S3" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/25/amazon-s3.png" alt="Amazon S3" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon S3</span></a><a href="/amazon-cloudfront" class="css-1pwtf47"><span title="Amazon CloudFront" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/13/amazon-cloudfront.png" alt="Amazon CloudFront" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon CloudFront</span></a><a href="/webpack" class="css-1pwtf47"><span title="Webpack" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1682/IMG_4636.PNG" alt="Webpack" class="css-1rz3855"/></span><span class="css-i6njnm">Webpack</span></a><a href="/circleci" class="css-1pwtf47"><span title="CircleCI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/190/CvqrSSFs_400x400.jpg" alt="CircleCI" class="css-1rz3855"/></span><span class="css-i6njnm">CircleCI</span></a><a href="/redis" class="css-1pwtf47"><span title="Redis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-1rz3855"/></span><span class="css-i6njnm">Redis</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/stackshare" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">StackShare</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>StackShare Feed is built entirely with <span class="tool">React</span>, <span class="tool">Glamorous</span>, and <span class="tool">Apollo</span>. One of our objectives with the public launch of the Feed was to enable a Server-side rendered (SSR) experience for our organic search traffic. When you visit the StackShare Feed, and you aren't logged in, you are delivered the Trending feed experience. We use an in-house <span class="tool">Node.js</span> rendering microservice to generate this HTML. This microservice needs to run and serve requests independent of our <span class="tool">Rails</span> web app. Up until recently, we had a mono-repo with our Rails and React code living happily together and all served from the same web process. In order to deploy our SSR app into a <span class="tool">Heroku</span> environment, we needed to split out our front-end application into a separate repo in <span class="tool">GitHub</span>. The driving factor in this decision was mostly due to limitations imposed by <span class="tool">Heroku</span> specifically with how processes can't communicate with each other. A new SSR app was created in Heroku and linked directly to the frontend repo so it stays in-sync with changes. </p> <p>Related to this, we need a way to "deploy" our frontend changes to various server environments without building &amp; releasing the entire Ruby application. We built a hybrid <span class="tool">Amazon S3</span> <span class="tool">Amazon CloudFront</span> solution to host our <span class="tool">Webpack</span> bundles. A new <span class="tool">CircleCI</span> script builds the bundles and uploads them to S3. The final step in our rollout is to update some keys in <span class="tool">Redis</span> so our Rails app knows which bundles to serve. The result of these efforts were significant. Our frontend team now moves independently of our backend team, our build &amp; release process takes only a few minutes, we are now using an edge CDN to serve JS assets, and we have pre-rendered React pages!</p> <p><span class="topic">#StackDecisionsLaunch</span> <span class="topic">#SSR</span> <span class="topic">#Microservices</span> <span class="topic">#FrontEndRepoSplit</span> </p></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Simon Reymann</div></div><div class="css-ds0hbm">Senior Fullstack Developer<!-- --> at QUANTUSflow Software GmbH<!-- --> · <a href="/zimoony/decisions/104069607668616391" class="css-nil"><time>Apr 27, 2020</time> <!-- -->| 29 upvotes · 5.1M views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/openssl" class="css-1pwtf47"><span title="OpenSSL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3091/preview.png" alt="OpenSSL" class="css-1rz3855"/></span><span class="css-i6njnm">OpenSSL</span></a><a href="/sslmate" class="css-1pwtf47"><span title="SSLMate" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2752/i7GmJlTT.png" alt="SSLMate" class="css-1rz3855"/></span><span class="css-i6njnm">SSLMate</span></a><a href="/nginx" class="css-1pwtf47"><span title="NGINX" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1052/YMxUfyWf.png" alt="NGINX" class="css-1rz3855"/></span><span class="css-i6njnm">NGINX</span></a><a href="/docker-swarm" class="css-1pwtf47"><span title="Docker Swarm" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3177/preview.png" alt="Docker Swarm" class="css-1rz3855"/></span><span class="css-i6njnm">Docker Swarm</span></a><a href="/redis" class="css-1pwtf47"><span title="Redis" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png" alt="Redis" class="css-1rz3855"/></span><span class="css-i6njnm">Redis</span></a><a href="/postgresql" class="css-1pwtf47"><span title="PostgreSQL" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1028/ASOhU5xJ.png" alt="PostgreSQL" class="css-1rz3855"/></span><span class="css-i6njnm">PostgreSQL</span></a><a href="/amazon-s3" class="css-1pwtf47"><span title="Amazon S3" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/25/amazon-s3.png" alt="Amazon S3" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon S3</span></a><a href="/amazon-ec2" class="css-1pwtf47"><span title="Amazon EC2" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/18/amazon-ec2.png" alt="Amazon EC2" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon EC2</span></a><a href="/heroku" class="css-1pwtf47"><span title="Heroku" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/133/3wgIDj3j.png" alt="Heroku" class="css-1rz3855"/></span><span class="css-i6njnm">Heroku</span></a><a href="/kubernetes" class="css-1pwtf47"><span title="Kubernetes" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1885/21_d3cvM.png" alt="Kubernetes" class="css-1rz3855"/></span><span class="css-i6njnm">Kubernetes</span></a><a href="/virtualbox" class="css-1pwtf47"><span title="VirtualBox" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/774/vbox_94px.png" alt="VirtualBox" class="css-1rz3855"/></span><span class="css-i6njnm">VirtualBox</span></a><a href="/docker-compose" class="css-1pwtf47"><span title="Docker Compose" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3136/docker-compose.png" alt="Docker Compose" class="css-1rz3855"/></span><span class="css-i6njnm">Docker Compose</span></a><a href="/docker" class="css-1pwtf47"><span title="Docker" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/586/n4u37v9t_400x400.png" alt="Docker" class="css-1rz3855"/></span><span class="css-i6njnm">Docker</span></a><a href="/sonarqube" class="css-1pwtf47"><span title="SonarQube" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/2638/zIVhxKyn_400x400.png" alt="SonarQube" class="css-1rz3855"/></span><span class="css-i6njnm">SonarQube</span></a><a href="/eslint" class="css-1pwtf47"><span title="ESLint" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/3337/Q4L7Jncy.jpg" alt="ESLint" class="css-1rz3855"/></span><span class="css-i6njnm">ESLint</span></a><a href="/tslint" class="css-1pwtf47"><span title="TSLint" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5561/303157.png" alt="TSLint" class="css-1rz3855"/></span><span class="css-i6njnm">TSLint</span></a><a href="/prettier" class="css-1pwtf47"><span title="Prettier" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/7035/default_66f265943abed56bcdbfca1c866a4261b1fbb063.jpg" alt="Prettier" class="css-1rz3855"/></span><span class="css-i6njnm">Prettier</span></a><a href="/circleci" class="css-1pwtf47"><span title="CircleCI" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/190/CvqrSSFs_400x400.jpg" alt="CircleCI" class="css-1rz3855"/></span><span class="css-i6njnm">CircleCI</span></a><a href="/visual-studio-code" class="css-1pwtf47"><span title="Visual Studio Code" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4202/Visual_Studio_Code_logo.png" alt="Visual Studio Code" class="css-1rz3855"/></span><span class="css-i6njnm">Visual Studio Code</span></a><a href="/sourcetree" class="css-1pwtf47"><span title="SourceTree" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1599/sourcetree.png" alt="SourceTree" class="css-1rz3855"/></span><span class="css-i6njnm">SourceTree</span></a><a href="/git" class="css-1pwtf47"><span title="Git" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1046/git.png" alt="Git" class="css-1rz3855"/></span><span class="css-i6njnm">Git</span></a><a href="/markdown" class="css-1pwtf47"><span title="Markdown" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1147/markdown.png" alt="Markdown" class="css-1rz3855"/></span><span class="css-i6njnm">Markdown</span></a><a href="/github-pages" class="css-1pwtf47"><span title="GitHub Pages" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/683/default_5eeb660db1239eeb3f1c1f6187f2abf0f3a0500d.png" alt="GitHub Pages" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub Pages</span></a><a href="/github" class="css-1pwtf47"><span title="GitHub" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/27/default_869c34d29acc794d60ecdd5d2b5bfc042a80a4ec.jpg" alt="GitHub" class="css-1rz3855"/></span><span class="css-i6njnm">GitHub</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/quantusflow-software-gmbh" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">QUANTUSflow Software GmbH</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>Our whole DevOps stack consists of the following tools:</p> <ul> <li><span class="tool">GitHub</span> (incl. <span class="tool">GitHub Pages</span>/<span class="tool">Markdown</span> for Documentation, GettingStarted and HowTo's) for collaborative review and code management tool</li> <li>Respectively <span class="tool">Git</span> as revision control system</li> <li><span class="tool">SourceTree</span> as <span class="tool">Git</span> GUI</li> <li><span class="tool">Visual Studio Code</span> as IDE</li> <li><span class="tool">CircleCI</span> for continuous integration (automatize development process)</li> <li><span class="tool">Prettier</span> / <span class="tool">TSLint</span> / <span class="tool">ESLint</span> as code linter</li> <li><span class="tool">SonarQube</span> as quality gate</li> <li><span class="tool">Docker</span> as container management (incl. <span class="tool">Docker Compose</span> for multi-container application management)</li> <li><span class="tool">VirtualBox</span> for operating system simulation tests</li> <li><span class="tool">Kubernetes</span> as cluster management for docker containers</li> <li><span class="tool">Heroku</span> for deploying in test environments</li> <li><span class="tool">nginx</span> as web server (preferably used as facade server in production environment)</li> <li><span class="tool">SSLMate</span> (using <span class="tool">OpenSSL</span>) for certificate management</li> <li><span class="tool">Amazon EC2</span> (incl. <span class="tool">Amazon S3</span>) for deploying in stage (production-like) and production environments</li> <li><span class="tool">PostgreSQL</span> as preferred database system</li> <li><span class="tool">Redis</span> as preferred in-memory database/store (great for caching)</li> </ul> <p>The main reason we have chosen <span class="tool">Kubernetes</span> over <span class="tool">Docker Swarm</span> is related to the following artifacts:</p> <ul> <li> <strong>Key features:</strong> Easy and flexible installation, Clear dashboard, Great scaling operations, Monitoring is an integral part, Great load balancing concepts, Monitors the condition and ensures compensation in the event of failure.</li> <li> <strong>Applications:</strong> An application can be deployed using a combination of pods, deployments, and services (or micro-services).</li> <li> <strong>Functionality:</strong> Kubernetes as a complex installation and setup process, but it not as limited as Docker Swarm.</li> <li> <strong>Monitoring:</strong> It supports multiple versions of logging and monitoring when the services are deployed within the cluster (Elasticsearch/Kibana (ELK), Heapster/Grafana, Sysdig cloud integration).</li> <li> <strong>Scalability:</strong> All-in-one framework for distributed systems.</li> <li> <strong>Other Benefits:</strong> Kubernetes is backed by the Cloud Native Computing Foundation (CNCF), huge community among container orchestration tools, it is an open source and modular tool that works with any OS.</li> </ul></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-8qpfeu"><div class="css-kb8or3"><div class="css-1d3wilq"><div class="css-ljm4wn"><div class="css-mwikcm"><a href="/google-app-engine" class="css-1jltg37"><img src="https://img.stackshare.io/service/139/thumb_retina_s01TMTGn.png" alt="Google App Engine logo" class="css-1489hth"/></a></div><div class="css-8wh4b7"><h2 class="css-pltn6z"><a href="/google-app-engine" class="css-1hhgtx3">Google App Engine</a></h2><div class="css-rpzmwi"><div class="css-12alag6"><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path fill-rule="evenodd" d="M20.467 21.867a2.415 2.415 0 0 1-2.318-1.74h-2.192l-.012.008-2.615-4.499h-1.598a2.415 2.415 0 1 1 0-1.35h1.641l-.058-.034 2.63-4.526.022.013h2.172a2.415 2.415 0 1 1 0 1.35h-1.424l-2.23 3.838-.002.003.001.004 2.234 3.843h1.431a2.415 2.415 0 1 1 2.318 3.09zm-.01-10.184a1.27 1.27 0 1 0-1.244-1.515v.492a1.27 1.27 0 0 0 1.244 1.023zm-11.043 2.01a1.268 1.268 0 1 0 0 2.537 1.268 1.268 0 0 0 0-2.537zm11.053 4.491a1.27 1.27 0 0 0-1.244 1.022v.493a1.27 1.27 0 0 0 1.244 1.022 1.27 1.27 0 0 0 0-2.537z"></path></g></svg></div><div class="css-1qckosq">8.9K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg class="css-1a4uubp" xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"><path fill="#A09F9F" fill-rule="evenodd" stroke="#999" stroke-width=".2" d="M14.432 12.715l2.348-2.746a.415.415 0 0 1 .607-.038.47.47 0 0 1 .028.646l-2.64 3.09a.419.419 0 0 1-.3.15h-.014a.414.414 0 0 1-.3-.127l-1.498-1.516a.466.466 0 0 1-.014-.637.413.413 0 0 1 .606-.015l1.177 1.193zm-3.165-.868a3.749 3.749 0 0 0 3.744 3.745 3.749 3.749 0 0 0 3.744-3.745 3.749 3.749 0 0 0-3.744-3.745 3.749 3.749 0 0 0-3.744 3.745zm2.001-4.195a4.523 4.523 0 0 1 1.743-.35 4.55 4.55 0 0 1 4.545 4.545 4.55 4.55 0 0 1-4.545 4.545 4.55 4.55 0 0 1-4.545-4.545 4.53 4.53 0 0 1 1.91-3.688c-.026-.013-.045-.029-.045-.054V5.837c0-.159.08-.308.207-.395a.588.588 0 0 0 .254-.487V2.6c0-.907-.721-1.64-1.602-1.64h-.494c-.886 0-1.603.738-1.603 1.64v2.355c0 .192.095.376.255.487a.47.47 0 0 1 .207.395v2.268a.588.588 0 0 1-.32.526c-.288.145-1.791.921-3.181 2.089a.66.66 0 0 0-.235.511v1.612a.456.456 0 0 1-.458.473.47.47 0 0 1-.466-.478v-1.612c0-.487.207-.94.575-1.249.153-.129.307-.253.461-.373V7.21a.5.5 0 0 1 .214-.41.352.352 0 0 0 .156-.296V4.618c0-.666-.525-1.206-1.172-1.206h-.394c-.646 0-1.166.54-1.166 1.201v1.886c0 .121.058.231.155.296.136.09.214.245.214.41v1.817c0 .225-.121.42-.316.52a13.83 13.83 0 0 0-2.513 1.662.421.421 0 0 0-.146.325v1.291a.487.487 0 0 1-.481.496A.487.487 0 0 1 0 12.82v-1.291c0-.425.18-.821.501-1.091.967-.821 2.003-1.411 2.479-1.667V7.435a1.368 1.368 0 0 1-.369-.936V4.613c0-1.211.958-2.192 2.129-2.192h.394c1.177 0 2.129.986 2.129 2.192v1.886c0 .356-.136.686-.369.936V8.91a19.344 19.344 0 0 1 1.733-1.037V6.059a1.557 1.557 0 0 1-.462-1.109V2.595C8.165 1.162 9.305 0 10.7 0h.495c1.399 0 2.535 1.167 2.535 2.595V4.95c0 .424-.17.82-.462 1.109v1.593z"></path></svg></div><div class="css-1qckosq">7K</div></div><div class="css-5f7045"><div class="css-3k44bn"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><path fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2" d="M23.42 15.403c.855-.864.59-2.612-.892-2.612l-3.903.002c.148-.837.363-2.226.354-2.357-.082-1.242-.863-2.754-.896-2.815-.143-.27-.862-.634-1.586-.478-.935.203-1.03.808-1.027.975 0 0 .04 1.655.044 2.097-.447.996-1.99 3.613-2.457 3.815a.706.706 0 0 0-.37-.105H7.755A.76.76 0 0 0 7 14.69v6.908a.72.72 0 0 0 .71.665h4.43a.718.718 0 0 0 .711-.722v-.23s.165-.012.24.037c.285.183.636.414 1.095.414h6.61c2.47 0 2.205-2.224 1.98-2.527.417-.46.675-1.273.323-1.915.27-.29.746-1.09.32-1.917zM11.986 21.54H7.71v-6.894h4.278v6.894zm10.28-6.196l-.041.17c1.138.329.532 1.659-.284 1.745l-.04.17c1.091.282.57 1.652-.285 1.745l-.04.17c.891.149.675 1.691-.675 1.691l-6.722.003c-.475 0-.907-.549-1.257-.549h-.304v-5.306c.38-.239.846-.549 1.106-.772.49-.424 2.497-3.71 2.497-4.122 0-.412-.045-2.191-.045-2.191s.394-.514 1.272-.14c0 0 .74 1.406.815 2.526 0 0-.333 2.307-.512 3.03h4.66c1.146.002.927 1.659-.146 1.83z"></path></svg></div><div class="css-1qckosq">609</div></div></div></div><div class="css-q4ncy">Build web applications on the same scalable systems that power Google applications</div><div class="css-1mj0hbk"><div class="css-1drwozb"><div class="css-gbti5j"><label>Stacks</label><span>8.9K</span></div><div class="css-1ahj942"></div><div class="css-1an0suy"><label>Followers</label><span>7K</span><div>+ 1</div></div><div class="css-1ahj942"></div><div class="css-gbti5j"><label>Votes</label><span>609</span></div></div></div></div></div><div class="css-1dnnpo5"><div class="css-ubpjqb"><button data-testid="follow" class="css-14pk3xx"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> <!-- -->Follow</button><button data-testid="iUseThis" class="css-1o4togz"><svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="1.5"><path d="M5.5 0v11M0 5.5h11" fill="none" stroke="#fff"></path></svg> I use this</button></div><div class="css-gpa5xw"><div class="css-1ob9em9"><button class="css-1mpii3w">Build APIs, implement app logic on MongoDB Atlas</button></div></div></div></div><div class="css-1erkkk4"><div class="css-a55l86"><div class="css-usifiy">PROS OF <!-- -->GOOGLE APP ENGINE</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">144</span></div></div><span class="css-rsz8c">Easy to deploy</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">106</span></div></div><span class="css-rsz8c">Auto scaling</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">80</span></div></div><span class="css-rsz8c">Good free plan</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">62</span></div></div><span class="css-rsz8c">Easy management</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">56</span></div></div><span class="css-rsz8c">Scalability</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">35</span></div></div><span class="css-rsz8c">Low cost</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">32</span></div></div><span class="css-rsz8c">Comprehensive set of features</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">28</span></div></div><span class="css-rsz8c">All services in one place</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">22</span></div></div><span class="css-rsz8c">Simple scaling</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">19</span></div></div><span class="css-rsz8c">Quick and reliable cloud servers</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">6</span></div></div><span class="css-rsz8c">Granular Billing</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">5</span></div></div><span class="css-rsz8c">Easy to develop and unit test</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">4</span></div></div><span class="css-rsz8c">Monitoring gives comprehensive set of key indicators</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Create APIs quickly with cloud endpoints</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">3</span></div></div><span class="css-rsz8c">Really easy to quickly bring up a full stack</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">No Ops</span></div></li><li class="css-6nrkpz"><div class="css-1mlbi0l"><div class="css-1cda8k4"><div class="css-2an9kq"><svg style="margin-top:3px;margin-bottom:3px" xmlns="http://www.w3.org/2000/svg" width="10" height="8" viewBox="0 0 10 8"><path fill="#565656" fill-rule="evenodd" d="M5 0l5 8H0z"></path></svg><span class="css-5x5cr6">2</span></div></div><span class="css-rsz8c">Mostly up</span></div></li></ul></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">CONS OF <!-- -->GOOGLE APP ENGINE</div><div class="css-6t66tf"><div class="css-nil"><div class="css-1v4wqws"><div class="css-nil"><div class="css-1x4ysa3"><h2 hidden="" class="css-nil"></h2><ul class="css-7c9av6"></ul><div class="css-16s8o6z">Be the first to leave a con</div></div></div></div></div></div></div><div class="css-a55l86"><div class="css-usifiy">COMPARE</div><div class="css-6t66tf"><div class="css-1bn5mmw"><a href="/stackups/google-app-engine-vs-cloudbees" class="css-1dnwvu3"><div class="css-1v4bhi8"><img src="https://img.stackshare.io/service/139/thumb_retina_s01TMTGn.png" alt="Google App Engine logo" class="css-6wyd29"/><div class="css-19dpmz">VS</div><img src="https://img.stackshare.io/service/136/thumb_retina_o-p1F0I9_400x400.jpg" alt="CloudBees logo" class="css-6wyd29"/></div><div class="css-v6oua5"><div class="css-16r6zz5"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30"><g fill="#A1A1A1" stroke="#A1A1A1" stroke-width=".2"><path d="M13.626 18.015l.511-.81a.405.405 0 0 0-.136-.565.422.422 0 0 0-.576.133l-.51.81c-.927 1.469-2.25 2.312-3.632 2.312H7.416a.412.412 0 1 0 0 .823h1.87c1.68-.007 3.26-.99 4.34-2.703zm9.944-7.882l-2.023-1.99a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.291h-1.939c-1.676 0-3.26.984-4.34 2.697l-.314.498a.405.405 0 0 0 .137.566.42.42 0 0 0 .572-.134l.313-.499c.927-1.468 2.249-2.308 3.632-2.308h1.936l-1.315 1.291a.403.403 0 0 0 0 .579c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.406.406 0 0 0-.003-.58zm-.862.34v-.04l.02.02-.02.02z"></path><path d="M20.954 22.581c.082.08.188.12.297.12a.42.42 0 0 0 .296-.12l2.027-1.99a.403.403 0 0 0 0-.58l-2.027-1.986a.42.42 0 0 0-.59 0 .403.403 0 0 0 0 .578l1.316 1.292h-1.877c-1.38 0-2.706-.843-3.632-2.312L13.69 12.71c-1.08-1.716-2.664-2.697-4.34-2.697H7.416a.412.412 0 1 0 0 .823h1.931c1.38 0 2.705.843 3.632 2.309l3.073 4.874c1.08 1.716 2.664 2.7 4.34 2.7h1.877l-1.315 1.291a.4.4 0 0 0 0 .572zm1.754-2.265l.02.02-.02.02v-.04z"></path></g></svg></div><div>Compare Google App Engine vs CloudBees</div></div></a></div></div></div></div></div><div class="css-f2odf3"><div class="css-1m02by6"><h2>related Google App Engine posts</h2></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Nick Rockwell</div></div><div class="css-ds0hbm">SVP, Engineering<!-- --> at Fastly<!-- --> · <a href="/nsrockwell/decisions/101031322437593505" class="css-nil"><time>Sep 24, 2018</time> <!-- -->| 11 upvotes · 348.1K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/amazon-ec2" class="css-1pwtf47"><span title="Amazon EC2" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/18/amazon-ec2.png" alt="Amazon EC2" class="css-1rz3855"/></span><span class="css-i6njnm">Amazon EC2</span></a><a href="/google-app-engine" class="css-1pwtf47"><span title="Google App Engine" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/139/s01TMTGn.png" alt="Google App Engine" class="css-1rz3855"/></span><span class="css-i6njnm">Google App Engine</span></a><a href="/google-kubernetes-engine" class="css-1pwtf47"><span title="Google Kubernetes Engine" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1587/s01TMTGn.png" alt="Google Kubernetes Engine" class="css-1rz3855"/></span><span class="css-i6njnm">Google Kubernetes Engine</span></a><a href="/kubernetes" class="css-1pwtf47"><span title="Kubernetes" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1885/21_d3cvM.png" alt="Kubernetes" class="css-1rz3855"/></span><span class="css-i6njnm">Kubernetes</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/the-new-york-times" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">The New York Times</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>So, the shift from <span class="tool">Amazon EC2</span> to <span class="tool">Google App Engine</span> and generally <span class="topic">#AWS</span> to <span class="topic">#GCP</span> was a long decision and in the end, it's one that we've taken with eyes open and that we reserve the right to modify at any time. And to be clear, we continue to do a lot of stuff with AWS. But, by default, the content of the decision was, for our consumer-facing products, we're going to use GCP first. And if there's some reason why we don't think that's going to work out great, then we'll happily use AWS. In practice, that hasn't really happened. We've been able to meet almost 100% of our needs in GCP. </p> <p>So it's basically mostly <span class="tool">Google Kubernetes Engine</span> , we're mostly running stuff on <span class="tool">Kubernetes</span> right now.</p> <p><span class="topic">#AWStoGCPmigration</span> <span class="topic">#cloudmigration</span> <span class="topic">#migration</span></p></div><div class="css-13nf4of"><svg class="css-xd3exe" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11"><g fill="#49A8F9" fill-rule="evenodd"><path d="M10.5 0h-4a.5.5 0 0 0 0 1h2.793L4.146 6.146a.5.5 0 1 0 .708.708L10 1.707V4.5a.5.5 0 0 0 1 0v-4a.5.5 0 0 0-.5-.5"></path><path d="M8.5 5a.5.5 0 0 0-.5.5V10H1V3h4.5a.5.5 0 0 0 0-1h-5a.5.5 0 0 0-.5.5v8a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-5a.5.5 0 0 0-.5-.5"></path></g></svg><a href="https://stackshare.io/posts/evolution-of-new-york-times-tech-stack" title="The Evolution of The New York Times Tech Stack | StackShare" class="css-nil">The Evolution of The New York Times Tech Stack | StackShare</a></div></div></div><a class="css-1srb7t4">See more</a></div><div class="css-uw1ldh"><div class="css-4gnhqq"><div class="css-xkasvz"><div class="css-atv6j6"><div class="css-1m8tyev"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div></div></div><div class="css-1vf0ygt"><div class="css-utnqcw"><div>Aliadoc Team</div></div><div class="css-ds0hbm"> at aliadoc.com<!-- --> · <a href="/aliadocWeb/decisions/101848826192347222" class="css-nil"><time>Apr 1, 2019</time> <!-- -->| 5 upvotes · 712.1K views</a></div></div></div></div><div class="css-nil"><div class="css-dg4ww9"><svg xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"><g fill="none" fill-rule="evenodd"><path fill="#068DFE" fill-rule="nonzero" d="M20.918 19.017l-1.442-4.195a10.3 10.3 0 0 0 1.062-4.537 10.208 10.208 0 0 0-2.949-7.207A10.199 10.199 0 0 0 10.436 0a10.23 10.23 0 0 0-7.428 3.006A10.228 10.228 0 0 0 0 10.437a10.199 10.199 0 0 0 3.077 7.153 10.207 10.207 0 0 0 7.191 2.95h.016a10.3 10.3 0 0 0 4.537-1.063l4.195 1.442a1.485 1.485 0 0 0 1.543-.357c.408-.408.545-.999.358-1.544z"></path><rect width="7" height="1.8" x="6" y="5" fill="#FFF" rx=".9"></rect><rect width="10" height="1.8" x="6" y="9" fill="#FFF" rx=".9"></rect><rect width="7" height="1.8" x="6" y="13" fill="#FFF" rx=".9"></rect></g></svg><div class="css-z9ms26">Shared insights</div><div class="css-6uh2e7">on</div><a href="/react" class="css-1pwtf47"><span title="React" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/1020/OYIaJ1KK.png" alt="React" class="css-1rz3855"/></span><span class="css-i6njnm">React</span></a><a href="/create-react-app" class="css-1pwtf47"><span title="Create React App" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5537/oi64YzXY.jpg" alt="Create React App" class="css-1rz3855"/></span><span class="css-i6njnm">Create React App</span></a><a href="/cloudflare" class="css-1pwtf47"><span title="CloudFlare" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/15/twitter-profile-400x400.png" alt="CloudFlare" class="css-1rz3855"/></span><span class="css-i6njnm">CloudFlare</span></a><a href="/firebase" class="css-1pwtf47"><span title="Firebase" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/116/cZLxNFZS.jpg" alt="Firebase" class="css-1rz3855"/></span><span class="css-i6njnm">Firebase</span></a><a href="/cloud-functions-for-firebase" class="css-1pwtf47"><span title="Cloud Functions for Firebase" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/6673/cZLxNFZS.jpg" alt="Cloud Functions for Firebase" class="css-1rz3855"/></span><span class="css-i6njnm">Cloud Functions for Firebase</span></a><a href="/google-app-engine" class="css-1pwtf47"><span title="Google App Engine" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/139/s01TMTGn.png" alt="Google App Engine" class="css-1rz3855"/></span><span class="css-i6njnm">Google App Engine</span></a><a href="/google-cloud-storage" class="css-1pwtf47"><span title="Google Cloud Storage" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/694/Cloud_Storage.png" alt="Google Cloud Storage" class="css-1rz3855"/></span><span class="css-i6njnm">Google Cloud Storage</span></a><a href="/serverless" class="css-1pwtf47"><span title="Serverless" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/5095/serverless-logo.png" alt="Serverless" class="css-1rz3855"/></span><span class="css-i6njnm">Serverless</span></a><a href="/visual-studio-code" class="css-1pwtf47"><span title="Visual Studio Code" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/4202/Visual_Studio_Code_logo.png" alt="Visual Studio Code" class="css-1rz3855"/></span><span class="css-i6njnm">Visual Studio Code</span></a><a href="/bitbucket" class="css-1pwtf47"><span title="Bitbucket" class="css-t68yd0 service"><img src="https://img.stackshare.io/service/28/35O2KIRX_400x400.jpg" alt="Bitbucket" class="css-1rz3855"/></span><span class="css-i6njnm">Bitbucket</span></a><div class="css-6uh2e7">at</div><a itemscope="" itemType="http://schema.org/Organization" itemProp="url" href="/companies/aliadoc" target="_blank" class="css-1j2w1cg"><div class="lazyload-wrapper"><div class="lazyload-placeholder"></div></div><div itemProp="name" class="css-1b2ktnx">Aliadoc</div></a></div><div class="css-1dp4k20"><div class="css-ztg526"><p>In <span class="topic">#Aliadoc</span>, we're exploring the crowdfunding option to get traction before launch. We are building a SaaS platform for website design customization.</p> <p>For the Admin UI and website editor we use <span class="tool">React</span> and we're currently transitioning from a <span class="tool">Create React App</span> setup to a custom one because our needs have become more specific. We use <span class="tool">CloudFlare</span> as much as possible, it's a great service.</p> <p>For routing dynamic resources and proxy tasks to feed websites to the editor we leverage <span class="tool">CloudFlare</span> Workers for improved responsiveness. We use <span class="tool">Firebase</span> for our hosting needs and user authentication while also using several <span class="tool">Cloud Functions for Firebase</span> to interact with other services along with <span class="tool">Google App Engine</span> and <span class="tool">Google Cloud Storage</span>, but also the Real Time Database is on the radar for collaborative website editing.</p> <p>We generally hate configuration but honestly because of the stage of our project we lack resources for doing heavy sysops work. So we are basically just relying on <span class="tool">Serverless</span> technologies as much as we can to do all server side processing.</p> <p><span class="tool">Visual Studio Code</span> definitively makes programming a much easier and enjoyable task, we just love it. We combine it with <span class="tool">Bitbucket</span> for our source code control needs.</p></div></div></div><a class="css-1srb7t4">See more</a></div></div></div><div class="css-13u3lpy"><button class="css-1iqua1m">Sign up to see more</button></div></div></div></main><div class="css-69zjs9"><div class="css-8a04gk"><div class="css-1m38k02"><h2 class="css-162qu2y">Similar Tools</h2><a href="/jenkins/alternatives" title="Jenkins Alternatives" class="css-p797gu">Jenkins Alternatives</a><a href="/circleci/alternatives" title="CircleCI Alternatives" class="css-p797gu">CircleCI Alternatives</a><a href="/bamboo/alternatives" title="Bamboo Alternatives" class="css-p797gu">Bamboo Alternatives</a><a href="/azure-devops/alternatives" title="Azure DevOps Alternatives" class="css-p797gu">Azure DevOps Alternatives</a><a href="/gitlab/alternatives" title="GitLab Alternatives" class="css-p797gu">GitLab Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">New Tools</h2><a href="/amazon-vpc/alternatives" title="Amazon VPC Alternatives" class="css-p797gu">Amazon VPC Alternatives</a><a href="/pubnub/alternatives" title="PubNub Alternatives" class="css-p797gu">PubNub Alternatives</a><a href="/google-compute-engine/alternatives" title="Google Compute Engine Alternatives" class="css-p797gu">Google Compute Engine Alternatives</a><a href="/aws-codecatalyst/alternatives" title="Amazon CodeCatalyst Alternatives" class="css-p797gu">Amazon CodeCatalyst Alternatives</a><a href="/aws-application-composer/alternatives" title="AWS Application Composer Alternatives" class="css-p797gu">AWS Application Composer Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">Top Tools</h2><a href="/nginx/alternatives" title="NGINX Alternatives" class="css-p797gu">NGINX Alternatives</a><a href="/apache-http-server/alternatives" title="Apache HTTP Server Alternatives" class="css-p797gu">Apache HTTP Server Alternatives</a><a href="/amazon-ec2/alternatives" title="Amazon EC2 Alternatives" class="css-p797gu">Amazon EC2 Alternatives</a><a href="/firebase/alternatives" title="Firebase Alternatives" class="css-p797gu">Firebase Alternatives</a><a href="/heroku/alternatives" title="Heroku Alternatives" class="css-p797gu">Heroku Alternatives</a></div><div class="css-1m38k02"><h2 class="css-162qu2y">Trending Comparisons</h2><a href="/stackups/appfog-vs-cloudbees" title="AppFog vs CloudBees" class="css-p797gu">AppFog vs CloudBees</a><a href="/stackups/cloudbees-vs-red-hat-openshift" title="CloudBees vs Red Hat OpenShift" class="css-p797gu">CloudBees vs Red Hat OpenShift</a><a href="/stackups/cloudbees-vs-google-app-engine" title="CloudBees vs Google App Engine" class="css-p797gu">CloudBees vs Google App Engine</a><a href="/stackups/cloudbees-vs-engine-yard-cloud" title="CloudBees vs Engine Yard Cloud" class="css-p797gu">CloudBees vs Engine Yard Cloud</a><a href="/stackups/cloudbees-vs-heroku" title="CloudBees vs Heroku" class="css-p797gu">CloudBees vs Heroku</a></div></div></div></div></div> <script> renderComponent('ToolAlternatives','ToolAlternatives-react-component-355da1f3-ce3c-4127-80e0-4f2cae8975e1','ToolAlternatives-apollo-state-355da1f3-ce3c-4127-80e0-4f2cae8975e1','ToolAlternatives-glamor-355da1f3-ce3c-4127-80e0-4f2cae8975e1', 'apollo','{"route":"/cloudbees/alternatives","userId":null,"description":" Jenkins, CircleCI, Bamboo, Azure DevOps, and GitLab are the most popular alternatives and competitors to CloudBees. ","title":"Alternatives to CloudBees","featureFlags":{}}'); </script>
<script type="application/json" id="Footer-apollo-state-b887cc69-1029-4251-be72-f428c4a31686">{}</script> <!-- glamorIds: 21 --> <script type="application/json" id="Footer-glamor-b887cc69-1029-4251-be72-f428c4a31686">["1htug8r","1yodi52","iepywa","x5hg3h","u0iaox","9ilv8v","ts0y2j","cs546h","1fco1ts","11a2nsi","1npm75a","1gn11bn","1y302zr","11gxadc","1iqd2ec","lneilx","de1dx1","1h53588","12k57td","j1o656","zr18wh"]</script> <style>@-webkit-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-moz-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-o-keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@keyframes animation_1htug8r{to{transform:rotate(360deg);-webkit-transform:rotate(360deg);}}@-webkit-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-moz-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-o-keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@keyframes animation_1yodi52{0%{background-position:0 0;}100%{background-position:100em 0;}}@-webkit-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-moz-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-o-keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@keyframes animation_iepywa{0%, 100%{opacity:0;}50%{opacity:1;}}@-webkit-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-moz-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-o-keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@keyframes animation_x5hg3h{100%{stroke-dashoffset:0;}}@-webkit-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-moz-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-o-keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@keyframes animation_u0iaox{0%, 100%{transform:none;-webkit-transform:none;}50%{transform:scale3d(1.1, 1.1, 1);-webkit-transform:scale3d(1.1, 1.1, 1);}}@-webkit-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-moz-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@-o-keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}@keyframes animation_9ilv8v{100%{box-shadow:inset 0px 0px 0px 30px #068dfe;}}.css-ts0y2j,[data-css-ts0y2j]{font-family:Open Sans, Helvetica Neue, Helvetica, Arial, sans;font-weight:400;font-size:13px;line-height:1.4;letter-spacing:normal;-webkit-font-smoothing:antialiased;background:#333;display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;justify-content:center;align-items:center;padding:50px 0 80px;-webkit-box-pack:center;-webkit-justify-content:center;-webkit-box-align:center;-webkit-align-items:center;}@media only screen and (max-width: 768px){.css-ts0y2j,[data-css-ts0y2j]{padding:0 0 40px;}}.css-cs546h,[data-css-cs546h]{max-width:1220px;}@media only screen and (max-width: 992px){.css-cs546h,[data-css-cs546h]{width:700px;}}@media only screen and (min-width: 993px){.css-cs546h,[data-css-cs546h]{width:955px;}}@media only screen and (min-width: 1200px){.css-cs546h,[data-css-cs546h]{width:1220px;}}.css-1fco1ts,[data-css-1fco1ts]{display:grid;grid-template-columns:repeat(4, 1fr);justify-items:center;column-gap:3%;-ms-grid-template-columns:repeat(4, 1fr);-webkit-column-gap:3%;-moz-column-gap:3%;}@media only screen and (max-width: 768px){.css-1fco1ts,[data-css-1fco1ts]{grid-template-columns:1fr;text-align:center;-ms-grid-template-columns:1fr;}}.css-11a2nsi,[data-css-11a2nsi]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;align-items:center;text-align:left;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-webkit-box-align:center;-webkit-align-items:center;}.css-1npm75a,[data-css-1npm75a]{display:-webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex;flex-direction:column;color:#fff;font-size:14px;line-height:1.7;letter-spacing:0.3px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;}.css-1npm75a a,[data-css-1npm75a] a{color:#fff;text-decoration:none;}.css-1npm75a a:visited,[data-css-1npm75a] a:visited{color:#fff;}.css-1npm75a a:hover,[data-css-1npm75a] a:hover{color:#068dfe;}.css-1npm75a a:hover span,[data-css-1npm75a] a:hover span{color:#fff;}.css-1npm75a a:active span,[data-css-1npm75a] a:active span{color:#fff;}@media only screen and (max-width: 768px){.css-1npm75a,[data-css-1npm75a]{align-items:center;width:95%;font-size:16px;line-height:2;-webkit-box-align:center;-webkit-align-items:center;}}.css-1gn11bn,[data-css-1gn11bn]{color:#fff;font-weight:600;font-size:20px;letter-spacing:0.38px;}@media only screen and (max-width: 768px){.css-1gn11bn,[data-css-1gn11bn]{margin-top:36px;margin-bottom:24px;}}.css-1y302zr,[data-css-1y302zr]{position:relative;}@media only screen and (min-width: 769px){.css-1y302zr,[data-css-1y302zr]{margin-right:auto;}}.css-11gxadc,[data-css-11gxadc]{padding:0;margin:8px 0;}.css-11gxadc li,[data-css-11gxadc] li{display:inline-block;margin:0 5px;}@media only screen and (min-width: 769px){.css-11gxadc li:first-child,[data-css-11gxadc] li:first-child{margin-left:0;}}@media only screen and (max-width: 768px){.css-11gxadc,[data-css-11gxadc]{margin:0 0 80px;}}.css-1iqd2ec svg:hover path,[data-css-1iqd2ec] svg:hover path{fill:#939393;}.css-lneilx,[data-css-lneilx]{margin-top:15px;line-height:100%;}.css-lneilx svg,[data-css-lneilx] svg{max-width:135px;}.css-lneilx svg g,[data-css-lneilx] svg g{fill:#fff;}@media only screen and (max-width: 768px){.css-lneilx,[data-css-lneilx]{margin-top:0;}}@media only screen and (max-width: 480px){.css-lneilx,[data-css-lneilx]{margin-top:0;}}.css-de1dx1,[data-css-de1dx1]{color:#fff;}.css-de1dx1 a,[data-css-de1dx1] a, .css-de1dx1 span, [data-css-de1dx1] span{display:inline-block;margin-right:8px;font-size:13px;letter-spacing:0.24px;}.css-de1dx1 a:last-child,[data-css-de1dx1] a:last-child{margin-right:0;}@media only screen and (max-width: 768px){.css-de1dx1,[data-css-de1dx1]{line-height:1.5;margin-top:14px;margin-bottom:11px;}}.css-1h53588,[data-css-1h53588]{margin:18px 0;}@media only screen and (max-width: 992px){.css-1h53588,[data-css-1h53588]{text-align:center;}}@media only screen and (max-width: 480px){.css-1h53588,[data-css-1h53588]{text-align:center;}}.css-12k57td,[data-css-12k57td]{font-family:Cerebri Sans Pro;margin-top:0;font-style:normal;font-weight:400;font-size:14px;line-height:25px;letter-spacing:0.375px;color:#fff;}.css-j1o656,[data-css-j1o656]{width:53px;height:53px;}.css-zr18wh,[data-css-zr18wh]{color:#c2c2c2;font-size:10px;margin-top:5px;}.css-zr18wh div,[data-css-zr18wh] div{white-space:nowrap;}@media only screen and (max-width: 768px){.css-zr18wh,[data-css-zr18wh]{font-size:13px;line-height:1.5;text-align:center;}}</style> <div id="Footer-react-component-b887cc69-1029-4251-be72-f428c4a31686" data-ssr="true" ><footer class="css-ts0y2j"><div class="css-cs546h"><div class="css-1fco1ts"><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Tools &amp; Services</h3><a href="/stackups/trending" title="Compare Tools">Compare Tools</a><a href="/search" title="Search Tools &amp; Services">Search</a><a href="/alternatives" title="Browse Tools &amp; Services">Browse Tool Alternatives</a><a href="/categories" title="Technology Tools &amp; Services">Browse Tool Categories</a><a href="/submit" title="Submit a Tool">Submit A Tool</a><a href="/admin/approval-tool" title="Approve Tools">Approve Tools</a></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Company</h3><a href="/featured-posts" title="Featured Posts">Blog</a><a href="/api" title="API">API</a><a href="/jobs" title="Jobs">Job Search</a><a href="/careers" title="Careers at StackShare" class="css-1y302zr">Careers</a><a href="/stackshare" title="Our Stack">Our Stack</a><a href="/vendors" title="Advertise With Us">Advertise With Us</a><a href="mailto:team@stackshare.io" title="Contact Us">Contact Us</a></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><h3 class="css-1gn11bn">Follow Us</h3><ul class="css-11gxadc"><li><a href="https://twitter.com/stackshareio" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm14.29 9.964c.548-.389 1.005-.891 1.393-1.44a6.285 6.285 0 0 1-1.621.435c.594-.343 1.005-.891 1.21-1.553a5.867 5.867 0 0 1-1.758.685A2.759 2.759 0 0 0 15.08 7.2a2.788 2.788 0 0 0-2.787 2.81c0 .205.023.433.069.639A7.976 7.976 0 0 1 6.56 7.702a3.037 3.037 0 0 0-.365 1.417c0 .982.48 1.827 1.233 2.33-.456 0-.89-.138-1.256-.343v.022c0 1.37.96 2.49 2.238 2.764-.228.069-.48.092-.73.092-.183 0-.366-.023-.526-.046.343 1.119 1.394 1.873 2.604 1.896-.96.753-2.147 1.279-3.472 1.279a6 6 0 0 1-.662-.046c1.233.8 2.718 1.233 4.294 1.233 5.162 0 7.971-4.27 7.971-7.97v-.366z"></path></svg></a></li><li><a href="https://facebook.com/stackshareio" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M16.478 24v-8h2.896l.201-3.069h-3.097v-2.237c0-.86.172-1.405 1.262-1.405h1.692l.143-2.925s-.86-.172-2.351-.172c-3.04 0-4.36 1.835-4.36 3.9v2.81H10.8V16h2.065v8H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6h-3.922z"></path></svg></a></li><li><a href="https://www.linkedin.com/company/stackshare" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm5.521 17.16V9.378H6.374v7.782h2.747zM7.748 8.43c1.119 0 1.83-.807 1.83-1.815C9.554 5.578 8.868 4.8 7.749 4.8c-1.094 0-1.831.778-1.831 1.815 0 1.008.712 1.815 1.805 1.815h.026zm11.444 8.73v-4.12c0-2.518-1.246-4.12-3.205-4.12-1.119 0-1.932.661-2.288 1.653l-.102-1.195h-2.721c.025.305.076 1.83.076 1.83v5.952h2.747v-4.12c0-1.12.508-1.831 1.347-1.831.84 0 1.4.432 1.4 1.83v4.12h2.746z"></path></svg></a></li><li><a href="https://angel.co/stackshare" target="_blank" rel="noreferrer noopener nofollow" class="css-1iqd2ec"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#FFF" fill-rule="evenodd" d="M3.6 0h16.8A3.6 3.6 0 0 1 24 3.6v16.8a3.6 3.6 0 0 1-3.6 3.6H3.6A3.6 3.6 0 0 1 0 20.4V3.6A3.6 3.6 0 0 1 3.6 0zm4.684 14.42c.365.493.708.877 1.029 1.153.322.276.579.413.769.413.14 0 .268-.064.385-.194a.624.624 0 0 0 .173-.42c0-.16-.114-.528-.341-1.11-.227-.58-.512-1.15-.849-1.71-.249-.418-.492-.733-.732-.947-.24-.214-.466-.319-.68-.319-.174 0-.366.111-.577.33-.212.223-.317.43-.317.622 0 .2.102.501.309.903.207.4.484.827.83 1.28zm6.062-4.06a89.757 89.757 0 0 0 1.296-3.767c.31-.99.465-1.598.465-1.824 0-.242-.053-.43-.155-.563h-.001a.51.51 0 0 0-.429-.2c-.23 0-.468.194-.707.582-.24.389-.505 1.014-.793 1.875l-1.238 3.622 1.562.275zm-4.45-.445a.982.982 0 0 1 .371-.058c.05 0 .149.005.298.013.147.01.392.03.73.063L9.958 6.022c-.347-.993-.615-1.644-.806-1.949-.19-.303-.397-.456-.619-.456a.513.513 0 0 0-.422.2c-.107.133-.16.313-.16.54 0 .384.144 1.052.433 2.004.29.953.724 2.202 1.303 3.749a.41.41 0 0 1 .21-.195zm6.22 2.129a1.006 1.006 0 0 0-.245-.293c-.338-.285-.998-.54-1.979-.765a13.608 13.608 0 0 0-3.068-.338c-.296 0-.508.05-.632.15-.124.1-.186.272-.186.516 0 .567.314.98.943 1.233.627.255 1.643.382 3.049.382h.508c.116 0 .21.044.279.133.07.088.118.219.142.394-.14.134-.43.287-.866.456-.438.172-.774.341-1.005.508a4.53 4.53 0 0 0-1.196 1.31 3.99 3.99 0 0 0-.198.374c-.04.09-.07.176-.102.263-.012.034-.029.067-.04.1-.018.063-.03.125-.044.188-.013.056-.032.11-.04.166-.006.039-.006.076-.01.114-.008.076-.019.154-.019.228v.001c0 .277.063.609.192.997.128.388.192.629.192.72v.086l-.025.112c-.364-.023-.65-.239-.863-.644-.21-.406-.315-.947-.315-1.622v-.112a.719.719 0 0 1-.192.125.553.553 0 0 1-.205.037c-.074 0-.144-.006-.212-.019a2.132 2.132 0 0 1-.222-.058v.001c.024.094.043.182.056.27a1.05 1.05 0 0 1-.34 1.003 1.22 1.22 0 0 1-.856.331c-.52 0-1.05-.256-1.587-.77-.537-.515-.806-1.017-.806-1.51 0-.091.01-.172.032-.243a.406.406 0 0 1 .104-.182c.115.142.278.35.483.627.545.76 1.05 1.14 1.512 1.14.157 0 .297-.05.422-.149.123-.1.185-.206.185-.313v-.001c0-.127-.083-.334-.248-.629a8.366 8.366 0 0 0-.681-.99c-.33-.425-.606-.736-.826-.933-.217-.196-.394-.295-.525-.295-.29 0-.557.157-.8.47a1.756 1.756 0 0 0-.366 1.11c0 .344.086.725.254 1.147.168.422.416.846.738 1.271a4.937 4.937 0 0 0 1.816 1.524c.723.355 1.522.532 2.4.532 1.611 0 2.96-.607 4.046-1.823 1.088-1.216 1.632-2.739 1.632-4.568 0-.56-.04-1.005-.124-1.337a1.67 1.67 0 0 0-.162-.425zm-4.733 2.915a6.14 6.14 0 0 1 .626-.682c.218-.206.449-.386.689-.545a8.167 8.167 0 0 1-1.01-.113 5.067 5.067 0 0 1-.912-.252c.133.268.25.535.354.802.103.268.188.532.253.79z"></path></svg></a></li></ul></div></div><div class="css-11a2nsi"><div class="css-1npm75a"><a href="/" class="css-lneilx"><svg width="203" height="31" viewBox="0 0 812 124" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><g id="Layer1" fill-rule="nonzero"><path d="M221.086 85.794c0 7.342-2.55 12.933-7.651 16.775-5.101 3.842-12.731 5.762-22.889 5.762-5.208 0-9.647-.352-13.318-1.056-3.671-.704-7.107-1.739-10.308-3.105V88.035c3.628 1.707 7.715 3.137 12.261 4.29 4.546 1.152 8.547 1.728 12.005 1.728 7.085 0 10.628-2.048 10.628-6.146 0-1.537-.469-2.785-1.408-3.746-.939-.96-2.561-2.048-4.866-3.265-2.305-1.216-5.379-2.636-9.22-4.258-5.506-2.305-9.551-4.439-12.133-6.402-2.583-1.964-4.461-4.215-5.635-6.755-1.173-2.54-1.76-5.666-1.76-9.38 0-6.36 2.465-11.279 7.395-14.758 4.93-3.479 11.919-5.218 20.968-5.218 8.623 0 17.01 1.878 25.163 5.634l-5.891 14.086c-3.585-1.537-6.936-2.796-10.052-3.778a31.589 31.589 0 0 0-9.54-1.472c-5.762 0-8.643 1.558-8.643 4.674 0 1.75.928 3.265 2.785 4.546 1.857 1.28 5.922 3.18 12.197 5.698 5.591 2.262 9.689 4.375 12.293 6.339 2.604 1.963 4.524 4.225 5.762 6.786 1.238 2.561 1.857 5.613 1.857 9.156zM259.924 92.773c3.415 0 7.513-.747 12.293-2.241v14.534c-4.866 2.177-10.841 3.265-17.927 3.265-7.811 0-13.499-1.974-17.063-5.922-3.564-3.948-5.346-9.871-5.346-17.767V50.131h-9.348v-8.259l10.756-6.531 5.635-15.11h12.485v15.238h20.04v14.662h-20.04v34.511c0 2.774.779 4.823 2.337 6.146 1.558 1.323 3.617 1.985 6.178 1.985zM325.59 107.051l-3.778-9.732h-.512c-3.287 4.14-6.669 7.011-10.148 8.611-3.479 1.601-8.014 2.401-13.606 2.401-6.872 0-12.282-1.963-16.23-5.89-3.949-3.927-5.923-9.519-5.923-16.775 0-7.598 2.657-13.2 7.971-16.807 5.315-3.607 13.329-5.602 24.042-5.986l12.421-.384v-3.138c0-7.256-3.713-10.884-11.14-10.884-5.72 0-12.443 1.728-20.168 5.186l-6.467-13.19c8.238-4.311 17.372-6.466 27.403-6.466 9.604 0 16.967 2.091 22.089 6.274s7.683 10.543 7.683 19.08v47.7H325.59zm-5.763-33.166l-7.555.256c-5.677.171-9.902 1.195-12.677 3.074-2.774 1.878-4.162 4.738-4.162 8.579 0 5.506 3.159 8.259 9.476 8.259 4.525 0 8.142-1.301 10.853-3.905 2.71-2.604 4.065-6.061 4.065-10.372v-5.891zM381.843 108.331c-22.281 0-33.421-12.229-33.421-36.687 0-12.165 3.03-21.459 9.091-27.883 6.061-6.424 14.748-9.636 26.059-9.636 8.281 0 15.708 1.622 22.281 4.866l-5.762 15.11c-3.074-1.238-5.933-2.251-8.58-3.041-2.646-.79-5.293-1.185-7.939-1.185-10.159 0-15.238 7.214-15.238 21.641 0 14.001 5.079 21.001 15.238 21.001 3.756 0 7.235-.502 10.436-1.505 3.202-1.003 6.403-2.571 9.604-4.706v16.711c-3.158 2.006-6.349 3.394-9.572 4.162-3.222.768-7.288 1.152-12.197 1.152zM432.398 68.123l8.516-10.885 20.04-21.769h22.025l-28.428 31.053 30.157 40.529h-22.537l-20.617-29.004-8.387 6.723v22.281h-19.528V7.426h19.528V51.86l-1.025 16.263h.256z"></path><path d="M538.336 85.794c0 7.342-2.55 12.933-7.651 16.775-5.101 3.842-12.73 5.762-22.889 5.762-5.208 0-9.647-.352-13.318-1.056-3.671-.704-7.107-1.739-10.308-3.105V88.035c3.628 1.707 7.715 3.137 12.261 4.29 4.546 1.152 8.548 1.728 12.005 1.728 7.086 0 10.628-2.048 10.628-6.146 0-1.537-.469-2.785-1.408-3.746-.939-.96-2.561-2.048-4.866-3.265-2.305-1.216-5.378-2.636-9.22-4.258-5.506-2.305-9.551-4.439-12.133-6.402-2.582-1.964-4.46-4.215-5.634-6.755-1.174-2.54-1.761-5.666-1.761-9.38 0-6.36 2.465-11.279 7.395-14.758 4.93-3.479 11.92-5.218 20.969-5.218 8.622 0 17.009 1.878 25.162 5.634l-5.89 14.086c-3.586-1.537-6.937-2.796-10.053-3.778a31.589 31.589 0 0 0-9.54-1.472c-5.762 0-8.643 1.558-8.643 4.674 0 1.75.928 3.265 2.785 4.546 1.857 1.28 5.923 3.18 12.197 5.698 5.592 2.262 9.689 4.375 12.293 6.339 2.604 1.963 4.525 4.225 5.763 6.786 1.237 2.561 1.856 5.613 1.856 9.156zM613.093 107.051h-19.528V65.242c0-10.33-3.841-15.495-11.524-15.495-5.464 0-9.412 1.857-11.845 5.571-2.433 3.713-3.65 9.732-3.65 18.055v33.678h-19.528V7.426h19.528v20.296c0 1.58-.149 5.293-.448 11.141l-.448 5.762h1.024c4.354-7 11.269-10.5 20.745-10.5 8.409 0 14.79 2.262 19.144 6.787 4.353 4.524 6.53 11.012 6.53 19.464v46.675zM672.1 107.051l-3.778-9.732h-.512c-3.286 4.14-6.669 7.011-10.148 8.611-3.479 1.601-8.014 2.401-13.606 2.401-6.872 0-12.282-1.963-16.23-5.89-3.948-3.927-5.923-9.519-5.923-16.775 0-7.598 2.657-13.2 7.972-16.807 5.314-3.607 13.328-5.602 24.042-5.986l12.421-.384v-3.138c0-7.256-3.714-10.884-11.141-10.884-5.72 0-12.442 1.728-20.168 5.186l-6.467-13.19c8.238-4.311 17.373-6.466 27.403-6.466 9.604 0 16.967 2.091 22.089 6.274 5.123 4.183 7.684 10.543 7.684 19.08v47.7H672.1zm-5.762-33.166l-7.555.256c-5.677.171-9.903 1.195-12.678 3.074-2.774 1.878-4.161 4.738-4.161 8.579 0 5.506 3.158 8.259 9.475 8.259 4.525 0 8.142-1.301 10.853-3.905 2.71-2.604 4.066-6.061 4.066-10.372v-5.891zM739.238 34.125c2.646 0 4.845.192 6.595.576l-1.473 18.312c-1.579-.427-3.5-.641-5.762-.641-6.232 0-11.088 1.601-14.566 4.802-3.479 3.202-5.218 7.684-5.218 13.446v36.431h-19.528V35.469h14.79l2.881 12.037h.96c2.22-4.012 5.218-7.245 8.996-9.7 3.777-2.454 7.886-3.681 12.325-3.681zM779.293 48.019c-4.141 0-7.385 1.312-9.732 3.937-2.348 2.625-3.692 6.349-4.034 11.173h27.403c-.085-4.824-1.344-8.548-3.777-11.173s-5.72-3.937-9.86-3.937zm2.753 60.312c-11.525 0-20.531-3.18-27.019-9.54-6.488-6.36-9.732-15.366-9.732-27.019 0-11.994 2.998-21.267 8.996-27.819 5.997-6.552 14.288-9.828 24.874-9.828 10.116 0 17.991 2.881 23.625 8.643 5.635 5.763 8.452 13.723 8.452 23.882v9.476h-46.163c.213 5.549 1.857 9.882 4.93 12.997 3.073 3.116 7.384 4.674 12.933 4.674 4.311 0 8.388-.448 12.229-1.344 3.842-.897 7.854-2.326 12.037-4.29v15.11c-3.414 1.708-7.064 2.978-10.948 3.81-3.885.832-8.622 1.248-14.214 1.248z"></path></g><g fill="#008ff9"><path d="M101.98 83c-3.9 0-7.157 2.792-7.886 6.482-.212 1.564 0 3.123 0 3.123.73 3.687 3.986 6.477 7.885 6.477 4.434 0 8.042-3.605 8.042-8.04 0-4.434-3.608-8.042-8.042-8.042M32.041 54C27.607 54 24 57.606 24 62.041c0 4.433 3.607 8.041 8.041 8.041 4.435 0 8.042-3.608 8.042-8.041 0-4.435-3.607-8.041-8.042-8.041m69.924-12.918c4.435 0 8.042-3.608 8.042-8.041 0-4.435-3.607-8.041-8.042-8.041-3.898 0-7.155 2.791-7.885 6.48v.049s-.18 1.654 0 3.073c.73 3.689 3.987 6.48 7.885 6.48"></path><path d="M101.965 105.961c-6.965 0-12.841-4.655-14.692-11.022H73.376l-.076.043-16.575-28.517H46.592c-1.852 6.367-7.727 11.023-14.694 11.023-8.451 0-15.303-6.852-15.303-15.303 0-8.452 6.852-15.305 15.303-15.305 6.967 0 12.842 4.656 14.694 11.025h9.905l.128-.217L73.3 28.999l.141.083h13.768c1.852-6.369 7.727-11.025 14.692-11.025 8.453 0 15.305 6.853 15.305 15.305 0 8.451-6.852 15.304-15.305 15.304-6.965 0-12.84-4.656-14.692-11.025h-9.03l-14.14 24.326-.006.023.005.022L78.2 86.378h9.073c1.851-6.369 7.727-11.026 14.692-11.026 8.453 0 15.305 6.853 15.305 15.305s-6.852 15.304-15.305 15.304zM124.996 0H8.004C3.584 0 0 3.561 0 7.953v108.094C0 120.44 3.584 124 8.004 124h116.992c4.421 0 8.004-3.56 8.004-7.953V7.953C133 3.561 129.417 0 124.996 0z"></path></g></svg></a><div class="css-de1dx1"><a href="/terms">Terms</a><span>·</span><a href="/privacy">Privacy</a></div><div class="css-1h53588"><h3 class="css-12k57td">SOC 2 Type 2 Certified</h3><a href="http://www.aicpa.org/soc4so" rel="nofollow noreferrer noopener" target="_blank" title="SOC2 badge"><img src="https://img.stackshare.io/fe/SOC2.png" class="css-j1o656"/></a></div><div class="css-zr18wh"><div>Copyright © <!-- -->2022<!-- --> StackShare, Inc. </div><div>All rights reserved.</div></div><div class="css-de1dx1"><a href="/html-sitemaps/stackups/main.html">Sitemap</a></div></div></div></div></div></footer></div> <script> renderComponent('Footer','Footer-react-component-b887cc69-1029-4251-be72-f428c4a31686','Footer-apollo-state-b887cc69-1029-4251-be72-f428c4a31686','Footer-glamor-b887cc69-1029-4251-be72-f428c4a31686', 'apollo','{"isAdmin":null}'); </script>