最近编写了一个vscode插件,又懒着不想发布到vscode,想着直接在vscode里安装即可,那需要我把build好的插件放到github releases里,每次更新插件后可以自动打包并发布。当当当,利用travis做到了这一点,其实travis可以做很多功能的。
Travis CI是什么?
官网地址: https://travis-ci.org/
Test and Deploy with Confidence
Easily sync your GitHub projects with Travis CI and you’ll be testing your code in minutes!
轻松的集成到github里,使我们的项目便于测试和部署。
注册登陆travis CI
直接点击官网有上角的Signin with github即可。
在个人中心可以看到所有关联的github项目,但此时还不能跑travis ci,我们还缺少了一个重要的东西:.travis.yml
.travis.yml
.travis.yml文件是我们的自动化测试/部署的声明文件,当Travis CI检测到我们的.travis.yml文件,会在Travis Dashboard里看到正在跑的自动化,帮助我们测试/构建/部署我们的应用。
构建一个node.js应用
现在有一个vscode插件项目,我为此项目编写了一个.travis.yml文件:
1 | env: |
如何编写.travis.yml文件呢,根据项目语言,查看对应的travis文档即可。
我这里使用的node.js开发的应用,所以我的.travis.yml文件language配置如下:1
2
3
4
5
6## 选择运行语言环境 node_js
language: node_js
## 指定测试时的node.js版本,可以指定多个,会依此验证测试。
node_js:
- 10
在node.js环境里,默认会执行如下命令:1
2
3
4
5## 安装项目依赖
npm install or npm ci
## 执行测试脚本
npm test
所以在我的.travis.yml文件里没有这两条命令。
发布vscode插件到releases page
当有新版本插件发布时,release version会有变化,这个一般体现在package.json文件里的version字段上。
所以我使用如下命令获取新的version:1
2
3env:
global:
- PACKAGE_VERSION=`node -p -e 'require("./package.json").version'`
env是travis里的环境,把node -p -e ‘require(“./package.json”).version’获取的version赋值到PACKAGE_VERSION变量上,然后在下面打印了一次,看是否是预期值:1
2
3script:
- echo package version...
- echo $PACKAGE_VERSION
然后在发布之前,需要编译node.js代码并打包,这里使用到了vscode的vsce命令:1
2
3
4
5before_deploy:
## 全局安装vsce
- npm install -g vsce
## 打包vscode插件
- vsce package
此时已经编译打包好应用了,如何发布到releases page呢?
- 首先获取github oauth token,这样使travis有操作release page的权限。参考:https://blog.wyrihaximus.net/2015/09/github-auth-token-on-travis/
- 把获取的github oauth token配置在travis ci对应项目的settting里。参考:https://blog.wyrihaximus.net/2015/09/github-auth-token-on-travis/
- 配置.travis.yml文件,详细解析如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19## 部署命令
deploy:
## github的releases page页面
- provider: releases
## 授权的token
api_key:
## 这个GITHUB_OAUTH_TOKEN是配置在travis 项目setting-->Environment Variables里的
secure: $GITHUB_OAUTH_TOKEN
## 指定文件&&文件类型
file_glob: true
file: "*.vsix"
skip_cleanup: true
## 重命名文件,PACKAGE_VERSION即是上面获取到的package.json里的version字段
name: "zsdoc-${PACKAGE_VERSION}"
email: dillonliang@163.com
## 发布到github的哪个项目,以及限定只有打了tag的情况下,才会触发部署操作。
on:
repo: dillonliang224/zsdoc
tags: true
至此,本项目算告一段落,可以发布部署了。
利用travis发布nodejs
编写好.travis.yml文件后,操作流程如下:
- 本地更新package.json里的version
- 提交代码并打tag(同version)
- travis自动构建.vsix文件到release界面
- 更新release界面的日志(可选)
其他
travis可以做的不止于此,更多特性可自行查阅官方文档。
参考资料:
javascript-with-nodejs travis文档
如何获取github oauth token及配置