当前位置:首页 > 技术文章 > 正文内容

Android项目cicd流程总结(使用jenkins)

u3blog2年前 (2023-04-21)技术文章1261

没有cicd之前我们都是怎么做的

相信做安卓开发的都做过这些事

  1. 手动运行单元测试,根据报错改代码
  2. 检查代码风格,根据报错改代码
  3. 构建apk包,发给测试,有时候还得打很多个
  4. 接收测试的反馈,改bug,
  5. 重复之前的步骤
  6. 把apk放到ftp或者其他地方去发布

是不是想到这一套流程,头都大了,虽然每一步都不难,但是连起来都手工操作就很繁琐

像这些手动流程固定的事,我们完全就可以交给机器来做,让我们有更多时间做点别的事,没错,这就是今天要说的cicd

什么是cicd,以及在cicd过程中包含了哪些步骤

一般来说,安卓开发的CI/CD流程包括以下几个阶段:代码提交、代码检查、编译构建、单元测试集成测试、部署发布、用户反馈。

  1. 在代码提交阶段,开发者将自己的代码推送到远程仓库,例如Git或SVN,并触发CI/CD工具或平台例如Jenkins或Travis CI等
  2. 在代码检查阶段,CI/CD工具或平台会对代码进行静态分析和风格检查,例如使用SonarQube或Checkstyle等。
  3. 在编译构建阶段,CI/CD工具或平台会使用Gradle或Maven等工具对代码进行编译和打包,生成APK文件
  4. 在单元测试阶段,CI/CD工具或平台会使用JUnit或Espresso等框架对代码进行单元测试,并生成测试报告。
  5. 在集成测试阶段,CI/CD工具或平台会使用Appium或Selenium等框架对应用进行集成测试,并生成测试报告
  6. 在部署发布阶段,CI/CD工具或平台会将APK文件上传到内部服务器或外部平台,例如蒲公英或Google Play等,并通知相关人员。
  7. 在用户反馈阶段,开发者可以通过Bugly或Firebase等工具收集用户的反馈和错误信息,并根据需要进行修复和更新

通过以上几个步骤,我们可以把以前的app构建流程从手动变为自动,而且可以通过不断以非常低的成本的重复这个过程,提高我们的项目质量,这就是cicd带给我们的自信

今天我们来通过jenkins来实现上面的几个步骤

安装配置jenkins

本文讨论的主要是在windows环境下安装jenkins

  1. 从jenkins官网下载对应的安装包即可
  2. 安装过程很简单但是需要提供一个账号,就像下图显示的界面,这个账号需要有权限

    打开开始菜单,搜索本地安全策略,选择本地策略用户权限分配,在右侧的策略中找到作为服务登录,双击打开。点击添加用户或组,在输入框中填入你的账户的名字,单击检查名称,如果加上了下划线,则说明没有问题,如果输入的用户不存在,则会跳出来一个找不到名称的对话框。

这里需要注意一点,windows家庭版默认是没有本地安全策略的,需要用一些技巧把它开启,如下:

1.  在桌面上单击右键,选择“新建”->“文本文档”。

2.  将文本文档重命名为“OpenLocalSecurityPolicy.bat”。

3.  右键单击“OpenLocalSecurityPolicy.bat”,选择“编辑”。

4.  将以下命令复制并粘贴到文本编辑器中:


@echo off
pushd "%SystemRoot%\system32"
findstr /c:"[SR] Cannot repair member file" %windir%\logs\cbs\cbs.log >%userprofile%\Desktop\sfcdetails.txt
start ms-settings:windowsdefender
start ms-settings:windowsupdate
start ms-settings:windowsupdate-history
start ms-settings:windowsupdate-options
start ms-settings:storagesense
start ms-settings:storagesense-diagnostics
start ms-settings:storagesense-configurecleanup
start ms-settings:storagesense-changehowwesave
start ms-settings:storagesense-runstoragecleanupnow
start ms-settings:storagesense-storageusage
start ms-settings:storagesense-changestoragesavelocations
start ms-settings:backup
start ms-settings:backup-advancedsettings
start ms-settings:backup-addalocaldriveornetworklocation
start ms-settings:backup-managebackups
start ms-settings:backup-moreoptions
start ms-settings:dateandtime
start ms-settings:regionlanguage
start ms-settings:regionlanguage-languagepacks
start ms-settings:regionlanguage-speech
start ms-settings:regionlanguage-keyboards
start ms-settings:regionlanguage-morespeechservicesonline
start ms-settings:speech
start ms-settings:speech-microphoneprivacysettings


