Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。改文章,我们通过使用Jenkins自动化工具,定期打包我们的Android APK项目,方便研发与测试的协同。

一、安装tomcat

a、下载tomcat

http://tomcat.apache.org/

下载完成后解压到:

/Users/xiaxveliang/Library/

b、启动tomcat:

sudo sh startup.sh

c、验证

二、安装Jenkins

a、下载 jenkins.war

https://jenkins.io/index.html

下载完成后,放入以下路径:

/Users/xiaxveliang/Library/ApacheTomcat/webapps

b、打开

http://localhost:8080/jenkins

c、找不到initialAdminPassword

找不到

/var/root/.jenkins/secrets/initialAdminPassword

解决方案:
mac finder访问/var/root 目录
mac 不能打开文件夹xxx 因为您没有权限查看其内容

d、修改jenkins job工作目录

// 修改后的job目录
/Users/xiaxveliang/a_Work/Jenkins/${JOB_NAME}

e、添加git 凭据

f、丢弃原则

g、选择构建分支

*/$BRANCH


特别 特别 特别 注意下载 Persistent Parameter 插件 记住上一次构建成功的参数选择

h、定时构建

// 定时构建:工作日(周一到周五)9~18点每隔2个小时构建一次
H 9-18/2 * * 1-5
// 轮询:每隔5分钟检查一次是否有代码更新
H/5 * * * *

i、构建

build apk

shell 脚本 build

# build
/Applications/Android\ Studio.app/Contents/gradle/gradle-4.10.1/bin/gradle clean assembleRelease --stacktrace -info

shell 脚本rename apk

# rename
mv $WORKSPACE/build/outputs/apk/test-release.apk $WORKSPACE/build/outputs/apk/$JOB_NAME-$BUILD_NUMBER-$BRANCH.apk

j、归档 (完成)

# 归档文件
**/$JOB_NAME-$BUILD_NUMBER-$BRANCH.apk

到这里,可以说jenkins Android打包已经完成。但我们还有其他一些细节需要完善,比如说生成二维码、发邮件等

k、生成一个指向 JOB_NAME-BUILD_NUMBER-BRANCH.apk的Html

shell 脚本截图

shell 脚本

#create htmlcd $WORKSPACE/build/outputs/apk
rm -rf $JOB_NAME.html
touch $JOB_NAME.htmlcat << EOF > $JOB_NAME.html
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width"/>
<title>$JOB_NAME</title>
</head>
<body><h3><a href="http://10.236.148.225:8080/jenkins/job/$JOB_NAME/$BUILD_NUMBER/artifact/build/outputs/apk/$JOB_NAME-$BUILD_NUMBER-$BRANCH.apk">$JOB_NAME-$BUILD_NUMBER-$BRANCH</a>
</h3></body>
</html>
EOF
#copy html to tomcat folder

归档JOB_NAME.html

**/$JOB_NAME-$BUILD_NUMBER-$BRANCH.apk,**/$JOB_NAME.html

l、生成二维码——>指向 JOB_NAME.Html

下载QRcode.jar

QRcode.jar下载

shell 脚本截图

shell 脚本

# java -jar xxx/QRcode.jar url=xxx/test.apk image=qrcode.png save=xxx/xxx/
java -jar /Users/xiaxveliang/Library/Tomcat/webapps/QRCode.jar url=http://10.236.148.225:8080/jenkins/job/$JOB_NAME/$BUILD_NUMBER/artifact/build/outputs/apk/$JOB_NAME.html image=qrcode.png save=$WORKSPACE/build/outputs/apk/

归档qrcode.png

**/$JOB_NAME-$BUILD_NUMBER-$BRANCH.apk,**/$JOB_NAME.html,**/qrcode.png

m、邮件发送

Jenkins/系统管理/系统设置

job_name/configure

邮件模版

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>[Android内测]${ENV, var="JOB_DESCRIPTION"}</title>
</head><body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"offset="0" >
<h3>以下是Jenkins自动发送的邮件,请勿回复!</h3>
<div><table width="95%" cellpadding="0" cellspacing="0" border="1"style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"><tr><th><br /><h2>构建信息</h2></th></tr><tr><td><ul><li>项目名称 : $JOB_NAME-$BUILD_NUMBER-$BRANCH</li><br /><li>分支 : ${BRANCH}</a></li><br /><li>版本build号 : ${BUILD_NUMBER}</li><br />              <li><font size="3" color="black"><b><a href="http://10.236.148.225:8080/jenkins/job/${JOB_NAME}/">点击查看构建的详细信息</b></a></li><br /><li>Android客户端下载图片$BRANCH:<img src="http://10.236.148.225:8080/jenkins/job/$JOB_NAME/$BUILD_NUMBER/artifact/build/outputs/apk/qrcode.png"/></li><br /><li><a href="http://10.236.148.225:8080/jenkins/job/$JOB_NAME/$BUILD_NUMBER/artifact/build/outputs/apk/$JOB_NAME-$BUILD_NUMBER-$BRANCH.apk"> Android客户端下载地址</a> </li><br /><li #right-panel .data { line-height: 19px; white-space: initial; }>git log: ${CHANGES_SINCE_LAST_SUCCESS}</li><br /></ul></td></tr></table>
</div>
</body>
</html>

n、切换 test/online 环境


