documentation/tools/deploying-drutopia-updates.md

2.4 KiB

Deploying Drutopia updates

Prerequsites

A bit more PHP than you need, but this will definitely get you ready for composer and friends:

sudo apt-get install ansible rsync php7.4 php7.4-gd php7.4-mysql php7.4-xml php7.4-curl php7.4-fpm php7.4-sqlite3 php7.4-cli

Then follow the commands from:

getcomposer.org/download

And then:

sudo mv composer.phar /usr/local/bin/composer

To make working with Drutopia Platform's recommended Ansible setup easier (and for the following instructions to work), install Ahoy per its instructions:

github.com/ahoy-cli/ahoy

Finally, clone needed Drutopia repositories locally according to the recommended setup.

Now you are ready for deploying Drutopia updates on a regular basis.

Ensure you are up-to-date

cd ~/Projects/drutopia-platform/drutopia_host/hosting_private
ahoy git-pull-all
ahoy new-site example

And, following the instructions that provides, copy the

ansible-vault edit host_vars/elizabeth.mayfirst.org/vault.yml

Prepare appropriate base

ahoy deploy-build next

Deploy your site

ahoy deploy-site example_test

And you can share back the record of the deployments in the build_artifacts repository with this:

ahoy artifacts

Putting it all together

cd ~/Projects/drutopia-platform/drutopia_host/hosting_private
ahoy git-pull-all        
ahoy deploy-build next
ahoy deploy-site example_live
ahoy artifacts

If you need to override site configuration:

ahoy deploy-site-force example_test

Bonus: Keep Drutopia builds with similar available modules

To try to keep various Drutopia-based distributions from diverging too much, at least insofar as available modules, even if they aren't installed, we can use the meld (sudo apt-get install meld) diff tool to compare and share when posssible.

meld ~/Projects/agaric/sites/crla/crla-org/composer.json ~/Projects/agaric/sites/geo/composer.json ~/Projects/drutopia-platform/build_source/composer.json ~/Projects/agaric/sites/agaric-com/composer.json

When these align in not needing special patches or versions, we can consider dropping a custom build in favor of collaborating on a single one.