我在 github 托管 Python 代码,而后将包发布到 Pypi,一般的操做步骤是,更新完代码将提交到 github ,而后手动将包更新到 pypi,这样比较繁琐,就想到了使用github+travis-ci 构建一个自动部署环境。python
访问pypi.org 点击Register
注册帐号,记住本身的用户名密码。git
setup.py 文件放置于包的根目录,示例内容以下:github
#!/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自动决定要包含哪些包。小程序
github 提供了多种集成方式,这里咱们选择 Travis-ci设计模式
选择后访问 travis-ci.com/profile,若是是第一次使用 travis-ci 可使用 github 帐号登陆,而后选择对应的 github 库激活。安全
而后在 github 代码库的根目录添加 .travis.yml
文件。bash
language: python
python: # 指定运行环境,这里会分别在 2.7 和 3.5 运行
- '2.7'
- '3.5'
install:
- pip install -r requirements.txt # 安装依赖
script: python test_example.py # 若是有单元测试这里应该执行单元测试
复制代码
script 是一个必须的命令,一般若是有单元测试的话这里应该执行单元测试markdown
经过在 .travis.yml
中添加 deploy 模块, 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
。app
在 on
部分咱们声明一些特殊的配置,好比:
brance: master
意思是只有 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 username 和 repository。命令参考:travis-encrypt
执行完以后password 部分旧会被加密后的秘钥代替,最终 .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 ,正在构建:
这里有两个 job 正在同时构建,分别是 python2.7 环境和 python3.5 环境。
可是这时并无把包部署到 pypi,还须要在 github releases 页面从新发布一个版原本触发部署
。
最后,感谢女友支持和包容,比❤️
也能够在公号输入如下关键字获取历史文章:公号&小程序
| 设计模式
| 并发&协程
| note