wiki:ReleaseManagement

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

--

Haiti


Release Management for the Haiti Portal

We have 3 running instances:

The Bug Tracker should have different views to distinguish between bugs being reported against each version

  • ToDo customise the 'Report Bugs' footer URL to link directly to a new ticket against that version?

We have several Code branches:

Release Process

Overall responsible Person: Fran

  1. Where generic, new code is merged 1st into Trunk by Fran
  2. Code is then merged into the Haiti branch by Fran
    • RMS is currently Haiti-specific so is merged directly to Haiti branch
  3. Code is pulled from the Haiti branch to Dev by lifeeth or chamindra
    • Data is 1st synced from Prod
    • A 1st draft of a data migration plan is made
  4. Code is pulled from the Haiti branch to UAT by lifeeth or chamindra
    • Testers to be informed before this via the group: tbc
    • Data is 1st synced from Prod
    • A more detailed data migration plan is made
  5. Code is pulled from the Haiti branch to Prod by Fran (Volunteers welcomed to take over!)
    • Sign-off for this to come from the group: tbc
    • A careful data migration plan is made
  • Backup
    • Disable system crontab
      • vim /etc/crontab
    • Website put into Maintenance Mode
      • cd /home/haiti ; ./maintenance.on
    • cd /home/haiti/web2py ; python web2py.py -S prod -M -N
      db.export_to_csv_file(open('db.csv','wb'))
      Ctrl+D
      
  • DataMigration
    • models/00_db.py
      • migrate = True
    • cd /home/haiti/web2py ; python web2py.py -S prod -M -N
      Ctrl+D
      
  • Restore Service
    • Re-enable Website
      • cd /home/haiti ; ./maintenance.off
    • Re-enable system crontab
      • vim /etc/crontab

Technical Details

Production

  • haiti.sahanapy.org VM: 212.23.5.4
  • /home/haiti/web2py/applications/prod
  • /etc/apache2/sites-enabled/prod
  • Sqlite
  • Web2Py r1544
  • Sahana Haiti r547
  • Customisations:
    • models/00_db.py
      • migrate = False
    • models/00_settings.py
      • auth.settings.registration_requires_verification = True
      • auth.settings.registration_requires_approval = True
    • cron/crontab
      */5   *       *       *       *       root *applications/prod/cron/rms_entry2record.py
      */5   *       *       *       *       root *applications/prod/cron/rms_tweet2request.py
      
    • views/layout_default.html
      <script type="text/javascript">
      var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
      document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
      </script>
      <script type="text/javascript">
      try {
      var pageTracker = _gat._getTracker("UA-12510226-2");
      pageTracker._setDomainName(".sahanafoundation.org");
      pageTracker._trackPageview();
      } catch(err) {}</script>
      
    • views/ext.html
      <!-- For Sites Hosted on the Public Internet, using Cachefly CDN's version of ExtJS may provide better performance
      <script type="text/javascript" src="/{{=request.application}}/static/scripts/ext/ext-all.js"></script>
       -->
      <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.0.3/ext-all.js"></script>
      
    • views/sahana_scripts_min.html
      <!-- For Sites Hosted on the Public Internet, using Google's version of jQuery will provide better performance
      <script src="/{{=request.application}}/static/scripts/web2py/jquery-1.3.2.min.js" type="text/javascript"></script>
      -->
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
      

UAT

  • logistics.sahanapy.org VM: 212.23.5.5
  • /home/haiti-test/web2py/applications/test
  • /etc/apache2/sites-enabled/haiti-test
  • MySQL hopefully
  • Web2Py r1544
  • Sahana Haiti r547
  • Customisations:
    • models/00_db.py
      • migrate = False
      • db = DAL('mysql://haititest:password@localhost/haititest', pool_size=10)
    • models/00_settings.py
    • cron/crontab
      */5   *       *       *       *       root *applications/prod/cron/rms_entry2record.py
      */5   *       *       *       *       root *applications/prod/cron/rms_tweet2request.py
      
    • views/ext.html
      <!-- For Sites Hosted on the Public Internet, using Cachefly CDN's version of ExtJS may provide better performance
      <script type="text/javascript" src="/{{=request.application}}/static/scripts/ext/ext-all.js"></script>
       -->
      <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.0.3/ext-all.js"></script>
      
    • views/sahana_scripts_min.html
      <!-- For Sites Hosted on the Public Internet, using Google's version of jQuery will provide better performance
      <script src="/{{=request.application}}/static/scripts/web2py/jquery-1.3.2.min.js" type="text/javascript"></script>
      -->
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
      

Dev

  • logistics.sahanapy.org VM: 212.23.5.5
  • /home/haiti-dev/web2py/applications/dev
  • /etc/apache2/sites-enabled/haiti-dev
  • MySQL hopefully
  • Web2Py r1544
  • Sahana Haiti r547
  • Customisations:
    • models/00_db.py
      • migrate = False
      • db = DAL('mysql://haitidev:password@localhost/haitidev', pool_size=10)
    • models/00_settings.py
    • cron/crontab
      */5   *       *       *       *       root *applications/prod/cron/rms_entry2record.py
      */5   *       *       *       *       root *applications/prod/cron/rms_tweet2request.py
      
    • views/ext.html
      <!-- For Sites Hosted on the Public Internet, using Cachefly CDN's version of ExtJS may provide better performance
      <script type="text/javascript" src="/{{=request.application}}/static/scripts/ext/ext-all.js"></script>
       -->
      <script type="text/javascript" src="http://extjs.cachefly.net/ext-3.0.3/ext-all.js"></script>
      
    • views/sahana_scripts_min.html
      <!-- For Sites Hosted on the Public Internet, using Google's version of jQuery will provide better performance
      <script src="/{{=request.application}}/static/scripts/web2py/jquery-1.3.2.min.js" type="text/javascript"></script>
      -->
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>
      

Note that UAT & Dev have different Web2Py instances so that:

  • We can trial different Web2Py versions on Dev
  • Crontab can be separately enabled/disabled
  • Sessions are not common between instances

Haiti

Note: See TracWiki for help on using the wiki.