相关介绍
1. 徽章
这些小徽章(badge)是可以通过一些网站例如 shields.io 制作出来,徽章状态数据可以是静态的,也可以是实时的。
经常可以在各大有名的开源项目看到它们的存在,它们是一种身份的象征!
哈哈,开玩笑的,这些徽章更大的作用是让人们觉得你的项目更加靠谱。 看到这里你可能会想...
2. Travis-CI
一个持续集成工具,它有 travis.org (免费版) 和 travis.com 收费版,免费版对所有公有的github 项目免费。
ps: 😭最新收费规则改了:blog.travis-ci.com/2020-11-02-…
相关任务的生命周期文档:docs.travis-ci.com/user/job-li…
3. Codecov
通过收集覆盖率报告及其他关键信息来静态分析,它自身都不会去运行测试用例来获得项目代码的覆盖率。
4. Github 个人主页
可以将自己的项目下的静态资源配置到 github 个人主页下。
- 在项目设置中配置 GitHub Pages
- 给 GitHub Pages site 指定分支,分支下的文件应该是前端打包好的静态文件
目标
准备
- 一个公有的 github 项目
- 使用 github 账号登录 travis.org
添加项目
登录后打开 travis-ci.org/account/rep…, 将项目添加
配置 .travis.yml 文件
在你的项目根目录增加一个 .travis.yml 文件,初始化配置可如下:
# .travis.yml
language: node_js # 前端工程所以是JavaScript,编译环境是node_js
git:
depth: 1 # 仅克隆最新的 commit
node_js:
- 'lts/*' # 指定 node.js 版本
branchs:
only:
- master # 指定只有检测到master分支有变动时才执行git 任务
🎉🎉🎉 到此,当我们提交代码到 master 分支,travis 虚拟机就会开始跑文件中配置的任务。 这里 可以看到本次构建的详情
当运行一个 language 为 node_js 的项目时, 默认脚本是 npm test,所以你可能会看到 travis 自己执行了 npm test 命令,详情见这里
由于我们配置简单,整体任务通过不报错, 就会显示 passing 状态, 但这不是我们的目标,我们得让 travis 做些事儿。
配置 Codecov
- 在项目中安装 codecov
npm i --save codecov
这里有个小点,你可能在其他教程会看到, 需要给 travis 再配置一个Codecov 的环境变量,其实不需要的,你会发现没有 这个环境变量也能上传测试报告。在项目下 ./node_modules/.bin/codecov 文件,找到了相关说明 - 公有项目不需要 codcov token。
- 在 angular项目中, npm test 默认会起一个测试服务,并一直处于 watch 状态,导致这个 travis 任务不会结束。 所以, 我们需要修改 package.json 中 test 脚本,修改如下:
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --base-href /my-github/ --prod",
"test": "ng test --no-watch --no-progress --browsers=ChromeHeadlessCI --code-coverage",
"lint": "ng lint",
"e2e": "ng e2e"
},
--code-coverage
参数会生成测试报告,--browsers=ChromeHeadlessCI
可以后台运行浏览器
- 最后需要去到 karma.conf.js 修改下配置,加上 customLaunchers
autoWatch: true,
browsers: ['Chrome'],
customLaunchers: {
ChromeHeadlessCI: {
base: 'ChromeHeadless',
flags: ['--no-sandbox']
}
},
获取 github token
- 在 github.com/settings/to… 新生成一个token,权限配置可参考下图:
创建后先把 token 复制下来,因为下次再进入页面,github 不会再显示 token,应该是为了安全吧。
- 将生成的 token 作为环境变量配置到 travis
我们创建了一个 GITHUB_TOKEN 的环境变量,值为刚生成的 token
准备就绪,让我们最后来配置下 .travis.yml
修改 .travis.yml 文件
# .travis.yml
language: node_js # 前端工程所以是JavaScript,编译环境是node_js
git:
depth: 1 # 仅克隆最新的 commit
node_js:
- 'lts/*' # 指定 node.js 版本
env:
global: GITHUB_TOKEN=$GITHUB_TOKEN # 仅克隆最新的 commit
branchs:
only:
- master # 指定只有检测到master分支有变动时才执行任务
install:
- npm i # 克隆完项目后,安装
script:
- npm run test # 生成测试报告
- npm run build # 打包生成静态资源
after_script:
- if [[ "$TRAVIS_TEST_RESULT" == 0 ]]; then ./node_modules/.bin/codecov; fi # 执行完 travis 测试任务无报错后上传报告
deploy:
provider: pages
skip-cleanup: true
github-token: $GITHUB_TOKEN # travis setting 中的环境变量 GITHUB_TOKEN
local-dir: ./dist/my-github # 根据情况自定义到静态文件输出目录
target-branch: gh-pages # 构建后的静态资源提交到这个分支
verbose: true
on:
branch: master
配置文件已经注释,有问题可以评论交流,也可以通过这里看构建详情。也可以参考中的demo项目
下篇文章会继续介绍,Travis-CI 自动化部署到服务器。