Currently, our CI pins charmcraft (and any other build dependency) to a channel (typically latest/edge or latest/candidate). When we release a version (eg: push code to a track/* branch) to publish it, those build tools remain pinned to channels that change over time as the tools are updated. This means that we have no reliable way to rebuild exactly the same as before, but instead just the charm with new build tools.
Because charmcraft and other tools have introduced backward incompatible changes or bugs, this has often meant when we go to backport or bugfix a released track we cannot build it at all, blocking us from doing these tasks.
What needs to get done
modify our CI to allow for pinning build tools to a revision, not just a channel. This will require:
implement automation that lets us pin these tools as we create a branch (avoiding the need for a human to look up the correct revision for every branch creation)
Definition of Done
build dependencies can be statically pinned in all charm repo branches
Context
Currently, our CI pins
charmcraft
(and any other build dependency) to a channel (typicallylatest/edge
orlatest/candidate
). When we release a version (eg: push code to atrack/*
branch) to publish it, those build tools remain pinned to channels that change over time as the tools are updated. This means that we have no reliable way to rebuild exactly the same as before, but instead just the charm with new build tools.Because charmcraft and other tools have introduced backward incompatible changes or bugs, this has often meant when we go to backport or bugfix a released track we cannot build it at all, blocking us from doing these tasks.
What needs to get done
Definition of Done