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:
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.
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.