81 lines
2.7 KiB
Markdown
81 lines
2.7 KiB
Markdown
# oliverdavies.uk
|
||
|
||
## Hosting
|
||
|
||
This site is hosted on a DigitalOcean droplet, which was created using [Ansible][] (see `tools/ansible/digitalocean.yml`).
|
||
|
||
[Ansible]: https://www.ansible.com
|
||
|
||
## Provisioning
|
||
|
||
To re-provision the server:
|
||
|
||
```bash
|
||
# Download the required roles
|
||
ansible-galaxy install -r tools/ansible/requirements.yml --force
|
||
|
||
# Run the provision playbook
|
||
ansible-playbook tools/ansible/provision.yml
|
||
```
|
||
|
||
### Deploying
|
||
|
||
Deployments for this site for managed with Ansible and [Ansistrano][].
|
||
Ansible Vault is used to manage sensitive information like database passwords.
|
||
|
||
Deployments are triggered automatically when changes are pushed to GitHub, and are performed automatically via GitHub Actions on each push to the `production` branch.
|
||
|
||
To run a deployment manually, run `ansible-playbook tools/ansible/deploy.yml --ask-vault-pass`.
|
||
The Vault password is stored in LastPass.
|
||
|
||
[Ansistrano]: https://ansistrano.com
|
||
|
||
#### Generating settings files
|
||
|
||
Production settings files are generated automatically during a deployment. This is done using the [opdavies.drupal_settings_files][drupal_settings_files] Ansible role, using variables from `tools/ansible/vars/deploy_vars.yml`, and performed during Ansistrano’s `After update code` build step.
|
||
|
||
[drupal_settings_files]: https://galaxy.ansible.com/opdavies/drupal_settings_files
|
||
|
||
## Local development
|
||
|
||
Local development is done using [DDEV-Local](https://www.ddev.com/ddev-local).
|
||
|
||
### Custom DDEV commands
|
||
|
||
#### Drupal
|
||
|
||
| Command | Description |
|
||
| --- | --- |
|
||
| `ddev app install` | Install the site based on the existing config |
|
||
| `ddev app refresh` | Re-import the existing config and rebuild cache |
|
||
|
||
#### Front-end
|
||
|
||
| Command | Description |
|
||
| --- | --- |
|
||
| `ddev theme build` | Compile a production (minified and purged) version of the theme's CSS and JS |
|
||
| `ddev theme dev` | Compile a development version of the theme's CSS and JS |
|
||
| `ddev theme install` | Install the node dependencies for the theme |
|
||
| `ddev theme ssh` | SSH into the theme directory within the web container |
|
||
| `ddev theme watch` | Compile a development version of the theme's CSS and JS, and watch for changes |
|
||
|
||
## Migrating data into the website
|
||
|
||
To view the status of all the migrations:
|
||
|
||
bin/drush.sh migrate:status
|
||
|
||
To run all the migrations:
|
||
|
||
bin/drush.sh migrate:import --all
|
||
|
||
To run all the migrations and update the existing migrated content:
|
||
|
||
bin/drush.sh migrate:import --all --update
|
||
|
||
## Talks ordering
|
||
|
||
In order to keep the talks page in the correct order, based on when the next time a talk is being given, the `created` date for the talk node is automatically updated on each save to match the date of the most future event for that talk.
|
||
|
||
The view is then sorting the talk nodes based on their `created` date.
|