Fundraising/tech/crm/Upgrade CiviCRM
Appearance
Creating a CiviCRM upgrade patch
This process is for tracking upstream security patches.
This first step should be done in your development clone of wikimedia/fundraising/crm.
# Prepare the Civi codebase by checking out our current upstream tracking head.
git submodule update -i
cd civicrm
git fetch --all
git checkout origin/contrib
# Get and unpack the new release
VERS=4.2.17 # for example
wget http://downloads.sourceforge.net/project/civicrm/civicrm-stable/$VERS/civicrm-$VERS-drupal.tar.gz
tar xzf civicrm-$VERS-drupal.tar.gz
mv civicrm civicrm-$VERS
# It's best to wipe out any deprecated files, as we do here,
# but you can omit the delete/exclude stanzas if you'd like.
# NOTE that you will lose any uncommitted development files as well.
rsync -av \
--delete --exclude '.git*' --exclude "civicrm-$VERS*" \
civicrm-$VERS/ ./
# Get your working stuff out of here
mv civicrm-$VERS* ..
# Toss pinch of salt and add everything you find.
git add -A
git commit -m "Upgrade to CiviCRM $VERS upstream"
# Locally review the crazy
git log -p -1 -w
- Push the drupal contrib commit for review. DO NOT SELF-MERGE, even if it seems like an emergency.
git push gerrit HEAD:refs/for/contrib
- Merge to trunk
git checkout origin/master
git merge -m "Merge contrib" contrib
# ...or you can explicitly give the treeish of your local contrib commit.
# Do stupid thing to run commit hook and satisfy git-review
git commit --amend
- Push the commit for review.
- In the top-level crm directory, update the submodule pointer.
cd ..
git checkout -t origin/master
git add civicrm
git commit -m "Update civicrm submodule to $VERS"
- Push the submodule bump for review.
- Prepare a merge to deployment and submit for review. The four review steps can be prepared in parallel, fwiw.
- If you have any doubts about code integrity, deploy to the staging box and test. It's important that WMF's custom patches still work, and determining this can be very tricky. TODO: unit tests for all Civi-core customizations.
Deploying a CiviCRM upgrade
Please note that your particular upgrade may require additional precautions or other action, see the CiviCRM release notes for details.
- Shut down all jenkins jobs which depend on the CRM. Just turn 'em all off if you're feeling lazy.
- Kill the lights:
# Make the site inaccessible
drush vset site_offline 1; drush vset maintenance_mode 1
# Clear caches
drush cc all
- Verify database backups are current.
- Deploy new wikimedia/fundraising/crm code.
- Beyond this point, know that you cannot recover safely without doing a full database restore...
# Update module schemas
drush updatedb
# Update CiviCRM schema
drush civicrm-upgrade-db
# Make site accessible
drush vset site_offline 0; drush vset maintenance_mode 0
- Turn jobs on again, slowly and carefully.