{"id":457,"date":"2013-03-21T00:26:55","date_gmt":"2013-03-21T04:26:55","guid":{"rendered":"http:\/\/blogs.law.harvard.edu\/acts\/?p=457"},"modified":"2015-03-04T12:23:44","modified_gmt":"2015-03-04T17:23:44","slug":"continuous-integration-with-php-on-travis-ci-and-github","status":"publish","type":"post","link":"https:\/\/archive.blogs.harvard.edu\/acts\/2013\/03\/21\/continuous-integration-with-php-on-travis-ci-and-github\/","title":{"rendered":"Continuous Integration with PHP on Travis CI and Github"},"content":{"rendered":"<p><a href=\"http:\/\/blogs.law.harvard.edu\/acts\/files\/2013\/03\/Screen-Shot-2013-03-20-at-1.09.08-AM1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-470\" title=\"Travis CI Failed Pull Request\" src=\"http:\/\/blogs.law.harvard.edu\/acts\/files\/2013\/03\/Screen-Shot-2013-03-20-at-1.09.08-AM1.png\" alt=\"\" width=\"638\" height=\"228\" \/><\/a><\/p>\n<p>People on high have been preaching the wonder of continuous integration for a while now. It&#8217;s been all about Jenkins forever. Jenkins is still the #1 choice for most people, but I recently ran into Travis CI and at least short term, this is going to be the solution for our shop.<\/p>\n<p><a href=\"http:\/\/blogs.law.harvard.edu\/acts\/files\/2013\/03\/Screen-Shot-2013-03-20-at-1.15.02-AM1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-471\" title=\"Travis CI Success Pull Request\" src=\"http:\/\/blogs.law.harvard.edu\/acts\/files\/2013\/03\/Screen-Shot-2013-03-20-at-1.15.02-AM1.png\" alt=\"\" width=\"636\" height=\"228\" \/><\/a><\/p>\n<p><strong>What is Continuous Integration for PHP?<\/strong><\/p>\n<p>CI to most people involves building and running integration tests. PHP clearly doesn&#8217;t build, but good PHP still has unit tests \/ integration tests \/ functional tests &#8212; so CI for PHP is running those tests before code merges.<\/p>\n<p><strong>What makes Travis CI good?<\/strong><\/p>\n<p>Probably ease of use. There is no setup of a &#8220;travis server&#8221;. It&#8217;s a service that they run. You hook it to a repo you have access to and set up a config file and it&#8217;s good to go.<\/p>\n<p><strong>But this only works with github?<\/strong><\/p>\n<p>That&#8217;s probably the biggest detractor. It&#8217;s currently built exclusively for use with github. Which is awesome for github projects, but not every project can be on github. We don&#8217;t always have control over where our repos are &#8212; and not everyone is an open source person.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>People on high have been preaching the wonder of continuous integration for a while now. It&#8217;s been all about Jenkins forever. Jenkins is still the #1 choice for most people, but I recently ran into Travis CI and at least short term, this is going to be the solution for our shop. What is Continuous [&hellip;]<\/p>\n","protected":false},"author":4571,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[910,64019,3163],"tags":[64049,64000,64051,1029,64050,63992],"class_list":["post-457","post","type-post","status-publish","format-standard","hentry","category-development","category-open-source-development","category-php","tag-continuous-integration","tag-github","tag-jenkins","tag-open-source","tag-travis-ci","tag-unit-testing"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/posts\/457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/users\/4571"}],"replies":[{"embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/comments?post=457"}],"version-history":[{"count":7,"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/posts\/457\/revisions"}],"predecessor-version":[{"id":894,"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/posts\/457\/revisions\/894"}],"wp:attachment":[{"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/media?parent=457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/categories?post=457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/archive.blogs.harvard.edu\/acts\/wp-json\/wp\/v2\/tags?post=457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}