Upgrading to newer software releases
- 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.
- Find the latest Rust version
- 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_versionfor 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_versionfor 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)