Publishing a Package to PyPI using Travis

SRE has indicated that we should not be building new functionality on Travis, but should instead be using GitHub Actions. This section may fall out of date from disuse.


A guide to publishing a package to PyPI using Travis. You should publish packages on which your team relies to PyPI instead of installing them from GitHub.

P.S. It's pronounced "Pie-P-Eye"

Step-by-step guide

  1. If you're not familiar with how to package a Python module and and share it on PyPI, get your bearings by reading this guide.
  2. Write a setup.py for your package.
    1. Make sure you:
      1. Indicate a license type, AGPL or Apache (license). Link to which license you should use: /wiki/spaces/OPEN/pages/13959332
      2. Indicate which packages your package requires in order to run (install_requires)
      3. Use "edX" as the package author (author)
      4. Use "oscm@edx.org" as the package author's email address (author_email)
    2. A simple example is here.
    3. If your package includes console scripts, see this example.
  3. Test your setup.py by publishing your package to the PyPI staging server.
    1. Create an account at https://testpypi.python.org/pypi.
    2. Follow the instructions in the guide linked above.
  4. There is a job which can create your .travis.yml credentials and publish to PyPI here: https://tools-edx-jenkins.edx.org/job/travis_credentials_jobs/job/publish_to_PyPI/build?delay=0sec
  5. After credentials are updated in .travis.yml, to publish a new version of your package to PyPI, update the version in setup.py, then push a corresponding tag to GitHub.
  6. You're done! Don't forget to update your requirements files so that they install your package from PyPI.


Find your package at https://pypi.python.org/pypi/[package-name]/[version]

Troubleshooting

If your tag is in GitHub, but is not starting a build in Travis, or if you are deploying from too many sub-builds in Travis, see the following changes to .travis.yml.