Make app rollbacks more robust #107
Labels
No Label
breaking-change
bug
CI/CD
design
documentation
duplicate
enhancement
help wanted
invalid
plugin
question
secrets
shell-completion
versioning
wontfix
No Milestone
No Assignees
2 Participants
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: coop-cloud/abra#107
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Just had to rollback
gitea
and it was quite a manual process. We could improve here and I think that ties into coop-cloud/organising#48 and the specific question of "what happens when something goes wrong".We have
abra app <app> rollback <service>
but this doesn't always mean that it will roll back to a previous version! Maybe you deployed the same version twice (.e.g re-applying labels) and the rollback only switches back to the previous container that has other labels.Currently we only keep the current version + digest in the
abra.sh
so it is not possible to know what is actual previous tag and digest as we are doing it all manually now.I think if coop-cloud/organising#51 is successful then we could consider reading having
abra
itself read the RSS, get the tags, calculate the digests and then understand what versions are available and what can be done. This would reduce workload for the packaging side of things and make version handling more robust on theabra
side of things.It would be great to extend then our
rollback
command. Something like:See #113 (comment).
Think this might now be addressed by #135:
One question I have is whether
deploy --upgrade
should enforce that it's actually an upgrade, androllback
should enforce that it's actually a downgrade? If we can rely on the order of versions inabra-apps.json
then that might not be too tricky, but beware some apps likefilestash
which use non-sequential UIDs for their versions 🤦😱 😱 😱
Wow good catch. Should we just nip that in the bud now and change the data structure of the versions to have a key that is a sortable value that we control? Perhaps a date string? An integer? Not sure.
Do we even need
--upgrade
now? Maybe let's discuss this once all the stuff is merged and we can think through some consolidation of the CLI.AFAIK JSON lists preserve ordering, so as long as we take care to add new versions to the end of the
versions
list then I think we're OK - and it'd be really nice to avoid introducing an extra layer of versioning. Maybe this is an area where we can try and help upstreams?See #137
OK, agreed! So, we rely on
app-json.py
then to guarantee our ordering. I'll keep this in mind and hopefully we don't run into issues. Should be fine 🙏See you all in #137.