使用Travis CI 发布软件版本


Travis CI是什么

先说说CI——Continuous integration,持续集成,是一种软件工程流程。持续集成是指在一个项目中,任何人对代码库的任何改动,都会触发CI服务器自动对项目进行构建,自动运行测试,自动编译,甚至自动部署到测试环境。

这样做的好处就是,随时发现问题,随时修复。因为修复问题的成本随着时间的推移而增长,越早发现,修复成本越低。

Travis CI 是在线托管的CI服务,用Travis来进行持续集成,不需要自己搭服务器,在网页上点几下就好,用起来更方便。
最重要的是,Travis CI 对 Github 友好,这也是很多程序员喜欢 Travis CI 的理由。写完代码,提交,让 Traivs CI 跑自动化测试。
Travis CI 对开源项目免费,如果是私有项目,人家可是要收费的。

如何在开源项目中引入Travis CI

首先注册Travis CI, 让 travis ci 能够访问你的github 项目。
然后在根目录下添加一个名为 .travis.yml的配置文件即可。

Synapse是一个基于浏览器的CKB插件钱包,是一个典型的Nodejs项目,ta的travisCI配置如下:

language: node_js #语言
dist: xenial # 操作系统 ubuntu xenial
node_js:
  - 12.16.2 #版本

cache: # 保存缓存,加快测试速度
  - npm
  - yarn

before_install: #运行项目之前的操作
  - npm install -g yarn
  - yarn install

script:  #主要的代码
  - yarn test  #运行测试
  - yarn build #打包,代码在dist文件夹

这样你每次push 代码到github,就会自动触发Travis CI 运行测试。
运行成功如下:

你还可以配置通知,在测试失败的时候发送信息:

notifications:
  email:
    recipients:
      - [email protected]
      - [email protected]
    on_success: never # default: change
    on_failure: always # default: always

发布版本

对于开源项目来说,在打上新tag,集成测试成功后,需要对外发布一个可用的版本,如果每次都是人工操作,很不美好。

这些脏活累活,就可以交给Travis CI来做了,配置如下:

before_deploy: # deploy之前的工作
  - mv dist synapse-extension  #在之前yarn build之后的代码放在了dist文件夹
  - zip -q -r synapse-extension.zip synapse-extension  # 打包压缩
  - shasum -a 256 synapse-extension.zip | tee synapse-extension.asc # 校验值并输出结果到console

deploy: 
  provider: releases # 操作 repo 的 releases 页面
  token: $GITHUB_TOKEN # 使用github token验证身份,进行操作
  file:
    - synapse-extension.zip # 上传的文件
    - synapse-extension.asc #上传的文件
  skip_cleanup: true # 要上传文件到 release,所以不能自动清除
  on: 
    tags: true #  只有打 tag 时才运行

申请 Github Access Token

这里有个 $GITHUB_TOKEN, 让 Travis CI 取得发布版本的权限

Personal access tokens 申请token,

选择 public_repo

得到token

回到 Travis CI 设定頁面,加一个新的 Environment Variables
key就是 GITHUB_TOKEN,value就是上一步生成的token。

大功告成,奥利给!


参考: