没有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. 装置进程很简单但是需求供给一个账号,就像下图显示的界面,这个账号需求有权限
    Android项目cicd流程总结(使用jenkins)
    打开开始菜单,查找本地安全战略,挑选本地战略用户权限分配,在右侧的战略中找到作为服务登录,双击打开。点击增加用户或组,在输入框中填入你的账户的姓名,单击查看名称,假如加上了下划线,则阐明没有问题,假如输入的用户不存在,则会跳出来一个找不到名称的对话框。
    Android项目cicd流程总结(使用jenkins)

这儿需求留意一点,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”文件,以打开本地安全战略。

3. 修改默许根地址到其他盘符

默许情况下,jenkins的主目录都是在c盘,假如这样,咱们运用中发生的数据都是在c盘,用过windows的都知道,数据放在c盘是很风险也是很让人不爽的一件事,咱们能够经过修改jenkins的主目录方法来把数据放到其他盘

在成功装置了jenkins并解锁之后,咱们能够装备环境变量JENKINS_HOME,地址便是咱们想改的目录,

Android项目cicd流程总结(使用jenkins)
然后修改jenkins.xml

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

改为

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

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

装备针对于android的环境

  1. android sdk 见下图
    Android项目cicd流程总结(使用jenkins)
  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,在里面做以下几步:

  1. 装备git库房地址以及构建分支

  2. 设置构建触发器(守时构建) — 找到构建触发器,勾选build periodically,在编辑框里依照规矩设置构建时间,在某天的某个时段主动构建,比方45 9-15/2 * * 1-5,尽管能够提交一次就构建一次,但是不建议这么做。构建表达式的规矩见下图,能够根据自己的需求写表达式。

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

  3. 增加构建进程,打包出apk,如下图在build step中触发

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

  4. 装备构建后进程,主动把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插件,主要指定报告文件的方位,见下图

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

Android项目cicd流程总结(使用jenkins)
3. 把单元测验的结果放到邮件的附件中去,装备见下图,也能够放些别的东西

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

一了百了,运用docker把上面的装备做到随时随地运用

上面的进程完结之后,咱们就能主动构建,上传apk什么的了,但是每次换台机器咱们都得再配一次,想下就很累,这时分咱们就能够用docker,创立一个容器,把上面这些操作放在容器里面,在新环境里面拉个镜像,创立容器跑起来,就ok啦,关于怎么用docker,就需求大家自己去查找学习了

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

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