Rolling back

In software, things go wrong sometimes.

It is inevitable, so best if you have a default action that you can perform routinely.

That's why GimletD provides rollback tooling out of the box. On this page you will learn how to use it, and what does it do actually.

Getting a quick overview

To roll back, first you have to get a good picture of what was released and when.

List the recent releases with Gimlet CLI:

gimlet release list --env staging --app my-app                  
staging/my-app laszlocph/gimletd-test@44e6c26866 (just now)
        26fc62ff - Bugfix 123 Laszlo
        my-app/master my-app-34666da3-ae77-45d5-843b-7b4bce1edf55
        https://github.com/owner/repo/commits/0017d995e

staging/my-app laszlocph/gimletd-test@c8d8c1d192 (1 week ago)
        26fc62ff - Bugfix 123 Laszlo
        my-app/master my-app-c19a27dd-25a0-4d0b-b932-db4c7c660996
        https://github.com/owner/repo/commits/0017d995e

staging/my-app laszlocph/gimletd-test@d2d0a416e6 (1 week ago)
        26fc62ff - Bugfix 123 Laszlo
        my-app/master my-app-34666da3-ae77-45d5-843b-7b4bce1edf55
        https://github.com/owner/repo/commits/0017d995e

Roll back

Once you identified the broken release, roll back to the preceding one. GimletD will revert all gitops commits made after the desired release.

gimlet release rollback --env staging --app my-app --to c8d8c1d192

And verify the release state:

gimlet release list --env staging --app my-app                  
staging/my-app laszlocph/gimletd-test@44e6c26866 **ROLLED BACK** (1 minute ago)
        26fc62ff - Bugfix 123 Laszlo
        my-app/master my-app-34666da3-ae77-45d5-843b-7b4bce1edf55
        https://github.com/owner/repo/commits/0017d995e

staging/my-app laszlocph/gimletd-test@c8d8c1d192 (1 week ago)
        26fc62ff - Bugfix 123 Laszlo
        my-app/master my-app-c19a27dd-25a0-4d0b-b932-db4c7c660996
        https://github.com/owner/repo/commits/0017d995e

staging/my-app laszlocph/gimletd-test@d2d0a416e6 (1 week ago)
        26fc62ff - Bugfix 123 Laszlo
        my-app/master my-app-34666da3-ae77-45d5-843b-7b4bce1edf55
        https://github.com/owner/repo/commits/0017d995e

What does rollback do

Rollbacks in GimletD are preforming revert commits on all gitops commits that were made later than the release that you are rolling back to.

With this approach you can be sure that a previous release will be applied verbatim on the cluster. No template re-renders, no waiting on the machinery.

Roll back or roll forward

You can't roll back an already rolled back commit. Best to roll forward in this case.

Rollbacks are made for a quick mindless remedy to jump back to previously active gitops state.

If you want to be more creative, best to roll forward by releasing an artifact.

Next steps

Now that you reached the end of the documentation, you might want to jump right in and install GimletD