<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>PHPDeveloper.org</title>
    <link>http://www.phpdeveloper.org</link>
    <description>Up-to-the Minute PHP News, views and community</description>
    <language>en-us</language>
    <pubDate>Tue, 18 Jun 2013 21:49:35 -0500</pubDate>
    <ttl>30</ttl>
    <item>
      <title><![CDATA[Samantha Quinones: Why you should consider Continuous Integration]]></title>
      <guid>http://www.phpdeveloper.org/news/19717</guid>
      <link>http://www.phpdeveloper.org/news/19717</link>
      <description><![CDATA[<p>
<i>Samantha Quinones</i> has a recent post to her blog about why you should <a href="http://www.tembies.com/2013/06/continuous-integration-deployment-with-php/">consider continuous integration</a> for your projects - some of the benefits and decisions that come along with it.
</p>
<blockquote>
Last night at <a href="http://www.meetup.com/DC-PHP">DCPHP</a>, I gave a short "lightning" talk on <a href="https://speakerdeck.com/squinones/continuous-integration-and-deployment-with-php">Continuous Integration and Deployment</a> in the context of PHP applications. I really like the lightning talk format as it forces you to focus on the meat of your topic- there's no time to get distracted by details. As great as that is, though, I wanted to expand a little on the subject and touch on some of the details that I couldn't include in my presentation.
</blockquote>
<p>
She starts off by talking about what's wrong with a lot of the more traditional build and development practices, noting that "it sucks" because of the processes involved. With the help of continuous integration, some of the process can be automated and make for less human-related errors during a deployment. She talks about some of the things you'll need to do to prepare your codebase and a few things to think about your future setup like:
</p>
<ul>
<li>what does a successful build look like?
<li>how much code needs to be covered by tests to deploy?
<li>should a build be successful if standards are broken or issues found?
</ul>
Link: http://www.tembies.com/2013/06/continuous-integration-deployment-with-php]]></description>
      <pubDate>Fri, 14 Jun 2013 09:39:32 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Luis Atencio: Notes on Continuous Delivery - Implementing a Testing Strategy]]></title>
      <guid>http://www.phpdeveloper.org/news/19508</guid>
      <link>http://www.phpdeveloper.org/news/19508</link>
      <description><![CDATA[<p>
<i>Luis Atencio</i> has posted the latest article in his "Continuous Delivery" series today, this time with a focus on <a href="http://www.luisatencio.net/2013/04/notes-on-continuous-delivery.html">implementing a testing strategy</a>. This is the fourth post in the series (<a href="http://phpdeveloper.org/news/19144">part 1</a>, <a href="http://phpdeveloper.org/news/19240">part 2</a> and <a href="http://phpdeveloper.org/news/19367">part 3</a>).
</p>
<blockquote>
There are three things in life that are always held to be true: we will die someday; we will pay taxes; and software will have bugs.... LOL [...] A testing strategy is often overlooked in software projects. This should not be too surprising, we want to build applications quickly and release them quickly. However, leaving quality out of the picture or towards the end are terrible mistakes.
</blockquote>
<p>
He talks some about the different types of testing that revolve around software development - "business facing" and "technology facing." These are each split down even further into things like acceptance, integration and unit testing.
</p>
Link: http://www.luisatencio.net/2013/04/notes-on-continuous-delivery.html]]></description>
      <pubDate>Thu, 25 Apr 2013 11:55:24 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Luis Atencio: Notes on Continuous Delivery - Continuous Integration]]></title>
      <guid>http://www.phpdeveloper.org/news/19367</guid>
      <link>http://www.phpdeveloper.org/news/19367</link>
      <description><![CDATA[<p>
<i>Luis Atencio</i> has posted the <a href="http://www.luisatencio.net/2013/03/notes-on-continuous-delivery-continuous.html">third part of his continuous delivery series</a> (parts <a href="http://phpdeveloper.org/news/19144">one</a> and <a href="http://phpdeveloper.org/news/19240">two</a>), this time with a focus on continuous integration as a part of the process.
</p>
<blockquote>
This is a continuation from my previous post and overall the series on Continuous Delivery. If you haven't been following, that's okay, every topic is self-contained, so read along. The contents of these posts are taken from the book titled "Continuous Delivery" by Humble and Farley (resources below) overlaid with my own professional experience. In this article, we talk a bit more about Continuous Integration (CI) and some practices developers should follow to ensure a smooth environment.
</blockquote>
<p>
He talks some about what "continuous integration" is and how much it relies on an automation of the process around your delivery of software. He mentions integration of testing (unit/acceptance/integration) and how it can help discover issues early. He includes a list of essential practices that come along with the idea of CI integration including:
</p>
<ul>
<li>Don't check in on a broken build
<li>Keep a stable build at all times
<li>Anticipate being able to revert your changes
<li>Using TDD
<li>Distributed Version Control
</ul>
<p>
He also recommends using any downtime (like waiting on a build to "go green" again) to take a few minutes away from the code - it can benefit you and your code.
</p>]]></description>
      <pubDate>Tue, 26 Mar 2013 12:20:31 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Luis Atencio: Notes on Continuous Delivery - Configuration Management]]></title>
      <guid>http://www.phpdeveloper.org/news/19240</guid>
      <link>http://www.phpdeveloper.org/news/19240</link>
      <description><![CDATA[<p>
<i>Luis Atencio</i> has continued his series on continuous delivery with <a href="http://www.luisatencio.net/2013/02/continuous-delivery-notes-on.html">this second post</a>. It focuses on the first step (and one of the most important) - keeping everything configuration-related in a version control system.
</p>
<blockquote>
I will be continuing the topic on Continuous Delivery which began in my previous post: Notes on Continuous Integration; this time we will start looking at the first and most important step, Configuration Management. In the words of the authors (resource below): Configuration Management refers to the process by which all artifacts ... and the relationships between them, are stored, retrieved, uniquely identified, and modified.
</blockquote>
<p>He sets out four principles that can be used to set this process up in your workflow:</p>
<ul>
<li>Keep everything in version control
<li>Manage dependencies
<li>Manage software configuration
<li>Manage environments
</ul>
<p>
Each point has an explanation and advice on what he's found the best way to implement the functionality. He finishes with a few other pieces of advice including avoiding branching in config repositories and having good communication practices with your ops team.
</p>]]></description>
      <pubDate>Tue, 26 Feb 2013 11:55:10 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Luis Atencio: Notes on Continuous Delivery]]></title>
      <guid>http://www.phpdeveloper.org/news/19144</guid>
      <link>http://www.phpdeveloper.org/news/19144</link>
      <description><![CDATA[<p>
In a new post to his site <i>Luis Atencio</i> talks some about one of the things many development groups strive for but have a hard time achieving - <a href="http://www.luisatencio.net/2013/02/continuos-delivery-overview.html">continuous delivery of their application</a>.
</p>
<blockquote>
In the rapid changing software world of today, companies and individuals have come up with many methods in order to minimize the time to market gap, i.e the time it takes for your idea to materialize in production. Specially in the very competitive world of mobile and web applications. [...] We want our Operations team to be able to deploy correct and tested code in a manner that is automated and not stressful. [...] However, there is a down side to this: while it is important to beat the market and be innovative, it is also equally important to do this with a process that allows you to have a reliable product release.
</blockquote>
<p>
He introduces the concepts behind "continuous delivery" and includes <a href="http://2.bp.blogspot.com/-syNkw1DbZVA/UQ6gL3za7WI/AAAAAAAAB_w/3xSJb3bnWkY/s1600/deployment_pipeline.png">an illustration</a> of how the flow would commonly work. He also mentions some benefits to implementing this into your project's flow including easy auditing and versioning, quicker deployments and the creation of a simplified, unified deployment system across platforms/environments. It's not without its challenges, though, so there's a bit of discussion about those as well.
</p>]]></description>
      <pubDate>Wed, 06 Feb 2013 11:05:28 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[DPCRadio: Episode #2012-16 - Travis CI - Distributed CI for the Masses]]></title>
      <guid>http://www.phpdeveloper.org/news/18781</guid>
      <link>http://www.phpdeveloper.org/news/18781</link>
      <description><![CDATA[<p>
DPCRadio (recordings of the sessions at this year's Dutch PHP Conference) has posted its latest episode - a recording of <i>Josh Kalderimis</i>' talk <a href="http://blog.ibuildings.com/2012/11/19/dpcradio-travis-ci-distributed-ci-for-the-masses/">Travis CI - Distributed CI for the Masses!</a>.
</p>
<blockquote>
Continuous Integration has typically been a practice only performed by companies who want that piece of mind for their client software, but does it need to be like this? Travis CI is a continuous integration service for the open source community. We make testing OS projects dead simple and fun. But most importantly, we help improve code quality for large projects like Doctrine2 and symfony, to smaller libraries like FOSRest. The vision behind Travis CI is to become for builds what PEAR is for distributing libraries. In this talk Josh, one of the core members of the Travis CI team, will introduce you to the vision behind Travis, the how it is implemented, and why it matters to everyone in the OS community.
</blockquote>
<p>
You can listen to this latest episode either by <a href="http://blog.ibuildings.com/2012/11/19/dpcradio-travis-ci-distributed-ci-for-the-masses/">using the in-page player</a> or by <a href="http://dpcradio.s3.amazonaws.com/2012_016.mp3">downloading the mp3</a>. You can also <a href="https://itunes.apple.com/nl/podcast/dpc-radio/id568825964">subscribe to this podcast</a>.
</p>]]></description>
      <pubDate>Wed, 21 Nov 2012 09:36:12 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Jeremy Cook: Continuous Deployment with Symfony2, Jenkins and Capifony]]></title>
      <guid>http://www.phpdeveloper.org/news/18748</guid>
      <link>http://www.phpdeveloper.org/news/18748</link>
      <description><![CDATA[<p>
<i>Jeremy Cook</i> has a recent post to his site showing how he <a href="http://jeremycook.ca/2012/11/04/continuous-deployment-with-symfony2-jenkins-and-capifony/">set up Capifony and Jenkins</a> to do continuous deployment with a Symfony2-based application (including a full recipe for the deployment). 
</p>
<blockquote>
It seems that many people talk about setting up a continuous deployment system but few actually take the plunge and make it a reality. I've recently set up continuous deployment for an API project at work and thought I would blog about how I got it all to work.
</blockquote>
<p>
He starts by laying out the plan for the system and what it's intended to do (an excellent first step). This is followed by details on <a href="http://capifony.org/">Capifony</a> and what kind of advantages it offers for deployment. He shares the full contents of his "deploy.rb" file that includes the actual steps for the deployment including a git checkout, a <a href="http://getcomposer.org">Composer</a> install, warming up the Symfony cache and restarting Apache. He also includes how they have it set up with Jenkins, having the build triggered when the main project's build completes successfully.
</p>]]></description>
      <pubDate>Wed, 14 Nov 2012 13:35:08 -0600</pubDate>
    </item>
    <item>
      <title><![CDATA[Reddit.com: PHP and Continuous Integration]]></title>
      <guid>http://www.phpdeveloper.org/news/18532</guid>
      <link>http://www.phpdeveloper.org/news/18532</link>
      <description><![CDATA[<p>
On Reddit.com there's <a href="http://www.reddit.com/r/PHP/comments/10kfku/php_and_continuous_integration/">a recent post</a> answering a question asked about PHP and continuous integration during a project's development.
</p>
<blockquote>
Does anyone have experience with PHP and Continuous Integration? If so, what tools and / or platforms did you use?
</blockquote>
<p>Suggestions in the comments include:</p>
<ul>
<lI><a href="http://codeception.com/">Codeception</a> for unit testing
<li>the Jenkins <a href="http://jenkins-php.org/">PHP template</a>
<li>Atlassian <a href="http://www.atlassian.com/software/bamboo/overview">Bamboo</a>
<li><a href="http://book.cakephp.org/2.0/en/development/testing.html#integration-with-jenkins">Jenkins</a>
<li><a href="http://travis-ci.org/">Travis-CI</a> (more for open source projects)
</ul>]]></description>
      <pubDate>Fri, 28 Sep 2012 10:23:11 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Till Klampaeckel: Continuous Integration: Automated database setup with Doctrine on Travis-CI]]></title>
      <guid>http://www.phpdeveloper.org/news/18357</guid>
      <link>http://www.phpdeveloper.org/news/18357</link>
      <description><![CDATA[<p>
<i>Till Klampaeckel</i> has a new post to his site showing how you can use the external continuous integration system <a href="http://travis-ci.org/">Travis-CI</a> to handle <a href="http://till.klampaeckel.de/blog/archives/192-Continuous-Integration-Automated-database-setup-with-Doctrine-on-Travis-CI.html">automated database testing</a> for your PHP app using Doctrine.
</p>
<blockquote>
Testing is important - most people understand that by now. A lot of people write tests for their open source code already, but in-house testing is still hard. [...] While I prefer to run my database tests against a SQLite in memory database, there are these edge cases, where I work with multiple database or I write a direct query (and by-pass the ORM-magic). In these cases I need to have that database server available in my test environment! The following blog posts explains how to solve these things with Travis-CI. I will walk you through the setup on Travis-CI's business service. But most of this applies to their open source offering as well.
</blockquote>
<p>
He's broken it up into a few different steps - the setup and configuration of the ".travis.yml" file, adding in a "composer.json" file with the needed dependencies and the recommendation of a "phpunit.xml" in your project's root. He shows how to use Doctrine's "SchemaTool" utility to generate his schema off of the comments on his entities (instead of checking in SQL). This setup them gives him access to Doctrine's EntityManager object in his tests and he can go from there. If you're thinking about doing something similar, check Travis' <a href="http://about.travis-ci.org/docs/user/database-setup/">list of supported databases</a> before you do anything, just to be sure.
</p>]]></description>
      <pubDate>Tue, 14 Aug 2012 10:55:57 -0500</pubDate>
    </item>
    <item>
      <title><![CDATA[Marcelo Gornstein's Blog: PHP Continuous integration, with Jenkins and Phing]]></title>
      <guid>http://www.phpdeveloper.org/news/17879</guid>
      <link>http://www.phpdeveloper.org/news/17879</link>
      <description><![CDATA[<p>
On his site <i>Marcelo Gornstein</i> has published a new guide to getting a basic automated continuous integration server set up <a href="http://marcelog.github.com/articles/ci_jenkins_hudson_continuous_integration_php_phing.html">with Jenkins and Phing</a>.
</p>
<blockquote>
This article is about how to use <a href="http://www.phing.info/trac/">Phing</a> in your projects, so a <a href="http://en.wikipedia.org/wiki/Continuous_integration">continuous integration</a> server (in this case <a href="http://jenkins-ci.org/>Jenkins</a> -ex Hudson-) can generate the necessary <a href="http://en.wikipedia.org/wiki/Artifact_(software_development)">artifacts</a> for your php application (deployment artifacts, documentation, code metrics, etc). I'll try to show why this will make your life easier when developing or auditing code, generating releases and deploying new versions, trace bugs, etc. All with just a handful of phing tasks. 
</blockquote>
<p>
He introduces the Phing tool and explains how it makes automating the steps of your process simpler, relating it to the <a href="http://ant.apache.org/">Apache Ant</a> tool for those familiar with it. He links to several of the resources used in the process including <a href="http://phpmd.org/>PHPMD</a>, <a href="https://github.com/sebastianbergmann/phploc>PHPLoc</a>, <a href="http://www.docblox-project.org/">DocBlox</a> and <a href="https://github.com/marcelog/Ci-Php-Phing-Example">the code for the article</a> itself. He outlines the process and, complete with <a href="http://marcelog.github.com/articles/ciconfigexample.jpeg">a screenshot of the final result</a>, shows you how to get everything configured and running smoothly.
</p>]]></description>
      <pubDate>Fri, 27 Apr 2012 12:18:30 -0500</pubDate>
    </item>
  </channel>
</rss>