# test or online
# file
FILE_DIR=$WORKSPACE/src/com/test/constants/NetConstants.java
# code test or online
Test_Str="public static boolean TEST = true"
Online_Str="public static boolean TEST = false"
# test
# sed 's/123/456/g' replace 123 to 456
if [ $ENV_TEST = "true" ];then
`sed -i.bak "s/$Online_Str/$Test_Str/g" $FILE_DIR`
elif [ $ENV_TEST = "false" ];then
`sed -i.bak "s/$Test_Str/$Online_Str/g" $FILE_DIR`
fi# build
/Applications/Android\ Studio.app/Contents/gradle/gradle-4.10.1/bin/gradle clean assembleRelease

注:关于shell脚本,可参考 Linux shell 脚本

Android自动化打包——Jenkins自动化打包工具(Mac平台)相关推荐

  1. 九段刀客:Windows下配置Jenkins自动打包vue

    这里推荐两篇优秀的博客 windows中jenkins关联gitLab进行vue项目自动部署打包 Jenkins自动化构建vue项目然后发布到远程服务器 下面是我根据我都使用,记录下来的方法. 1.下 ...

  2. jenkins自动化打包android,Android使用Jenkins实现自动化打包

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Android项目开发过程中,每次测试打包都会浪费较长的时间,为了能节省时间.将精力更多的放在代码编写上, 可利用Jen ...

  3. android自动发布,Jenkins + Android 自动化打包 发布到蒲公英

    写在前面 近期Android的小伙伴们也开始要发测试版本了,由于之前搭建了Jenkins + fastlane自动化打包iOS应用 ,所以这次就想一起解决Android的问题 最先想到的方案当然就是跟 ...

  4. android 乐固渠道打包,Jenkins奇技淫巧 — Python乐固,多渠道打包篇(Android自动化构建)...

    Jenkins奇技淫巧 - 安装篇(mac) Jenkins奇技淫巧 - 配置篇 Jenkins奇技淫巧 - 安全篇 Jenkins奇技淫巧 - 发送邮件篇 Jenkins奇技淫巧 - 全局变量篇 J ...

  5. Android jenkins 自动化打包

    前言:前段时间因项目需要捣拾了一下Jenkins自动化打包,过程中遇到了很多的坑,在此记录一下.因为这篇博客是之后写的,所以有些具体的坑就不能回显了. 一,实现的功能 选择版本号,git 分支,渠道, ...

  6. iOS - mac环境Jenkins自动化打包并上传蒲公英分发从0到1详细搭建过程,自我的实践记录

    第一过程 :  环境的相关配置条: 0. mac 电脑,系统版本为为 10.14.5 1. 升级ruby环境: 我用的是  rvm 1.29.9,可在终端 用  rvm -v 查看当前版本. 2. 安 ...

  7. 使用jenkins自动化打包部署Vue项目。详细教程。

    此教程 jenkins是直接部署到linux服务器上.服务器系统:CentOS 7.3 64位. 流程:jenkins关联码云仓库,点击立即构建,执行shell进行构建,打包,把打包后的dist目录文 ...

  8. Jenkins自动化打包生成二维码下载链接

    在自动化打包流程中,Jenkins是一个不错的工具,可以帮助我们省去很多的打包和部署问题,解放了双手.通常,使用Jenkins 打包好的 apk 文件,我们可以上传到tomcat或者httpd所在服务 ...

  9. Android Gradle多渠道和自动化打包(深入篇)

    记录一下多渠道自动化打包的另外一些配置操作,主要分为以下5个方面 1.一个渠道多个信息 2.打包签名配置 3.修改生成apk包名 4.设置编译时的渠道信息 5.其他 添加多个渠道信息 上一面文章里面给 ...

最新文章

  1. activemq 各种版本区别_Apache ActiveMQ 各个版本所依赖的JDK版本
  2. mybatis mysql 存储过程_Mysql 存储过程+Mybatis调用实现插入操作例子 | 学步园
  3. java中子类继承父类程序执行顺序问题
  4. 云路由 vyatta 体验(六)防火墙
  5. 如何在WORD中设置标题1与标题2编号样式不一样
  6. ios请求php接口失败,laravel,php_iOS调用Laravel接口返回错误信息,laravel,php,ios - phpStudy...
  7. Java开发过程中需要注意的技巧有哪些?
  8. 使用octotree 出现Error: Connection error octotree解决办法
  9. 汇编语言指令大全(详细)
  10. 激光雷达在自动驾驶中的应用
  11. 这 9 个 Java 开源项目 yyds
  12. 如何设计艺术字体,可以从这两个方面入手
  13. 林达华——我的PhD生活
  14. 瑜伽修身 偷师动物12招(组图)
  15. HTML5网页设计阶梯教程(3)——编辑图片
  16. SSH的远程访问及控制
  17. 高德js-v1.4.13多图层 天地图 谷歌 高德mark点显示
  18. windows下查看错误码与错误信息
  19. SDOI R2 咕咕记
  20. SpringBoot天天吃货商品项目

热门文章

  1. java LinkedList
  2. 如何让自定义控件的字体瘦身(优化圆形圆点进度条)
  3. linux 多核 系统时钟,Linux时间子系统之(十五):clocksource
  4. Windows下RabbitMQ安装以及启动发生系统错误 1067。进程意外终止解决办法
  5. Python基础学习项目之 简单音乐播放器
  6. 中国新生儿重症监护呼吸机行业市场供需与战略研究报告
  7. Ideas插件的安装
  8. phi(线性欧拉+质数分布)
  9. MYSQL基础之SQL语句概念,规范,以及了解SELECT
  10. 禁用浏览器同源策略的方法