Version 41 (modified by Fran Boon, 14 years ago) ( diff )


Pakistan Deployment Cycle


We do daily upgrades of the systems from a single Fabfile script:

  1. Upgrade Live with code release from UAT
  2. Refresh the UAT database with data from Live
  3. Upgrade UAT to Trunk code
  4. Send a notification to the List with a summary of the changes on both Test & Live


Login to

1st time:

cd /home/release
fab generate_keys
fab test distribute_keys
fab prod distribute_keys


cd /home/release
fab prod deploy
fab test deploy

Make a note of any upgrade issues with the migration on Test so that they can be streamlined in tomorrow's migration on Live


  1. Upgrade Live with code release from UAT
  • Read VERSION from UAT to know which revision to pull to live
    • the 'update' script falls back to 'bzr pull' but supports an 'update XXX' arg to 'bzr pull -r XXX'
  • Send a notification to the list (for testers) with a summary of the day's changes: Full list of fixed bugs to be verified, New features to be Tested
  1. Upgrade UAT to Trunk code
  • Send a notification to the list (for users) with a summary of yesterday's code changes: Focussed on new features & notable bug fixes
  1. Refresh the UAT database with data from Live
  • Include 'uploads' folder
  • Need to ensure that User Accounts in Test are not overwritten
  • Need to ensure that Role memberships in Live & Test can be different

Sysadmin ToDo

  • Set deployment_settings on UAT to the same as Prod
  • Enhance Apache Maintenance site
    • allowing access to site through a browser - but using a different name (which we don't publish)
    • improving the text on the maintenance page
  • Extend scripts:
    • ConfigurationGuidelines#Usefulaliases
      (check for conflicts & copy all .THIS over - eiher parse the bzr output or search filesystem - whichever is easier/quicker)
      w2p {CLI web2py load as 'su web2py')
      (Check for migration failures in databases/sql.log)
      DBsync (tbc)
    • Use Fabric:
  • Rename instance as
    • keep as an alias for now
    • add as an alias too
  • Create a new instance
    • This shouldn't be fully-automated into the upgrades cycle, but does have a script to refresh data from live manually

Notifications can be built with info from the Trac Timeline

Other Tasks

Update script for debian packages: SSH into each &

apt-get update; apt-get upgrade

Use Fabric?


  • Get MapProxy working (basic install on 'geo' done)


  • Update Demo (whilst keeping the logins there intact - all other data can be dropped)


  • Investigate a fix or alternative to for allowing Trac users to register bugs anonymously whilst not locking out our testing team.
  • Convert from sqlite to PostgreSQL (or MySQL) to improve performance



Note: See TracWiki for help on using the wiki.