Open xizhibei opened 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
由于是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/
./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- test/
gitlab上对应的正则填这个: Lines\s*:\s*(\d+.\d+)%
Lines\s*:\s*(\d+.\d+)%
http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html https://www.zhihu.com/question/23444990
👍
不知道,你有没有遇到类似的情况:
这时候,你需要个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解决。
代码的覆盖率
我选的是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