PyPI repo and development releases

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

PyPI repo and development releases

dsuzuki
My organization has been using Artifactory Pro to host PyPI repos for a while, and now I'm setting up a separate development repo that will be integrated into our Jenkins-based build pipeline. The development packages are numbered using the PEP-440 development release scheme: major.minor.micro.dev#, where the dev release number is the Jenkins build number.

This seems to be working reasonably well, but I've noticed that within the repository the dev releases don't get placed in version directories that are under the main package directory. Instead, all of their files get placed at the top level of the repository. This doesn't seem to prevent pip from finding the right package to install, but in the long run it will probably become more difficult to browse the repo when everything's sitting in one place. The PyPI metadata does show the correct full version number for each package.

I've tried a couple of different repo layouts to see if that would make a difference, but it doesn't seem to. Would a custom layout work here?

Example of repo layout with one dev release and one final release of the package:
Repo image

Reply | Threaded
Open this post in threaded view
|

Re: PyPI repo and development releases

dsuzuki
I've since started publishing final releases, and now I realize that this isn't about dev versions vs. final versions.  Any Python package that I publish using the Jenkins Artifactory plugin ends up at the root level of the repo.  If I deploy using setup.py, the package lands in a nested directory.  So now I'm trying to figure out if I can configure the Jenkins plugin to do the latter.
Reply | Threaded
Open this post in threaded view
|

Re: PyPI repo and development releases

dsuzuki
This post has NOT been accepted by the mailing list yet.
In reply to this post by dsuzuki
It looks like this is really just a problem with the Jenkins-Artifactory plugin and how it handles freestyle artifacts.  It's difficult to make that integration behave like the Artifactory PyPI emulation, so I might just use setuptools to manage the publishing.