Rollback to previous version¶
Sometimes it might happen that there’s a need to rollback an performed upgrade of your installed instances.
In the below example we’ll upgrade an instance from 5.1.0 version to 5.2.0 and then rollback to 5.1.0 again.
Important
Please always make sure to have a backup of your Database
It’s also recommended to additionally backup your rhodecode.ini and vcsserver.ini configuration files, in case there’s some really custom configuration stored there.
Please read our release notes, and check Upgrade notes section for any additional information about important, or backward incompatible changes between releases.
Here’s our current installation, of 5.1.0 version:
$ ./rcstack -v
5.22.0
$ ./rcstack status
Running hostname: http://rhodecode.local
CONTAINER ID NAMES IMAGE STATUS PORTS
bfd375bd6fb3 rc_cluster_apps-celery-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes
02deca05beda rc_cluster_apps-celery-beat-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes
e25335f717ab rc_cluster_apps-rhodecode-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
825040c8f310 rc_cluster_apps-sshd-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
3e2afccc5d78 rc_cluster_apps-svn-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
beb5e927b116 rc_cluster_apps-vcsserver-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
9f78b0fa8cb7 rc_cluster_metrics-grafana-1 grafana/grafana:9.5.18 Up 3 minutes 3000/tcp
4d25f8d776e2 rc_cluster_metrics-loki-1 grafana/loki:2.9.8 Up 3 minutes 3100/tcp
663eb2e5796b rc_cluster_metrics-node-exporter-1 prom/node-exporter:v1.8.0 Up 3 minutes 9100/tcp
08a1a44a04e4 rc_cluster_metrics-prometheus-1 prom/prometheus:v2.51.2 Up 3 minutes 9090/tcp
5113b1ef25c6 rc_cluster_metrics-promtail-1 grafana/promtail:2.9.8 Up 3 minutes
39da8c645e3f rc_cluster_metrics-statsd-exporter-1 prom/statsd-exporter:v0.26.1 Up 3 minutes (healthy) 9102/tcp, 9125/tcp, 9125/udp
4fa1573b0e7d rc_cluster_router-traefik-1 traefik:v2.11.6 Up 4 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp, 0.0.0.0:9022->9022/tcp, :::9022->9022/tcp
eed6cd70c3b5 rc_cluster_services-channelstream-1 channelstream/channelstream:0.7.1 Up 3 minutes (healthy) 8000/tcp
eb0ec9431300 rc_cluster_services-database-1 postgres:14.13 Up 3 minutes (healthy) 5432/tcp
2859ca567851 rc_cluster_services-elasticsearch-1 elasticsearch:6.8.23 Up 3 minutes (healthy) 9200/tcp, 9300/tcp
28423cf32dc6 rc_cluster_services-nginx-errors-1 nginx:1.27.0 Up 3 minutes 80/tcp
000cf8d38e29 rc_cluster_services-nginx-statics-1 nginx:1.27.0 Up 3 minutes (healthy) 80/tcp
08106e123afe rc_cluster_services-redis-1 redis:7.2.5 Up 3 minutes (healthy) 6379/tcp
We’ll perform an upgrade of our rhodecode instances by running:
$ ./rcstack self-update
...
$ ./rcstack -v
5.23.0
$ ./rcstack stack-upgrade rhodecode
...
Upgrade to rhodecode/rhodecode-ce:5.2.0 completed
After the upgrade process finished, we check the status of our instances.
$ ./rcstack status
Running hostname: http://rhodecode.local
CONTAINER ID NAMES IMAGE STATUS PORTS
6cbdfb7d2f13 rc_cluster_apps-celery-1 rhodecode/rhodecode-ce:5.2.0 Up 18 seconds
94553c2ecf5d rc_cluster_apps-celery-beat-1 rhodecode/rhodecode-ce:5.2.0 Up 16 seconds
d6b5ef17a013 rc_cluster_apps-rhodecode-3 rhodecode/rhodecode-ce:5.2.0 Up 50 seconds (unhealthy)
f84d8f6f5a1b rc_cluster_apps-sshd-2 rhodecode/rhodecode-ce:5.2.0 Up 33 seconds (unhealthy)
ea7eb18733ca rc_cluster_apps-svn-2 rhodecode/rhodecode-ce:5.2.0 Up 26 seconds (healthy)
04b365eeca78 rc_cluster_apps-vcsserver-3 rhodecode/rhodecode-ce:5.2.0 Up 58 seconds (healthy)
9f78b0fa8cb7 rc_cluster_metrics-grafana-1 grafana/grafana:9.5.18 Up 6 minutes 3000/tcp
4d25f8d776e2 rc_cluster_metrics-loki-1 grafana/loki:2.9.8 Up 6 minutes 3100/tcp
663eb2e5796b rc_cluster_metrics-node-exporter-1 prom/node-exporter:v1.8.0 Up 6 minutes 9100/tcp
08a1a44a04e4 rc_cluster_metrics-prometheus-1 prom/prometheus:v2.51.2 Up 6 minutes 9090/tcp
5113b1ef25c6 rc_cluster_metrics-promtail-1 grafana/promtail:2.9.8 Up 6 minutes
39da8c645e3f rc_cluster_metrics-statsd-exporter-1 prom/statsd-exporter:v0.26.1 Up 6 minutes (healthy) 9102/tcp, 9125/tcp, 9125/udp
4fa1573b0e7d rc_cluster_router-traefik-1 traefik:v2.11.6 Up 8 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp, 0.0.0.0:9022->9022/tcp, :::9022->9022/tcp
eed6cd70c3b5 rc_cluster_services-channelstream-1 channelstream/channelstream:0.7.1 Up 7 minutes (healthy) 8000/tcp
eb0ec9431300 rc_cluster_services-database-1 postgres:14.13 Up 7 minutes (healthy) 5432/tcp
2859ca567851 rc_cluster_services-elasticsearch-1 elasticsearch:6.8.23 Up 7 minutes (healthy) 9200/tcp, 9300/tcp
28423cf32dc6 rc_cluster_services-nginx-errors-1 nginx:1.27.0 Up 7 minutes 80/tcp
000cf8d38e29 rc_cluster_services-nginx-statics-1 nginx:1.27.0 Up 7 minutes (healthy) 80/tcp
08106e123afe rc_cluster_services-redis-1 redis:7.2.5 Up 7 minutes (healthy) 6379/tcp
We found out that there are some unhealthy containers. Here’s how we can rollback our installation back to 5.1.0 version.
Set the image to 5.1.0 from 5.2.0, and set rcstack back to 5.22.0
$ ./rcstack cli set-image 5.1.0
$ ./rcstack self-update --force --cli-revision=v5.22.0 --docker-revision=v5.22.0
RhodeCode Guarantees that bugfix releases, e.g 5.2.0 -> 5.2.1 won’t have any backward incompatible database changes. In such cases the rollback process would be finished.
In our example we did a two major release upgrade. I.e 5.1.0 -> 5.2.0 It means we have to also restore our database from before the upgrade. After this has been done, the last step should be to start our instances again.
Stop and start whole stack and let previous image be used
$ ./rcstack stack all down && ./rcstack stack all up -d
Status command will show us that our instances are back in the 5.1.0 version.
$ ./rcstack status
Running hostname: http://rhodecode.local
CONTAINER ID NAMES IMAGE STATUS PORTS
bfd375bd6fb3 rc_cluster_apps-celery-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes
02deca05beda rc_cluster_apps-celery-beat-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes
e25335f717ab rc_cluster_apps-rhodecode-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
825040c8f310 rc_cluster_apps-sshd-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
3e2afccc5d78 rc_cluster_apps-svn-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
beb5e927b116 rc_cluster_apps-vcsserver-1 rhodecode/rhodecode-ce:5.1.0 Up 2 minutes (healthy)
9f78b0fa8cb7 rc_cluster_metrics-grafana-1 grafana/grafana:9.5.18 Up 3 minutes 3000/tcp
4d25f8d776e2 rc_cluster_metrics-loki-1 grafana/loki:2.9.8 Up 3 minutes 3100/tcp
663eb2e5796b rc_cluster_metrics-node-exporter-1 prom/node-exporter:v1.8.0 Up 3 minutes 9100/tcp
08a1a44a04e4 rc_cluster_metrics-prometheus-1 prom/prometheus:v2.51.2 Up 3 minutes 9090/tcp
5113b1ef25c6 rc_cluster_metrics-promtail-1 grafana/promtail:2.9.8 Up 3 minutes
39da8c645e3f rc_cluster_metrics-statsd-exporter-1 prom/statsd-exporter:v0.26.1 Up 3 minutes (healthy) 9102/tcp, 9125/tcp, 9125/udp
4fa1573b0e7d rc_cluster_router-traefik-1 traefik:v2.11.6 Up 4 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp, 0.0.0.0:9022->9022/tcp, :::9022->9022/tcp
eed6cd70c3b5 rc_cluster_services-channelstream-1 channelstream/channelstream:0.7.1 Up 3 minutes (healthy) 8000/tcp
eb0ec9431300 rc_cluster_services-database-1 postgres:14.13 Up 3 minutes (healthy) 5432/tcp
2859ca567851 rc_cluster_services-elasticsearch-1 elasticsearch:6.8.23 Up 3 minutes (healthy) 9200/tcp, 9300/tcp
28423cf32dc6 rc_cluster_services-nginx-errors-1 nginx:1.27.0 Up 3 minutes 80/tcp
000cf8d38e29 rc_cluster_services-nginx-statics-1 nginx:1.27.0 Up 3 minutes (healthy) 80/tcp
08106e123afe rc_cluster_services-redis-1 redis:7.2.5 Up 3 minutes (healthy) 6379/tcp