ReleaseEngineering/How To/Upload to internal Pypi

From MozillaWiki
Jump to: navigation, search


Mozharness no longer uses packages from the PuppetAgain repositories! Instead, it uses and, both served from the same directory.


In order to upload to internal Pypi a package you simply need to run the script bellow :

Downloading or Updating the repo is available on the braindump repository which can be clone using:

hg clone

Note: Make sure that you are using the latest revision of the script. You can update your repo with hg pull from within the local repository folder.

Obtaining Package File(s)

Next you'll need to obtain the package file(s) you intend to upload. Sometimes the requester will provide the desired urls directly, in which case you can wget them and verify their md5 hash.

If a package version was requested, you can use the 'utils/download_from_pypi' script, e.g:

 ./download_from_pypi scipy==1.2.3

This will download all release files for the specified version of the package and verify their sha256 hash. Multiple packages can also be specified:

./download_from_pypi scipy==1.2.3 Pillow==6.1.0

This might result in more files than you need to upload (e.g, maybe you don't care about Python 2.7 wheels). You can use shell expansion to delete any packages you don't need:

rm *cp27* *.egg *.exe

The downloaded files can now be fed into the upload script.

Uploading to PyPi

First ensure your repository is up-to-date.

The upload script needs to use your LDAP username to upload. If your machine user is the same as your LDAP, all you have to do is run the following command:

./ <path/to/file1> <path/to/file2> ...

If your machine user is different than your LDAP, you can set it with the $USER environment variable:

USER=<ldap username> ./ <path/to/file1> <path/to/file2> ...

The script will practically copy the file to relengwebadmin and move it where the files are located for pypi internal (/mnt/netapp/relengwebadmin/pypi/pub) then will change the rights and upload the file to

If everything worked fine, you should now have a link that looks like this:

See also