自动化打包 Jenkins 持续集成 Git Gradle MD
Markdown版本笔记 | 我的GitHub首页 | 我的博客 | 我的微信 | 我的邮箱 |
---|---|---|---|---|
MyAndroidBlogs | baiqiantao | baiqiantao | bqt20094 | baiqiantao@sina.com |
自动化打包 Jenkins 持续集成 Git Gradle MD
目录
环境要求
Jenkins 环境配置
Jenkins 安装
全局工具配置
Android SDK 路径配置
邮件配置
创建并配置打包任务
参数化构建
工作空间配置
源码管理
构建触发器
构建
上传apk到蒲公英
构建后操作
打包
环境要求
JDK
打开cmd,输入java -version
,可以看到打印的Java版本信息。如果没有,请配置java环境变量。
Git
打开cmd,输入git --version
,可以看到打印的Git版本信息。如果没有,请配置Git环境变量。
Gradle
打开cmd,输入gradle -v
,可以看到打印的Gradle版本信息。如果没有,请配置Gradle环境变量。
配置方式:环境变量--系统变量--Path--将你自己的AS安装目录下的gradle目录复制过来贴上,例如:【C:\Android\AS_2.2.2\gradle\gradle-4.4\bin】
Tomcat
双击运行Tomcat的bin目录下的startup.bat
脚本将Tomcat运行起来,日志中最后会提示服务开启成功:Server startup in 3475 ms
。
Tomcat的conf目录下的server.xml
文件可以配置端口号,默认是8080
,如果跟其他项目有冲突可以自行修改。
Jenkins 环境配置
Jenkins是一个很受欢迎的CI持续集成工具,能够实现项目的自动构建、打包、测试、发布等。还可以在构建失败、构建不稳定等状态后发送邮件通知。
Jenkins 安装
Jenkins下载
下载完之后,解压压缩包运行安装程序即可完成安装。
在Jenkins安装目录下的jenkins.xml
文件中可以配置编码格式、端口号等参数:
<arguments>-Xrs -Xmx256m -Dfile.encoding=utf-8 -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8081 --webroot="%BASE%\war"</arguments>
war包下载
将下载的war包放到Tomcat的webapps
目录下,双击运行Tomcat的bin目录下的startup.bat
脚本将Tomcat运行起来(若Tomcat已经启动,先关闭再重新启动),此时正常会提示:Jenkins is fully up and running
。
然后在浏览器访问http://localhost:8080/jenkins/
即可进入Jenkins页面。
首次启动时会提示安装插件,则可能需要一点时间,一般我们安装推荐的插件即可,以后我们还可以在系统管理 -> 插件管理
界面安装或卸载插件。
然后,按照提示路径获取密码57f6b65f714348b7947c966d2378f9a0
后输入。
然后到用户名设置界面,这个界面你有两个选择可以操作:
- 直接点击 Continue as Admin 安装,默认此时的超级管理员为admin
- 输入用户名,密码,确认密码,全名,电子邮件地址。然后点击 Save and Finish
至此,Jenkins算是初步安装成功了。
全局工具配置
在Jenkins主界面,点击进入系统管理 -> 全局工具配置
界面。
- JDK的配置:别名自取,取消选中
自动安装
,JAVA_HOME中输入自己电脑上jdk所在的路径,例如C:\Android\jdk1.8.0_171
。 - Git的配置,同样需要将自己电脑上git.exe所在的路径复制粘贴上来,例如
C:\Android\Git\bin\git.exe
。 - Gradle的配置,例如
C:\Android\AS_2.2.2\gradle\gradle-4.4
。
一定要注意,这里和在Path中配置的路径不一样,这里的路径要为bin的上一级目录,因为这个事我被坑惨了。
设置完以后保存即可。
Android SDK 路径配置
在Jenkins主界面,点击进入系统管理 -> 系统设置
页面。点击全局属性 -> 环境变量
,这里的和操作系统上配置的环境变量一致,通过勾选的名称也知道,指的就是系统环境变量。例如【ANDROID_HOME】【D:\software\android_sdk】
邮件配置
创建并配置打包任务
接下来针对某个Android APP项目创建专门的打包任务。
- 点击创建一个新任务 -> 输入任务名(不支持中文) -> 选择“构建一个自由风格的软件项目”
- 如果想根据一个已经存在的任务创建,可以使用下面的复制选项。
- 之后会进入到项目配置页,这些设置以后还可以更改:
设置之后点击确定便进入了任务配置页面,这些配置在以后都可以进行修改。
参数化构建
在实际的项目开发过程中,可能会这对不同的环境、配置进行打包,比如选择不同的环境、渠道、签名或第三方工具的key,这些都有可能需要定制。参数化构建
就是实现这种效果的。我们所要做的就是就是把选择提供出来
,各种选择可以通过参数
的形式传递给打包服务,然后根据打包时的选择,来对应出包。
通过上图的下拉列表的选择,可以看到支持的各种参数类型,例如我们选择选项参数
来提供指定环境的选择。
PS:有些配置如果我们不知道怎么填,可以点击后面的蓝色问号按钮,可以显示提示,再点一下就会关闭提示。
工作空间配置
配置完上一步后,点击右下角的“高级”按钮,配置我们的工作空间。以后Android项目代码以及打出的包都会在这个路径下。
源码管理
这一步是配置我们的源码,我们的项目可以托管在SVN上也可以在Git上。
如果安装了git插件,在源码管理会出现Git,我们选择以Git
的方式管理,然后配置代码地址和要编译的分支。例如项目地址https://github.com/baiqiantao/LifecycleTest.git
,分支使用默认的*/master
。
然后点击Add
添加Credentials
(证书),有以下几种方式:
我们一般选择用户名+密码
或SSH
方式,配置后就可以自动验证了。
构建触发器
触发器是决定什么时候触发构建,可以设置为定时构建:
还可以设置定时检查代码更新,有更新则编译,否则不编译:
定时规则案例:
- 每十五分钟【H/15 * * * *】
- 每小时的0-29分钟内每十分钟一次【H(0-29)/10 * * * *】
- 周一到周五9:00到16:00之间,每小时的第45分钟构建,每两小时构建一次【45 9-16/2 * * 1-5】
- 周一到周五9:00到16:00之间,每两个小时一次【H H(9-16)/2 * * 1-5】
- 除了12月之外,每个月的1日和15日每天一次【H H 1,15 1-11 *】
构建
点击构建
中的增加构建步骤
,可以在这里利用shell
来修改源码中的配置文件,例如可以修改文件上传路径、访问地址或输出的包名等。
如果安装Gradle
插件成功的话,应该会出现下图的Invoke Gradle script
,我们选择这个:
然后选择Gradle Version
,就是我们之前配置的Gradle
的路径,直接下拉选择好版本就可以了。
注意,这里有一个bug:
为了在Jenkins中使用gradle,需要选择
Invoke Gradle
选项,然后还必须在Use gradle wrapper
选项中配置你要跑的任务才能成功的利用gradle程序构建你的程序,但是你千万不能选择该选项,否则Jenkins会默认调用gradlew程序执行任务,但是一般你配置gradle后,没有该程序,就会报错。
在Tasks可以配置【clean assembleDebug】或【clean build --stacktrace】等你想执行的命令。
其他地方都不需要配置。
注意:一般来说
local.properties
不会添加到版本库,所以可能需要你手动copy到相应的目录下。
上传apk到蒲公英
如果没有蒲公英的账号,先 注册 一个,然后在“账户设置”中找到“API信息”,获取API Key
【6f14e9f0420bcf9cb2ae45e29afd15db】和User Key
【e9fbc97a0d37793aabf62bd629c9fb78】
然后需要使用 curl 上传文件。下载后直接解压即可,不需要安装,然后像其他配置环境变量一样将curl目录加入Path即可,例如【C:_Web\curl\curl-7.61.1】,然后在cmd中输入【curl --version】,若能显示版本信息,说明安装成功了。
点击构建
中的增加构建步骤
,添加执行shell
,然后配置下面的上传命令:【curl -F "file=@app/build/outputs/apk/debug/app-debug.apk" -F "uKey=e9fbc97a0d37793aabf62bd629c9fb78" -F "_api_key=6f14e9f0420bcf9cb2ae45e29afd15db" http://www.pgyer.com/apiv1/app/upload】
配置完后,在下次构建后即可自动上传到蒲公英。
构建后操作
构建时可能会生成多个文件,我们可以设置只将自己需要的文件做存档。在存档文件中输入需要存档的文件路径,多个文件以逗号分割,存档文件默认路径为 WORKSPACE ,存档文件的相对路径既是 WORKSPACE 并且是以正则表达式路径去匹配需要存档的文件。
如果是apk包,可填写【**/*.apk】
或【app\build\outputs\apk\*.apk】
。
您可以使用
module/dist/**/*.zip
之类的通配符。请参阅Ant文件集的includes属性以获取确切的格式。基目录是workspace。 您只能归档workspace中的文件。
在打包完成后,可以显示我们存档的文件:
打包
一切配置完成后,点击最右边的按钮即可通过jenkins进行打包:
打包过程:
至此,所有流程都走通了。
遗留问题:
- 邮件配置
- 存档不是保存每次生成的apk吗?从目前的配置来看,因为没保存到指定路径,很容易被覆盖呀!
自动化打包 Jenkins 持续集成 Git Gradle MD的更多相关文章
- 接口自动化平台搭建(四),自动化项目Jenkins持续集成
一.Jenkins的优点 1.传统网站部署流程 一般网站部署的流程 这边是完整流程而不是简化的流程 需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试 ,如果 ...
- 自动化项目Jenkins持续集成
一.Jenkins的优点 1.传统网站部署流程 一般网站部署的流程 这边是完整流程而不是简化的流程 需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试 ,如果 ...
- Jenkins持续集成git、gitlab、sonarqube(7.0)、nexus,自动化部署实战,附安装包,严禁转载!!!
导读 之前用的都是SVN,由于工作需要用到Git,求人不如求己,技多不压身,多学一项技能,未来就少求别人一次,系统的学一遍,自己搭建一整套环境,自动化部署(自动发版),代码质量检测等等(为啥不用doc ...
- Linux-GitLab+Jenkins持续集成+自动化部署
GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...
- CentOS 7 Gitlab+Jenkins持续集成+自动化部署
基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...
- Python接口测试实战5(上) - Git及Jenkins持续集成
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...
- Jenkins自动化构建系列:01敏捷开发、自动化构建与持续集成
<SVN与TortoiseSVN实战系列>已写完,今天新开一个<Jenkins自动化构建系列>,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关 ...
- 漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃monkey日志
漫谈:从APP崩溃率标准,到Monkey介绍拓展Maxim,及Jenkins自动化配置,持续集成获取崩溃日志 1.APP崩溃率标准 开发或测试app的同学,对于app崩溃肯定非常熟悉,频繁的线上崩溃属 ...
- jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法
我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...
随机推荐
- python 字典相关操作
字典 字典的增删改查 字典的创建方式: # 创建字典类型 info = { 'name':'李白', 'age':'25', 'sex':'男' } msg = { 'user01':'Longzel ...
- 8.7 正睿暑期集训营 Day4
目录 2018.8.7 正睿暑期集训营 Day4 A 世界杯(贪心) B 数组(线段树) C 淘汰赛 考试代码 A B C 2018.8.7 正睿暑期集训营 Day4 时间:5h(实际) 期望得分:. ...
- 【莫队算法】【权值分块】bzoj3920 Yuuna的礼物
[算法一] 暴力. 可以通过第0.1号测试点. 预计得分:20分. [算法二] 经典问题:区间众数,数据范围也不是很大,因此我们可以: ①分块,离散化,预处理出: <1>前i块中x出现的次 ...
- BZOJ4042 : [Cerc2014] parades
设f[x]为x子树里能选的最多的路径数,h[x]为x子树里往上走的点的集合,且不与x子树内的最优解冲突 首先f[x]=sum(f[son]) 若h[son]与x可以直接匹配,则匹配上,f[x]++ 然 ...
- CentOS 7 yum 安装mysql5.6
到mysql社区安装当前可用包 Centos 7 命令 # rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noar ...
- Failed to connect socket to '/var/run/libvirt/libvirt-sock'的问题解决
1.增加libvirtd用户组 groupadd libvirtd 2.设置用户到组 sudo usermod -a -G libvirtd $USER 3.设置启动libvirtd服务的用户组 vi ...
- Windows访问Linux的Ext4格式分区
Ext2Fsd是Windows下一套很实用的Driver,虽然名称是ext2fsd但ext3/ext4都可读取,安装完成后电脑便可直接认得ext格式扇区 虽然官方介绍只能支持到Windows 8,但实 ...
- Java clone() 浅克隆与深度克隆(转)
以下文字转自:桔子园 http://www.blogjava.net/orangelizq/archive/2007/10/17/153573.html 现在Clone已经不是一个新鲜词语了,伴随着“ ...
- 未能加载文件或程序集“System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项
在发布网站时遇到如题错误. 错误消息详细信息:未能加载文件或程序集“System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=3 ...
- 怎样把XP系统装到USB里?
怎么样在usb(usb闪存)里面装XP系统? 就是把usb当硬盘用 不买硬盘. U盘肯定装不了系统,装进去了也肯定蓝屏.为什么?因为USB得数据传输太慢,不会超过10M/S的,而你的IDE口或者SAT ...