让Jenkins成为你软件开发的管家
扫描二维码
随时随地手机看文章
德国的疫情越来越严重,周末闲来没事,在家想着,好久没有更新公众号了,为了一直默默关注欢乐马的小伙伴和不断增加的读者,这周加个班,把最新的想法写出来,希望可以帮助到有需要的朋友。
这周的主题是 jenkins 服务器的配置。
前言:
汽车嵌入式由于其特殊的流程规范,比如 ASPICE 审核等,开发工作一般是常用的V模型。V模型也是功能安全的需要,感兴趣的朋友可以看看我的另外一个系列。到底啥是功能安全 - 5
V模型带来的缺点也显而易见,周期长,不灵活,对顾客需求的响应慢等, 相比汽车软件开发,在新兴的IT行业,大部分公司已经都转型到了敏捷化开发,就是所谓的Agile。Agile的主旨是最大限度的满足顾客的需求。与之应运而生的是一系列的工具,这些工具可以帮助加速软件开发,使软件又快又高质量的送到客户手里。其中不得不提的就是我们今天的主角,Jenkins。
正文:
提起Jenkins,他的图标是一个管家的模样。寓意明确,就是一个自动化的管家,
帮你做一切可以自动化的事情。概括起来有两个,第一个是CI (Continues integration), 另一个是CD(continues delivery),此处划重点,面试中必问问题:CI和CD有什么区别。知道的小伙伴请留言,有彩蛋。
好了,言归正传,本文的目标是一步一步带读者了解,如何配置一台远程服务器,并且部署jenkins, 让它帮我们自动编译我们编写的代码。达到 continues intgration。
下面是步骤:
1. 在云服务器上下载,安装并配置Jenkins:
我用的是Linux Centos7,根据目标系统的不一样使用的命令有区别,读者可以自行参考Jenkins安装手册。
-
yum install jenkins
安装完之后,服务器8080端口为 jenkins 默认端口,如果将来如果有需要https 加密传输的话,应该设置成 443 端口并且配置 ssl 证书。
2. 下载Git 作为版本管理工具,将来jenkins会链接git,实现代码管理。
此处注意,请下载最新版的Git,在yum 库里还是1.x 版本的git,如果想要git 2.xx 版本的话,需要做一个更新,或者直接从git官网通过url链链接下载并解压安装。
git 和Jenkins 都安装完成以后,让我们来开始配置吧。
首先用浏览器登录 域名:8080, 此处是我的
http://kfz.plus:8080
注意第一次登录有一个起始密码,这个密码在linux系统的
/var/lib/jenkins/secrets/initialAdminPassword的这个位置,并且只有第一次会有,如果已经登录了,这个password就删除了。读者可以参考下图路径找到initialAdminPassword 这个文件。
注册并登录账户之后 jenkins的首页面:
设置第一个任务给它吧:
我没有选择常用的 Pipeline, 而是选择了freesytle 项目。、
drop job 之后在configuration里配置git 路径:
请注意,习惯用Github的用户千万不要配置自己的Github,因为国内的云服务自动封锁了Github的访问,每次都会返回Timeout 报错。
不信的话你看:
祖国的长城真是太坑了,我一直以为是我自己配置的问题,从头到尾查了一个多小时,经历了整整十次 build,才发现人家压根就不让你访问。
无奈只能拥抱祖国,注册了国行版github:Gitee, 不熟悉git命令的小伙伴可以参考下面:
git initgit commit -m "xxx"git pushgit fetch git pullgit clone ......
搞定了Git 配置,Jenkins就可以管理和下载你的代码了,但是为了实现编译,我们还需要在云服务器上下载编译器。为了简单演示,此处用免费开源的gcc 编译。触发编译的话选择用shell 执行git source 里的makefile
配置完成,开发编译吧
Jenkins有build的历史记录,前十次是因为github没法访问,换了gitee之后,就可以编译成功了。
现在我设置成每一个小时编译一次,我们的TC264项目状态 W 栏就变成了大太阳
后言:
jenkins作为一个管家可以帮助用户做的工作有很多,从CI的角度有很多人性化的功能,比如如何触发编译或者编译完之后做什么的配置,我目前的配置是,每一个小时或者每次在git 里有新的commit 的话,jenkins 会自动编译新的代码,确保每一次改动都没有影响软件的编译。如果编译有错误,会邮件提醒我错误的地方。还有很多有意思的配置,感兴趣的小伙伴可以去详细了解,。
当CI 做完之后,另一个功能CD,我们下回再见吧。