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技术小馆“,如果文章对您有帮助,可关注我的公众号。

目录
相关文章
|
4月前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
185 10
|
9天前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
|
5月前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
3月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
3月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
3月前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
5月前
|
安全 Java Android开发
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
如何解压OTA升级包、编辑升级包内容(例如移除不需要更新的分区)、重新打包、签名以及验证OTA文件的过程。
404 2
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
|
3月前
|
iOS开发 开发者 MacOS
在线创建ios打包证书无需mac
这个文件并不一定需要使用mac OS去创建,在苹果开发者中心,生成了cer格式的证书后,导出p12证书这个过程,其实也并不一定需要mac电脑来完成。
44 0
|
5月前
|
jenkins Linux 持续交付
在Linux中,如何使用Jenkins和Ansible进行虚拟化环境的自动化和持续集成/持续部署(CI/CD)?
在Linux中,如何使用Jenkins和Ansible进行虚拟化环境的自动化和持续集成/持续部署(CI/CD)?
|
5月前
|
JavaScript jenkins 持续交付
自动化部署与持续集成:使用Jenkins和Docker优化开发流程
【8月更文挑战第31天】在软件开发的世界里,时间就是一切。本文将引导你通过Jenkins和Docker的强大组合,实现自动化部署和持续集成,让你的开发流程如丝般顺滑。我们将从基础设置开始,逐步深入到构建管道,最终实现一键部署的梦想。准备好让你的开发效率飞跃,一起探索这个令人兴奋的旅程吧!

推荐镜像

更多
下一篇
开通oss服务