Info |
---|
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.
...
- 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.
- Write a setup.py for your package.
- Make sure you:
- Indicate a license type, AGPL or Apache (
license
). Link to which license you should use: /wiki/spaces/OPEN/pages/13959332 - Indicate which packages your package requires in order to run (
install_requires
) - Use "edX" as the package author (
author
) - Use "oscm@edx.org" as the package author's email address (
author_email
)
- Indicate a license type, AGPL or Apache (
- A simple example is here.
- If your package includes console scripts, see this example.
- Make sure you:
- Test your setup.py by publishing your package to the PyPI staging server.
- Create an account at https://testpypi.python.org/pypi.
- Follow the instructions in the guide linked above.
- Get the pypi edX credentials from devops, or ask them to do these steps
- An example
.travis.yml
is here. - Travis documentation on PyPI deployment. To 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
- 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.
- You're done! Don't forget to update your requirements files so that they install your package from PyPI.
Install twine, build a kit, and upload it:
Code Block |
---|
pip install twine wheel
python setup.py sdist bdist_wheel
twine upload -u edX -p Q6GQT_THE_PASSWORD_6H8DF dist/* |
Contact DevOps to get credentials for the edX PyPI account. Use the Travis CI command line client to encrypt the password:
Code Block | ||
---|---|---|
| ||
travis encrypt --add deploy.password |
...