持续集成 CI
- 在持续集成环境中,开发人员将会频繁的提交代码到主干。这些新提交在最终合并到主线之前,都需要通过编译和自动化的测试流程进行验证。白话文说 就是让代码自动编译,合并,并进行测试
持续交付 CD
- 持续交付就是讲我们的应用发布出去的过程。这个过程可以确保我们尽可能快的实现交付。这就意味着除了自动化测试,我们还需要有自动化的发布流,以及通过一个按钮就可以随时随地实现应用的部署上线。白话文说 就是一键部署上线
devops 持续部署平台
大致的开发到部署上线流程
- 需求
- 开发
- 测试
- 上线
- 运维
- 统一代码仓库通过分支管理合并主干svn或者git
- 自动化构建工具,编译、部署、测试、监控、本机开发上线环境。 FIS3/Webpack/jdists(区分上线环境和开发环境)/package.json/chai/supertest/mocha/selenium-webdriver
- 持续集成平台。Jenkins、Travis CI
- 持续部署工具。 rsync、shelljs、yargs
端口冲突shell
-
查看端口
lsof -i:80
-
解决端口冲突
#!/bin/bashbase_port="80"check_port=`lsof -i:$base_port | awk '{print $2}'`while [ "$check_port" != "" ]do let base_port=base_port+1 check_port=`lsof -i:$base_port`doneecho $base_port复制代码
- shelljs
具体用法参考见 npm npm init
npm install shelljs --save-dev
#!/usr/bin/env node (where node)const shell = require("shell.js");shell.mkdir("")复制代码
-
标准开发 基本标配
- 开发机器 :开发环境、git/svn、开发工具(vscode)
- 代码仓库 :gitlab hooks钩子交给jenkins
- CI平台 :Jenkins webpack编译 私钥 产生dist扔给QA
- QA机器 :公钥
- 几个关键的点
- ci机器上部署Jenkins
- 执行测试 npm run test /npm run build
- cd交付代码测试 获取上线权限
-
前端模块化
- webpack 使用的是 commonjs规范 将所有js直接打包到一个文件里
- AMD 是等所有模块加载过来
define(['dep1','dep2'],function(dep1,dep2){ return function(){};})复制代码
- CMD 同步执行 先把 require里的东西正则匹配到 先把所有的js请求回来- UMD 同时支持 CMD AMD COMMONJS复制代码
- importScript 支持跨域 import 不支持跨域