Android自动化打包——Jenkins自动化打包工具(Mac平台)

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

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 html
 
cd $WORKSPACE/build/outputs/apk
rm -rf $JOB_NAME.html
touch $JOB_NAME.html
 
cat << 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 脚本

= THE END =

文章首发于公众号”CODING技术小馆“,如果文章对您有帮助,可关注我的公众号。
文章首发于公众号”CODING技术小馆“,如果文章对您有帮助,可关注我的公众号。
文章首发于公众号”CODING技术小馆“,如果文章对您有帮助,可关注我的公众号。

目录
相关文章
|
5月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
513 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
4月前
|
人工智能 搜索推荐 UED
一个牛逼的国产AI自动化工具,开源了 !
AiPy是国产开源AI工具,结合大语言模型与Python,支持本地部署。用户只需用自然语言描述需求,即可自动生成并执行代码,轻松实现数据分析、清洗、可视化等任务,零基础也能玩转编程,被誉为程序员的智能助手。
|
5月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
301 6
|
4月前
|
人工智能 缓存 自然语言处理
86_自动化提示:AutoPrompt工具
在当今人工智能领域,提示工程(Prompt Engineering)已成为释放大语言模型(LLM)潜能的关键技术。随着LLM规模和能力的不断增长,如何设计高效、精确的提示词成为研究和应用的焦点。然而,传统的手工提示工程面临着巨大挑战
|
5月前
|
安全 搜索推荐 机器人
风险规则引擎-RPA 作为自动化依赖业务决策流程的强大工具
机器人流程自动化(RPA)是一种通过软件“机器人”自动执行重复性任务的技术,能大幅提升工作效率。它适用于财务、电商等领域的标准化流程,如账单处理和退货管理。然而,RPA在复杂决策场景中存在局限,需结合决策模型(DMN)和业务规则管理系统(BRMS)实现流程与决策的协同自动化,从而增强灵活性与业务价值。
|
5月前
|
前端开发 安全 测试技术
Postman Mac 版安装终极指南:从下载到流畅运行,一步到位
Postman 是 API 开发与测试的高效工具,支持各类 HTTP 请求调试与团队协作。本文详解 Mac 版下载、安装步骤,助你快速上手。同时推荐一体化 API 协作平台 Apifox,集文档、调试、测试于一体,提升开发效率与团队协同能力。
|
8月前
|
iOS开发 MacOS 索引
在不受支持的 Mac 上安装 macOS Tahoe 26
在不受支持的 Mac 上安装 macOS Tahoe 26
602 0
在不受支持的 Mac 上安装 macOS Tahoe 26
|
11月前
|
Ubuntu Linux Shell
Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式
通过这个过程,用户不仅可以定制自己的桌面外观,还可以学习到更多关于 Linux 系统管理的知识,从而更好地掌握系统配置和主题管理的技巧。
1740 12
|
11月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。