点击上方“芋道源码”,选择“设为星标”
管她前浪,还是后浪?
能浪的浪,才是好浪!
每天 8:55 更新文章,每天掉亿点点头发...
源码精品专栏
- 原创 | Java 2020 超神之路,很肝~
- 中文详细注释的开源项目
- RPC 框架 Dubbo 源码解析
- 网络应用框架 Netty 源码解析
- 消息中间件 RocketMQ 源码解析
- 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析
- 作业调度中间件 Elastic-Job 源码解析
- 分布式事务中间件 TCC-Transaction 源码解析
- Eureka 和 Hystrix 源码解析
- Java 并发源码
来源:juejin.im/post/599fd5d151882524397f9fd3
- 前言
- 研究过程
- 效果图
- 安装jenkins
- 安装 xcode
- 安装 Android studio
- 安装git
- 安装source tree
- 配置jenkins环境
- 增加计划
- 总结
前言
本文可能是网上最全的一篇全端jenkins部署解决方案介绍的文章,一直以来,领导都想解决代码提交和打包问题,尤其是小公司,打包流程混乱,造成线上版本和代码库git或svn中代码不一致问题。加入jenkins阵营,解决众多发包难题,显得刻不容缓。
研究过程
刚开始,我一直在docker下安装jenkins,按时长租用阿里的主机,用阿里容器服务做实验,反复创建docker容器,建立多个jenkins节点。结果发现,在容器中配置各种变量比较复杂,各种开发环境不易快速部署,当然啦,是刚开始的对jenkins研究过少造成的。后来我采用了windows主机,配java、maven、Android环境,踩了一路坑,终于搞定了。但是我知道ios开发和编译必须使用mac系统,本来想增加一个jenkins节点来实现ios的编译。当配置好之后,我突然改变了主意,与其两台电脑开着,不如索性把整个jenkins部署到mac系统下(毕竟我们公司暂时没有c#工程)。于是,所有的操作,所有的环境我又折腾了一遍。下面我逐一讲解最终mac下实现全端jenkins持续集成,当然不包含c#,一路踩坑下来,我觉得这都不是事,流程都差不多。
效果图
jenkins首页
构建历史
安装jenkins
我个人比较喜欢新事物,所以建议使用较高版本,我使用的2.61,目前最新版是2.75。mac下使用brew安装,终端执行
等安装完成后,终端运行jenkins即可启动。
安装 xcode
这个比较简单,直接从appstore下载最新版即可。安装后,将公司项目拉入xcode,先保证项目在本机编译,这里我登录了app开发者帐号,以便下载各种证书及发布。
安装 Android studio
这个到这里下载www.android-studio.org/
同理将本地项目拉入,运行。这一步主要是怕开发环境引起的坑,先把项目跑起来,后面坑会少点。
设置
进入设置,复制出sdk文件路径,后面需要使用。我这里是/Users/Shaolei/Library/Android/sdk
sdk路径
安装git
因为我们公司用的是git,如果贵公司使用svn,则同理,只需保git或者svn命令可以敲出来即可。我这里的版本比较老,尽量使用新的,我懒得换了。
安装source tree
这是一个非常好用的git可视化工具,改天会具体介绍它的强大功能。这款软件不是必须的,只是为了方便项目拉取,所以,你可以跳过此步骤。
配置jenkins环境
这里才是至关重要的一项,本文的核心
配置插件
下载插件
- Android Emulator Plugin
- build timeout plugin
- Email Extension Plugin
- Gradle Plugin
- Keychains and Provisioning Profiles Management
- Maven Integration plugin
- Pipeline
- Pipeline: GitHub Groovy Libraries
- SSH Slaves plugin
- Subversion Plug-in
- Timestamper
- Workspace Cleanup Plugin
- Xcode integration
其中Android Emulator Plugin、Gradle Plugin是安卓必须插件;其中Keychains and Provisioning Profiles Management、Pipeline、Xcode integration是ios编译必须插件;其中Maven Integration plugin、SSH Slaves plugin是maven项目必须插件,其他的Email Extension Plugin这个是为了编译失败的时候通知具体提交代码开发人员邮件
配置系统设置
系统设置
Local Maven Repository为maven仓库地址;如果本机没有安装maven,可能需要增加maven仓库;下面需要加入安卓环境变量,即上文中提到的那个sdk地址;
这里配置github地址,邮件用户名密码,注意发件人的邮箱必须上面jenkins注册是管理员邮箱是一个,否则一直失败,这里是个坑。
增加计划
Android 项目job
创建安卓job
创建安卓项目
配置项目的git库地址
配置项目的git库地址
下面配置触发器,每隔1分钟检查一次git库,也可以使用subscribe订阅,这里暂不做讲解。
配置触发器
设置编译后,将文件拷贝到一个文件目录。这里使用smb协议连接到了一个内网文件服务器上,方便测试部门测试。
配置编译及邮件通知
至于具体为何执行2次拷贝,是因为项目同时编译测试环境地址和真实环境地址,只有连接的服务器地址不通,其他代码都相同,具体实现可看另外一篇博文juejin.im/post/684490…
ios项目job
和安卓相同的源代码管理及触发器不做介绍,请参照安卓,下文同理。
这里需要配置ios项目的tagert,可以通过xcode打开查看,勾选Pack application and build .ipa?,使jenkins生成ipa包
配置证书地址和密码,这里指的是 Keychain Keychain path默认地址为/Users/shaolei/Library/Keychains/login.keychain,其中shaolei为mac登录的用户名,密码就是登录密码。失败时邮件发送至影响代码的配置请参照安卓,下文同理。同时编译两个ipa包请查看juejin.im/post/684490…
java项目job
因为公司人员少,项目版本如果让开发去控制,比较繁琐,每个开发得不停的增加版本号,这里我使用jenkins去控制版本号,这样也方便查询和回滚代码。当然啦,实现war的升级和回滚可看另外一篇文章juejin.im/post/684490…
当然了,这里用到了几个关键词变量,是jenkins特有的,更多变量参照下文:
h5项目job
这里我就用了zip打包,部署时使用zip解压到指定目录即可。
总结
本文全面讲解了jenkins各项目持续继承方案,因为涉及环境过多,坑还是比较多的,希望自行填坑。
欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:
已在知识星球更新源码解析如下:
最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。
提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
兄弟,艿一口,点个赞!👇