5.  保存并关闭文本编辑器。
6.  双击“OpenLocalSecurityPolicy.bat”文件,以打开本地安全策略。
  1. 修改默认根地址到其他盘符

默认情况下,jenkins的主目录都是在c盘,如果这样,我们使用中产生的数据都是在c盘,用过windows的都知道,数据放在c盘是很危险也是很让人不爽的一件事,我们可以通过修改jenkins的主目录方法来把数据放到其他盘

在成功安装了jenkins并解锁之后,我们可以配置环境变量JENKINS_HOME,地址就是我们想改的目录,


然后修改jenkins.xml

    <env name="JENKINS_HOME" value="%LocalAppData%\Jenkins.jenkins"/>

改为

    <env name="JENKINS_HOME" value="E:\jenkins"/>
  1. 配置常用的插件
    在第一次启动jenkins的时候,会让你选择安装哪些插件,这时候直接选择推荐的插件就好,包含了一些常用插件,比如git等等,如下图

配置针对于android的环境

  1. android sdk 见下图

  2. gradle – Dashboard -> Manage Jenkins -> Global Tool Configuration中的Gradle配置gradle路径即可

  3. jdk – Dashboard -> Manage Jenkins -> Global Tool Configuration中的JDK配置jdk路径即可

  4. git – Dashboard -> Manage Jenkins -> Global Tool Configuration中的Git installations配置git路径即可

    配置Android的具体job信息

    新建一个freestyle的item,在里面做以下几步:

  5. 配置git仓库地址以及构建分支

  6. 设置构建触发器(定时构建) – 找到构建触发器,勾选build periodically,在编辑框里按照规则设置构建时间,在某天的某个时段自动构建,比如45 9-15/2 * * 1-5,虽然可以提交一次就构建一次,但是不建议这么做。构建表达式的规则见下图,可以根据自己的需要写表达式。

  7. 添加构建步骤,打包出apk,如下图在build step中触发

  8. 配置构建后步骤,自动把apk包上传到ftp或者其他地方

    在Jenkins的项目中,选择“构建”->“增加构建步骤”->“执行shell”或“执行Windows批处理命令”
    一个上传ftp的例子

    ftp -n <<EOF
    open ftp.example.com
    user username password
    cd /remote/directory
    put /local/file
    bye
    EOF

配置邮件通知

在构建完成之后,特别是失败的时候,我们希望收到一封邮件告诉我们构建失败了,快去处理,我们可以通过以下步骤来实现

  1. 在Jenkins中安装Email Extension Plugin插件,可以在插件管理中搜索并安装。
  2. 在Jenkins的系统管理中,配置邮件服务器的地址,用户名,密码和端口。如果使用的是QQ邮箱或者163邮箱,还需要获取邮箱授权码并使用授权码作为密码。
  3. 在Jenkins的项目中,选择“构建后操作”->“增加构建后操作”->“Editable Email Notification”。
  4. 在邮件通知的配置中,填写收件人,抄送人,邮件主题,邮件内容等信息。可以使用一些变量来自定义邮件内容,例如BUILDSTATUS表示构建状态,BUILDS​TATUS表示构建状态, {BUILD_URL}表示构建链接等。

这里特别要注意的是,上面的配置地址和授权码需要在job的设置里面进行,在全局配置有可能发不出邮件

配置单元测试和代码检查

