三个仓库分别是 sui,wqui,qnui。其中 wqui 和 qnui 都是从 sui 复制来的,可以理解为 fork ,因为在github上无法在同一个organization中fork,所以我们用复制。
每个仓库中的主分支都是dev。 build分支包含所有编译出来的代码,用来在官网服务器上部署。
假设把三个仓库都clone到本地之后分别是**/sui**,**/qnui**,和**~/wqui**。
下一步就是要设置remote,每个仓库中现在都有一个默认的remote叫 origin ,指向github上的同名仓库,这个不要修改。
进入sui仓库,执行 git remote -v
会发现已经存在一个 origin,那么我们还需要添加一个 gitlab 来发布代码。
执行命令 git remote add gitlab [email protected]:sj/dpl.git 即可
进入qnui仓库,执行 git remote -v
会发现也已经存在一个origin,然后和sui中的一样 我们也需要添加gitlab用来发布代码。
- 执行命令
git remote add gitlab [email protected]:sj/qnui.git
。 - 为了能同步sui上的更新,我们还需要把sui也加入自己的remote:
- 执行命令
git remote add sui [email protected]:sdc-alibaba/sui.git
。
这样如果我们 git fetch sui
就可以把sui仓库的分支全部更新到qnui中。
全部的remote关系如下图所示
假设A开发一个组件ac。
- A从dev新建一个分支ac,并开发代码,
git checkout -b ac
。 - A提交代码并push到github,然后在github上向dev发pull request,指定给另一个人B。
- B review之后同意merge,此时ac分支上的代码就进入了sui的dev分支。
下一步是要把ac组件同步到qnui和wqui。
- 切换到本地的qnui仓库,切换到dev分支,然后
git fetch sui
,此时会看到一个sui/dev的更新 - 然后git merge sui/dev,如果有冲突可能要手动解决下
- 解决完冲突并提交之后,执行 git push origin dev就可以了。
wqui的操作和上面一样。
经过上面的操作,三个仓库中的dev分支中都包含了ac组件。
发布包含两部分,一是把代码发布到CDN上,二是更新官网。
- 以sui为例,切换到新分支daily/x.x.x,
git checkout -b daily/x.x.x
- 然后merge dev分支,
git merge dev
git push gitlab daily/x.x.x
,发布到daily环境- 打一个publish/x.x.x的tag并发布,并push
git tag publish/x.x.x
git push gitlab publish/x.x.x
版本号在 variables.jade
文件中定义,每次发布前要修改版本号,注意版本号的语义化不要随便设置版本号。
因为官网服务器没有安装node,所以需要我们本地构建好代码
- 切换到build分支,
git checkout build
git merge dev
- 执行
grunt
- 提交并push。
git commit -a
git push origin build
官网服务器会定时检查每个仓库的更新(5分钟),所以push完build分之后五分钟内官网就会自动更新。
注意发布代码的时候不要随便写版本号,假设版本号为 x.y.z
, 语义化版本号的基本规范是:
- bug修复或者已有功能更新,升级z位
- 新增组件升级y位
- 不兼容老版本的重要更新升级x位