xizhibei / blog

个人博客,(Node.js/Golang/Backend/DevOps),欢迎 Star, Watch 订阅以及评论
https://blog.xizhibei.me
Other
434 stars 29 forks source link

CI系统搭建 #26

Open xizhibei opened 8 years ago

xizhibei commented 8 years ago

不知道,你有没有遇到类似的情况:

这时候,你需要个CI,也就是持续集成。

我理想中的团队开发流程中,CI是最重要的一环,团队成员按照git flow开发,然后提交,等待CI测试通过,最后提交pull request,让同事Code Review。

在以后,还可以加入CD,即当提交到master通过之后,构建并打包docker,部署到正式环境。

好处:

CI也是敏捷开发流程中最重要的一环,是否还记得这句口号?

自动化一切

搭建

我选择的系统是gitlab,自带pipeline可以当成CI&CD,老牌的jenkins也可以考虑,只是插件式的不如写个pipeline的定义文件来得方便。当然了,第三方服务如Travis, Codeship也不错。 只是,我的考虑是:首先,我的项目中带有私有的npm包,目前我已经搭了一个npm private registry;其次,国内的服务让人很不放心,国外又太慢;

最方便的简单搭建可以看看这个: https://github.com/sameersbn/docker-gitlab

配置 .gitlab.yml

由于是nodejs,项目,这里就直接贴我的了,其他的,你们自己解决了^_^。

另外,建议executor选择shell,简单,可配置性强,另外,node的version可以用nvm解决。

variables:
  NODE_VERSION: v4.2.2
  NODE_ENV: development
  npm_config_registry: http://<you_private_registry>/
  npm_config_loglevel: warn
  PHANTOMJS_CDNURL: https://npm.taobao.org/mirrors/phantomjs
  SELENIUM_CNDURL: https://npm.taobao.org/mirrors/selenium
  ELECTRON_MIRROR: https://npm.taobao.org/mirrors/electron/
  SASS_BINARY_SITE: https://npm.taobao.org/mirrors/node-sass
  NODEJS_ORG_MIRROR: http://npm.taobao.org/mirrors/node
  NVM_NODEJS_ORG_MIRROR: http://npm.taobao.org/mirrors/node
  NVM_IOJS_ORG_MIRROR: http://npm.taobao.org/mirrors/iojs

before_script:
  - source ~/.nvm/nvm.sh && nvm install $NODE_VERSION

# This folder is cached between builds
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
  key: "$CI_BUILD_REF_NAME"
  untracked: true
  paths:
  - node_modules/

test_all:
  stage: test
  script:
    - npm install
    - npm run lint
    - npm run coverage

代码的覆盖率

我选的是istanbul,npm 的script加一个: ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- test/

gitlab上对应的正则填这个: Lines\s*:\s*(\d+.\d+)%

Reference

http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html https://www.zhihu.com/question/23444990

paddingme commented 7 years ago

👍