{"id":562,"date":"2018-06-16T14:13:10","date_gmt":"2018-06-16T14:13:10","guid":{"rendered":"https:\/\/2018.asheville.wordcamp.org\/?post_type=wcb_session&#038;p=562"},"modified":"2018-08-20T12:17:47","modified_gmt":"2018-08-20T12:17:47","slug":"developing-deploying-high-quality-code-using-tdd-ci-cd","status":"publish","type":"wcb_session","link":"https:\/\/asheville.wordcamp.org\/2018\/session\/developing-deploying-high-quality-code-using-tdd-ci-cd\/","title":{"rendered":"Developing &amp; deploying high quality code, using TDD + CI\/CD"},"content":{"rendered":"<p>In this presentation I&#8217;ll take a deep dive into my preferred development and deployment workflow. I&#8217;ll cover how to work with code quality tools such as PHPMD, PHP_CodeSniffer and JSLint, as well as how to implement Test Driven Development into a custom plugin. I&#8217;ll wrap the whole thing up by demonstrating how to connect everything to a continuous integration \/ delivery pipelines to test the code and deploy automatically.<\/p>\n<p>Takeaways:<\/p>\n<ul>\n<li>Code Quality<\/li>\n<li>TDD<\/li>\n<li>CI\/CD<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In this presentation I&#8217;ll take a deep dive into my preferred development and deployment workflow. I&#8217;ll cover how to work with code quality tools such as PHPMD, PHP_CodeSniffer and JSLint, as well as how to implement Test Driven Development into a custom plugin. I&#8217;ll wrap the whole thing up by demonstrating how to connect everything &hellip; <a href=\"https:\/\/asheville.wordcamp.org\/2018\/session\/developing-deploying-high-quality-code-using-tdd-ci-cd\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Developing &amp; deploying high quality code, using TDD + CI\/CD<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":348918,"featured_media":0,"template":"","meta":{"jetpack_post_was_ever_published":false,"_wcpt_session_time":1534599000,"_wcpt_session_duration":3000,"_wcpt_session_type":"session","_wcpt_session_slides":"https:\/\/docs.google.com\/presentation\/d\/1rOUW47SUPFUMrfSCrYaAB3oLY1oKLg0EOehLcE-_2Yo\/edit?usp=drivesdk","_wcpt_session_video":"","_wcpt_speaker_id":[509],"footnotes":""},"session_track":[174416],"session_category":[10024,8858],"class_list":["post-562","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-room-3","wcb_session_category-advanced","wcb_session_category-developers"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9nZ58-94","session_date_time":{"date":"August 18, 2018","time":"1:30 pm"},"session_speakers":[{"id":"509","slug":"russell-fair","name":"Russell Fair","link":"https:\/\/asheville.wordcamp.org\/2018\/speaker\/russell-fair\/"}],"session_cats_rendered":"Advanced, Developers","_links":{"self":[{"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions\/562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":1,"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions\/562\/revisions"}],"predecessor-version":[{"id":563,"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/sessions\/562\/revisions\/563"}],"speakers":[{"embeddable":true,"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/speakers\/509"}],"author":[{"embeddable":true,"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wporg\/v1\/users\/rfair404"}],"wp:attachment":[{"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/media?parent=562"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/session_track?post=562"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/asheville.wordcamp.org\/2018\/wp-json\/wp\/v2\/session_category?post=562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}