我在 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