NOTE:
如果您是刚毕业的或者刚进入IT的新人,可以看看。
本文不适合运维工程师,不讲解如何构建 gerrit 和 jenkins,
我的问题来源:
- 之前开发用SVN较多,git水平不行
- git + github/gitee 用的较多,对于其他代码托管工具不了解,闹出了笑话
- 因为嵌入式开发,编译都是平常自己编译,没用过jenkins,不理解是什么东西
三套件在开发流程扮演的角色:
- git :版本管理工具,方便团队开发和提交代码
- gerrit:官方叫做web的代码审核工具,我个人认为就是远程库+代码审核功能,此工具能力很强,可以自动 review 代码,检查 code 中格式不规范的地方,提醒开发者及时进行修改,gerrit auto review pass后,会自动发送邮件提醒 软件 leader 进行review,leader 会 merge到对应分支
- jenkins 集成管理工具,相当于一个自动的程序员,可以使用git 拉去代码,可以自动编译。嵌入式做系统层开发的时候,一次编译时间久,可以使用此工具自动定时编译版本;编译出错,会报错提示修改,另外对于嵌入式开发者而言,它的 PB功能很棒,因为leader 的时间很忙,不会立刻收到你的 review code 请求就处理,可以使用PB暂时编译一个版本,方便QA与其他专业同事进行功能测试
使用三套件的开发流程
-
默认本地已经git clone 了项目。本地git环境已经ok,不ok,学习git基本操作
-
本地修改后,git status 查看本地修改状态。最好检查本地的修改文件当前权限,因为gerrit会review 文件权限,建议修改到和原来文件相同的权限。(为什么权限会变,因为嵌入式开发时,使用Windows上工具如source insight,nodepade++ 打开一些文件后,会改变文件权限)
-
确认修改后*,git add . 提交所有修改的文件到暂存区,git commit 加提交信息到本地库,不同公司有不同的要求,gerrit会检查提交时的commit 信息,一定按照公司要求来,否则gerrit检查时,还是不会通过
-
本地库确认OK后,git push ***** HEAD:xxxx,***是gerrit远程库的名字,如果是clone 的项目,可以使用 git remote -v 查看,应该不会没有,因为你是新人,没资格建立远程库,项目肯定是自己lone到本地的, xxxx是push 的分支名,可以询问同事,分支名的查看:git branch
-
如果以上操作觉的陌生,快去学git,git太差了。
-
gerrit review 你的代码提交:
对于其中没有PASS 的地方,我建议在本地source insight 或 vscode 修改,别搞骚操作在 gerrit上直接改,然后被训一顿,说git也不会用。同样windows打开了的文件,注意文件权限
修改后,使用 git add . ,git commit --amend(重新提交,不要改commit 信息了,因为公司一般会有commit change id 的管控,如果使用git commit 就会新生成 change id) -
在PASS之后,一般是添加 review 的人当然是领导,通过各种方式通知他帮你review 代码,merge 到主线。但我不建议这样搞,可以使用jenkins 先生成一个PB,看能不能编过,自己烧录PB到开发板,验证一下功能是不是已经ok了,不然review 时被训又是难免的了。
-
如何使用jenkins 起PB
输入build的参数
-
PB起好之后,会自动编译代码,生成镜像download 后烧录到开发板,本地测试
-
通知领导review code ,merge 到对应branch