Building and deploying on CentOS 5

There are many, many ways to deploy Pressflow, but this is the method Four Kitchens uses for its largest projects.

Setup

  1. Add the EPEL and Four Kitchens Yum repositories.
  2. Install Ant and other dependencies:
    sudo yum install ant ant-apache-regexp bzr bzrtools createrepo
    
  3. Make the project available in a Bazaar branch
    • If the project is already in Bazaar, this is done.
    • If the project is not in Bazaar, try to create a local branch that imports the appropriate code from Subversion, Mercurial, or git. Importing Subversion on CentOS 5 requires Subversion support for Bazaar on CentOS 5.
    • If all else fails, export the code to deploy and import it into a Bazaar branch. Commit.
  4. Branch the Pressflow Deployment Packaging project code into deployment-packaging:
    bzr branch lp:pressflow-deployment-packaging deployment-packaging
    
  5. Create a properties file with your application's settings:
    deployment-packaging/build.properties
    application.branch=lp:~BRANCH-OWNER/PROJECT/BRANCH
    application.name=PROJECT
    application.summary=DESCRIPTION
    application.packager=FIRST LAST <ADDRESS@EXAMPLE.COM>
    application.vendor=VENDOR
    application.webroot=PATH-TO-DRUPAL-OR-PRESSFLOW
    application.domain=DOMAIN
    yum-repository=DESTINATION-FOR-RPM-PACKAGE
    
    • You can also specify application.branch-prefix instead of application.branch if most branches reside in the same root path. See the top of the Ant script for details.
  6. Try to create a build:
    ant build
    
  7. Install vsftpd and enable anonymous access (but disable writes).
  8. Create a directory under /var/ftp/pub to host the Yum repository for builds.
  9. Try to create and publish a build:
    ant publish
    

Client setup

  1. Add and enable the Yum repository from the management box:
    /etc/yum.repos.d/PROJECT.repo
    [PROJECT]
    name=PROJECT
    baseurl=ftp://MANAGEMENT-BOX/pub/PROJECT/
    failovermethod=priority
    enabled=1
    gpgcheck=0
    
  2. Attempt to install the project via Yum:
    sudo yum install PROJECT
    

Starting simple: creating an RPM with from tip of the specified branch

  1. Make deployment-packaging the working directory.
  2. Create an RPM:
    ant
    

More complex: building and publishing a tag-based RPM to your application's Yum repository

  1. Make deployment-packaging the working directory.
  2. Create and publish an RPM:
    ant publish -Dapplication.tag=release-1.1
    

Deployment

  1. Use a management utility or deployment tool to install or update the RPM on target systems.
  2. Restart necessary services.

Feedback, questions, and bugs

Please post these to this project's space on Launchpad.