Upgrading to newer software releases

  1. Check locally if application still works

Node

Update node version in:

  • .devcontainer/.env
  • .devcontainer/Dockerfile
  • frontend/README.md

Postgres

Update postgres/postgis version in:

  • .devcontainer/docker-compose.yml
  • ci/Jenkinsfile
  • .docker/docker-compose.yml

Rust

CRITICAL: All environments (CI Docker images and deployment servers) must use the same Rust version for consistent Diesel CLI compilation.

  1. Find the latest Rust version
  2. Find the latest Debian release

Assemble the rust docker tag as follows:

rust:<rustversion>-slim-<name of latest debian release>

Update Rust version in:

  • .devcontainer/Dockerfile
  • ci/container-images/permaplant-rust/Dockerfile (version X.Y.Z from rust:X.Y.Z-slim-...)
  • doc/Dockerfile
  • backend/rust-toolchain.toml
  • Infrastructure repository: ansible/group_vars/permaplant_servers/plain.yaml (variable rust_version for deployment servers)

After updating, run the Ansible playbook to update all servers (dev, mr, mr.staging, master, master.staging, www, www.staging):

cd infrastructure/ansible
ansible-playbook pb_permaplant.yaml

Notify the developers that they should rebuild their dev containers in VSCode after updating their branches with the new versions

Diesel CLI

CRITICAL: All environments (CI Docker images and deployment servers) must use the same Diesel CLI version. Version mismatches cause --locked-schema checks to fail because different versions generate slightly different schema.rs files.

Update Diesel CLI version in:

  • ci/container-images/permaplant-rust/Dockerfile (CI build environment)
  • Infrastructure repository: ansible/group_vars/permaplant_servers/plain.yaml (variable diesel_cli_version for deployment servers)

After updating both files with the same version, run the Ansible playbook to update all servers (dev, mr, mr.staging, master, master.staging, www, www.staging):

cd infrastructure/ansible
ansible-playbook pb_permaplant.yaml

The playbook will automatically detect version mismatches and update Diesel CLI on the servers.

Prettier

Update prettier version in:

  • .pre-commit-config.yaml
  • package.json (and via npm package-lock.json)
  • frontend/package.json (and via npm frontend/package-lock.json)