我们还需要在运行前执行代码lint检查和单元测试,也需要配插件,插件名字是JUnit和Warnings Next Generation

  1. 参考上面 配置Android的具体job信息 中的配置,添加lint和单元测试的任务
  2. 配置单元测试插件和lint插件,主要指定报告文件的位置,见下图

  1. 把单元测试的结果放到邮件的附件中去,配置见下图,也可以放些别的东西

一劳永逸,使用docker把上面的配置做到随时随地使用

上面的步骤完成之后,我们就能自动构建,上传apk什么的了,但是每次换台机器我们都得再配一次,想下就很累,这时候我们就可以用docker,创建一个容器,把上面这些操作放在容器里面,在新环境里面拉个镜像,创建容器跑起来,就ok啦,关于怎么用docker,就需要大家自己去搜索学习了

最后放张图吧,jenkins真好用啊

扫描二维码推送至手机访问。

版权声明:本文由u3blog发布,如需转载请注明出处。

本文链接:https://u3blog.xyz/?id=702

分享给朋友:

“Android项目cicd流程总结(使用jenkins)” 的相关文章

开源数据库Postgresql安装/卸载总结

What Postgresql一个开源数据库,类似mysql,由于mysql被收购了,这个数据库正被越来越多的使用 怎么安装?安装非常简单,但是安装过后的初始化还是有点麻烦,具体可以看这篇文章为什么要卸载?安装好之后,如果你很倒霉的话,会遇到postgresql服务怎么都启动不了,输入psql指令显...

AndroidStudio插件开发——RemoveButterKnife从构思到实现

AndroidStudio插件开发——RemoveButterKnife从构思到实现

ReomveButterKnife插件这是一个用于移除代码中对ButterKnife使用的AS插件,接下来我们将从头开始讲讲AS插件开发和这个插件的开发过程地址是<a href="https://github.com/u3shadow/RemoveButterKnife"...

项目的改造——RemoveButterKnife插件代码的重构

项目的改造——RemoveButterKnife插件代码的重构

前言这篇文章记述了我的插件RemoveButterKnife的代码改进过程以及思路,关于插件,各位可以看RemoveButterKnife代码库,关于文章,可以看构思到实现RemoveButterKnife 原因近期想给原来的插件RemoveButterKnife加入一些新的功能,发现以前的代码没...

项目的升级-给RemoveButterKnife插件增加新功能

项目的升级-给RemoveButterKnife插件增加新功能

前言经过项目的初步编写和进一步改造,RemoveButterKnife插件终于也有模有样了,但是,功能上仅仅支持Activity/Fragment的BindView注解。 关于编写和优化的过程可以看下面两篇文章项目构造RemoveButterKnife 项目改进-重构RemoveButterKn...

Android测试体系-在MVVM架构中如何测试Model层与ViewModel层

背景此文章是对于google code lab中《Introduction to Test Double and Dependence injection》 与 《Testing Basics》的总结,本篇主要讲述如何在mvvm架构的android项目中对Model层以及ViewModel层进行测试...

使用Databinding为Recyclerview使用同一个ViewHolder加载不同Item

提示:在阅读本篇文章前,你最好对android databinding有一定了解,本文使用的代码均为kotlin,但是不用担心,都很简单 最近在写项目的时候使用了databinding技术,突发奇想,databinding是不是也能应用于recyclerview中,让加载多个不同的item更简单呢...

评论列表

追忆
追忆 IP:
4个月前 (07-23)

识别码:snfhyq46072ZF-内容表达清楚可圈可点http://www.jinkoukong.com/post/16979.html

1
1 IP:江苏省
4个月前 (07-25)

识别码:nrsmta95684VI-这游戏真不错!http://www.a5km.com/yxgl/jdqs/29009.html

11
11 IP:江苏省
4个月前 (07-25)

识别码:nrsmta95684VI-这游戏真不错!http://www.a5km.com/yxgl/jdqs/29009.html识别码:oafjhk83241UT-这游戏真不错!http://www.a5km.com/yxgl/dnf/26883.html

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。