[Cubicweb] a script to automatically upgrade your cube dependencies if they pass your tests
cortex at worlddomination.be
Thu May 2 14:21:46 CEST 2019
In the context of migrating a CW instance to a more recent version of
cubicweb one of the reccuring task is to upgrade all its dependencies.
That can be a long a repetitive task (pick a new version, launch test,
oupsi I forgot to change import for newstyle cube, relaunch test, fix
bugs, repeats etc...) so I've made a script to automate as much as
possible this part of the work.
And it really does that workflow automatically:
for every dependency in __pkginfo__.py:
- update it
- if it's a cube in newstyle, change imports
- if it passes tests, commit
- otherwise try to find the newest version that passes it then commit
- print a nice summary with link to failed logs for debugging
And the usage is very simple:
pip install --user git+https://github.com/Psycojoker/autoupgradedependencies
# in the folder with the .hg
autoupgradedependencies "test command"
autoupgradedependencies "tox -e py27 --recreate"
autoupgradedependencies "py.test tests"
Be aware that this can be quite long since tests on cubes are
generally quite long.
This script will probably ends up in a jenkins or something similar at
one point :)
On of the limitation is that `__depends__` needs to be statically
declared in the __pkginfo__.py (that means not generated in python
with conditions and others) as it is parsed why RedBaron (but I've yet
to see a `__pkginfo__.py` in which it's the case.)
The code is available here
https://github.com/Psycojoker/autoupgradedependencies it's pretty
young so there might be bugs (but it works on one project on which
I've used it), so feel free to seend patches, feedback etc... :)
Have a nice day <3
Laurent Peuch -- Bram
More information about the Cubicweb