使用github+travis将Python包部署到Pypi

我在 github 托管 Python 代码,然后将包发布到 Pypi,通常的操作步骤是,更新完代码将提交到 github ,然后手动将包更新到 pypi,这样比较繁琐,就想到了使用github+travis-ci 构建一个自动部署环境。

注册 pypi

访问https://pypi.org点击注册账号,记住自己的用户名密码。

创建 setup.py 文件

setup.py 文件放置于包的根目录,示例内容如下:

#!/usr/bin/env python

fromsetuptoolsimportsetup,find_packages

withopen("README.md","r")asfh:

long_description=fh.read()

withopen('requirements.txt')asf:

requirements=[lforlinf.read().splitlines()ifl]

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)

以上特别需要注意的是参数,用来申明你的包里面要包含的目录,这里使用setuptools自动决定要包含哪些包。

配置 travis-ci

github 提供了多种集成方式,这里我们选择 Travis-ci选择后访问https://travis-ci.com/profile,如果是第一次使用 travis-ci 可以使用 github 账号登录,然后选择对应的 github 库激活。

然后在 github 代码库的根目录添加文件。

script 是一个必须的命令,通常如果有单元测试的话这里应该执行单元测试添加 Pypi 部署配置

通过在中添加 deploy 模块,实现自动部署,

在部分,我们指定为 pypi,然后添加、。在部分我们声明一些特殊的配置,比如:

意思是只有 master 分支才执行打包部署

意思是只在 python 2.7 版本执行打包部署

意思是只有在发布一个新的版本时才执行打包部署

具体配置参考:Conditional-Releases-with-on加密密码

上面的配置使用的是明文密码,这样就把pypi 账号公开了,太不安全。这里推荐使用加密密码。安装 travis-encrypt

pip install travis-encrypt

然后在所在目录执行:

travis-encrypt --deploy gusibi python-weixin .travis.yml

Password:# 在这里输入pypi 密码

这里需要替换成相对应的 github username 和 repository。命令参考:travis-encrypt执行完之后password 部分旧会被加密后的秘钥代替,最终内容如下:

将代码提交之后,访问 travis-ci.org 会看到已经触发了 ci ,正在构建:

这里有两个 job 正在同时构建,分别是 python2.7 环境和 python3.5 环境。但是这时并没有把包部署到 pypi,还需要在。

参考链接

[https://github.com/romgar/5minutes/blob/master/content/articles/howto-deploy-python-package-on-pypi-with-github-and-travis.md][https://github.com/romgar/5minutes/blob/master/content/articles/howto-deploy-python-package-on-pypi-with-github-and-travis.md]

https://pypi.org

https://github.com/gusibi/python-weixinn

https://pypi.org/project/travis-encrypt/

https://docs.travis-ci.com/user/deployment#Conditional-Releases-with-on

最后,感谢女朋友支持和包容,比❤️也可以在公号输入以下关键字获取历史文章:|||

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180725G1UCIW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券