Publier automatiquement sur PiPy avec Travis

Introduction

Automate all the things!

Aujourd'hui, ce sera un court article concernant la publication automatique sur PiPy en utilisant Travis.

Beaucoup d'articles sortent en ce moment pour parler de CI, mais cela concerne surtout les applications. Il existe encore peu de littérature concernant le CI pour des libs.

J'ai découvert cette possibilité en lisant le contenu de cookiecutter-pypackage. Il s'agit d'un template de lib python qui offre justement cette possibilité. Allez voir si vous ne connaissez pas, cookiecutter offre plein de possibilités.

Vous pouvez l'utiliser pour un nouveau projet mais je vais rapidement expliquer ici comment le mettre en place sur un projet déjà existant. Pour info, il y a aussi une documentation complète en anglais.

La partie technique

On va partir du principe que vous avez déjà un build Travis existant. Si c'est pas le cas, il y a déjà plein d'articles qui couvrent le sujet, et la documentation de Travis est assez claire. Si vous n'avez pas de suite de test (Ouuuh, c'est pas bien), vous pouvez utiliser la commande true en script.

Bien qu'on automatise la publication, on parle de phase de déploiement dans le cadre du CI. Voici un snippet que je vais expliquer après.

deploy:
  provider: pypi
  distributions: sdist bdist_wheel
  user: PIPY_USERNAME
  password:
    secure: REPLACE_THIS
  on:
    tags: true
    python: 3.6

Il suffit de rajouter ce snippet à la fin du fichier .travis.yml et de suivre les instructions pour utiliser vos identifiants. Avec ça, il vous suffit de push un tag sur github pour déclencher la publication d'une nouvelle version sur PyPi.

Pourquoi faire ça ?

Il y a des tas de raisons pour mettre ce système en place.

Mais surtout, le plus important: c'est cool.

Le gang des chats rebelles

Conclusion

Faites-le, ça prend 5 minutes et il n'y a que des avantages à le faire.