Разверните пакеты Python в Pypi с помощью github+travis

задняя часть Python GitHub модульный тест

Я размещаю код Python на github, а затем публикую пакет в Pypi.Обычные шаги операции — отправить обновленный код на github, а затем вручную обновить пакет до pypi, что довольно громоздко, поэтому я подумал об использовании github + travis. -ci для создания автоматизированной среды развертывания.

зарегистрировать pypi

доступpypi.orgнажмитеRegisterЗарегистрируйте учетную запись и запомните свое имя пользователя и пароль.

Создайте файл setup.py

Файл setup.py находится в корневом каталоге пакета.Содержимое примера выглядит следующим образом:

#!/usr/bin/env python
from setuptools import setup, find_packages

with open("README.md", "r") as fh:
    long_description = fh.read()

with open('requirements.txt') as f:
    requirements = [l for l in f.read().splitlines() if l]

setup(name="python-weixin",  # 项目名
      version="0.3.2",       # 版本号
      description="Python Weixin API client support wechat-app",  #简介
      long_description=long_description,  # 长简介 这里使用的 readme 内容
      long_description_content_type="text/markdown",
      license="BSD",   # 授权
      install_requires=requirements, # 依赖
      author="gusibi",  # 作者
      author_email="xxx@gmail.com",  # 邮箱
      url="https://github.com/gusibi/python-weixin",  # 地址
      download_url="https://github.com/gusibi/python-weixin/archive/master.zip",
      packages=find_packages(),
      keywords=["python-weixin", "weixin", "wechat", "sdk", "weapp", "wxapp"],
      zip_safe=True)

Особого внимания заслуживаетpackagesПараметр используется для объявления каталогов, которые будут включены в ваш пакет.Здесь setuptools используется для автоматического определения, какие пакеты включать.

Настроить travis-ci

github предоставляет множество способов интеграции, здесь мы выбираем Travis-ci

Доступ после выбораtravis-ci.com/profile, если вы впервые используете travis-ci, вы можете использовать учетную запись github для входа в систему, а затем выбрать соответствующую библиотеку github для активации.

Затем в корневой каталог кодовой базы github добавьте.travis.ymlдокумент.

language: python
python:   # 指定运行环境,这里会分别在 2.7 和 3.5 运行
  - '2.7'
  - '3.5' 
install:
  - pip install -r requirements.txt   # 安装依赖
script: python test_example.py  # 如果有单元测试这里应该执行单元测试

script является обязательной командой, обычно, если есть модульный тест, модульный тест должен быть выполнен здесь

Добавить конфигурацию развертывания Pypi

в.travis.ymlДобавьте модуль развертывания вTravis CIдобиться автоматического развертывания,

language: python
python:
- '2.7'
- '3.5'
install:
- pip install -r requirements.txt
script: python test_example.py
deploy:
  provider: pypi
  user: goodspeed     # pypi 用户名
  password: password  # pypi 密码
  on:
    python: 2.7
    tags: true
    branch: master

существуетdeployраздел, мы указываемproviderдля pypi, затем добавьтеuser,password.

существуетonмы объявляем некоторую специальную конфигурацию, такую ​​как:

  • brance: masterЭто означает, что только основная ветвь будет выполнять развертывание пакета.
  • python: 2.7Это означает, что развертывание пакета выполняется только в версии python 2.7.
  • tags: trueЭто означает, что развертывание пакета выполняется только при выпуске новой версии.

Конкретная ссылка на конфигурацию:Conditional-Releases-with-on

зашифрованный пароль

В приведенной выше конфигурации используется пароль в виде открытого текста, который раскрывает учетную запись pypi, что слишком небезопасно. Рекомендуется здесьtravis-encryptЗашифрованный пароль.

Установить трэвис-шифровать
pip install travis-encrypt

затем в.travis.ymlВыполнить в каталоге:

travis-encrypt --deploy gusibi python-weixin .travis.yml
Password: # 在这里输入pypi 密码

здесьgusibi python-weixinЕго необходимо заменить соответствующим именем пользователя и репозиторием github.

Ссылка на команду:travis-encrypt

После выполнения часть пароля будет заменена зашифрованным секретным ключом, и, наконец,.travis.ymlСодержание следующее:

language: python
python:
- '2.7'
- '3.5'
install:
- pip install -r requirements.txt
script: python test_example.py
deploy:
  provider: pypi
  user: goodspeed
  password:
    secure: cjQdXGKkNpwKmGgEhONtd2YR+PF44gtZgMegv5O3CRsszocaRqxcBdfwi0qz6KupLMWl/WTq+bYtzf42lpytMe7cB/CPA2sCUDEo6qyIE+Brb5J57GUhd9HIhP5F44BHKWzBnYFbgPsQ2k1ckEDJsUp5yyFvUBkQmv3+LOo9Kf492oCQlgnzaGSRtPQaG56XdLKgCZrxdtfteTalTbjQO7w/GNm5lBn4l7iY1qWiQmzFxkUuZu317yAnohdH84fq9Ozov4S3nPNSTt800HjHkXwaBzxMuJ2SJBadZAW/abCvk34IPyvxjy7upNNLq80/yvgYKzxWBklcP9LxJX2Pwk9NtTY1zUEykkwdBVxZShhBXtWDma/yWQp2RdCVZtLS4GTg4X61PMgH0iwzwzGW8LARj2ZMowQoPipUYCJ7qUfyXrxU05ypizWKIIfrqdRh8Twj9Jhyg/fAoRygCoXNtMqwSmomjkwl6f1i+6lAQENdmVKQTesP56r/olXKb4rhrOgyhj7anJd3F/SZ+g8jQFHHGLcaSkEoVXL6BFPDMxYdMRmx5HKonP9uQO74ZdeevkHK0wFzSbjqpKdVzeuYuyPiHnDyooyjGL+2BzE/Zzo5KCNEflAE22kAuAbjXCuJji7+j47QohrlYjmj2+F7NDBE5sJRp3yLJWIEPqLND/k=
  on:
    python: 2.7
    tags: true
    branch: master

После отправки кода зайдите на travis-ci.org, и вы увидите, что ci запущен и строится:

Одновременно создаются два задания: среда python2.7 и среда python3.5.

Но на данный момент пакет не развернут в pypi, и необходимоgithub releases 页面重新发布一个版本来触发部署.

Ссылка на ссылку


Наконец, поблагодарите мою девушку за ее поддержку и терпимость, чем ❤️

Вы также можете ввести следующие ключевые слова в официальном аккаунте, чтобы получить исторические статьи:公号&小程序 | 设计模式 | 并发&协程 | note