Android项目jenkins自动化构建之360加固(一)
Android项目jenkins自动化构建之360加固(一)
最近Jenkins接手一个项目,项目自动化构建都是在jenkins上做的,包括打包构建——360加固——apk签名——邮件发送apk
总共这几步,整个项目构建是用jenkins Jenkinsfile(流水线)操作。我之前大神linux用的牛,各种脚本自动化,本人在此之前都没写过脚本呢,现在迁移项目,自己也边学边做,增长知识。废话不说,现在我们开始自动化构建之旅
jenkins 流水线建立
Jenkins流水线有两种构建方式,流水线和多分支流水线,二者区别很明显,流水线对应你项目单一某个分支,而多分支可对项目所有分支进行管理。
我项目开发使用的gitflow工作流,每次上线都是一个release分支,使用多分支流水线就不用每次release分支都创建流水线,并且可保留每次发布版本,一目了然,如下图
用哪种流水线就根据自己情况选择,我这就介绍多分支流水线的了,废话不多说,我们一步步开始
建立个流水线分支,进入配置如上图,首先配置分支源,现在都是git
- Project Repository 配置git http地址
- Credentials 配置git证书,简单来说就是你的Git账号密码,点击右边add按钮如下图写账号密码就行
3.Behaviours 这个其实配置一些对分支的管理有许多配置我就不一一解释(主要我也不知道几个,哈哈) 我这而选择的 Discover branches 然后配置了release/* 目的就是只扫描分支为release分支,从本文章第二张图就可看出只有两个release开头的分支(千万看到上图不要以为我只有这两个分支,dev/master都有滴,只是过滤而已,你也可以都显示)
配置jenkinsfile脚本路径
上图配置脚本路径,这很简单,我的就放在项目根目录下,所以直接写脚本文件名字Jenkinsfile就行
现在一个简单流水线分支就完成
此时就该写Jenkinsfile脚本了,脚本书写我就不说的,大家百度学习下(实话说吧。。。本人还有些不明白,等整明白再单独写篇)。下面贴出我项目中关于加固的部分代码
pipeline {agent {label '这儿配置Jenkins镜像'}options {timeout(time: 1, unit: 'HOURS')}stages {stage ('Enhance') {when {expression { BRANCH_NAME ==~ /release\/.*/ }}steps {sh "./buildsystem/jiagu.sh"}}}
}
上面脚本当分支名以release开头就执行加固脚本
重点到了,本文章的重头,360加固脚本
好了先上代码,实现都在注释中写好了
#!/bin/bash
# 先确定当前路径
cd `dirname $0`/../
projectDir=`pwd`
buildDir="$projectDir/build"# 以下构建release apkcd $buildDir
# 记录当前时间文件
touch timestampFile
echo "Build release official apk"
cd $projectDir
# invoke gradlew to build the apk
./gradlew release || exit 1
# 寻找构建完成的apk 并且对比时间,表明是此次最新构建apk
targetApk=`find $projectDir/release -name "*.apk" -newer $buildDir/timestampFile`
if [ ! -n "$targetApk" ]; thenecho "Apk is not changed. Exit"exit 0
fi# 以下为下载360加固工具包cd ~/
jgCacheDir=".android/jiagu"
jgVersion="2.0"
jgFolder=360-jiagu-$jgVersion
jgZipName=$jgFolder.zip
if [ ! -d "$jgCacheDir" ]; thenmkdir -p ${jgCacheDir}
fi
cd $jgCacheDirif test -e "$jgZipName"; thenzflag=" -z $jgZipName"
elsezflag=""
fi
# 360加固我上传到gitHub 各位可配置下面路径下载
# GitHub项目地址 https://github.com/smallTrong/360jiagu 这里面解释了1.0与2.0区别,各位选择下载
curl -L -e ";auto" -o $jgZipName https://github.com/smallTrong/360jiagu/archive/2.0.zip# 以下开始解压下载包cd $buildDir
echo "Extract jiagu.zip"
unzip -oq ~/$jgCacheDir/$jgFolder -d .
if [ ! -d "jiagu" ]; thenmv 360* jiagu
elsecp -rf $jgFolder/* jiagu/
ficd $buildDir/jiagu
cd ..
chmod -R 777 jiagu
cd jiagu# 360加固登陆并且开始加固(未作签名) 以下java命令为360加固官网提供,大家可以去查阅,有许多功能java -jar jiagu.jar -login 用户名 密码
# remove unnecessary service config
java -jar jiagu.jar -config -
# processmkdir -p outputfor file in `find output -name "*.apk"`; dorm $file;
done
echo "Start process $targetApk"
java -jar jiagu.jar -jiagu $targetApk output || exit 1
enhancedApk=`find output -name "*.apk"`#至此加固包已出 但是此包未签名,大家可自行写签名脚本进行签名,或者在360官网查阅签名配置,可以在上面加固时直接签名
至此加固包已出 但是此包未签名,大家可自行写签名脚本进行签名,或者在360官网查阅签名配置,可以在上面加固时直接签名。也可查阅我这篇博,有签名脚本
Android项目jenkins多分支流水脚本线构建总结(三)
下面该发送邮件了,请关注下篇
Android Jenkins自动化构建之发送邮件
我在整个梳理过程遇到的问题
- 360登陆过程一直失败,提示cookie过期,大家可加入360客服群寻求处理。我这儿采取了个取巧办法,360加固工具登陆后会生成个jiagu.db文件。我把这个问价copy到我git的加固工具中了。(方式不友好,大家可以找客服问我呢其他方式)
Android项目jenkins自动化构建之360加固(一)相关推荐
- Jenkins之自动进行360加固
文章目录 思路 编写Gradle自定义任务 命令行调用360加固 执行构建并获取apk 获取加固程序 执行加固 签名 拷贝文件到指定位置 Jenkins调用加固并发送邮件 项目中使用到了360加固与阿 ...
- jmeter添加html,Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告...
目录 一.jmeter报告仪表板相关信息 二.文件修改说明 三.jmeter.properties文件配置 四.user.properties文件配置 五.新建jtl报告目录 六.复制jmeter.p ...
- 【二十三】win 10 :Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告
目录 一.jmeter报告仪表板相关信息 二.文件修改说明 三.jmeter.properties文件配置 四.user.properties文件配置 五.新建jtl报告目录 六.复制jmeter.p ...
- 6个 C 语言项目的自动化构建和测试工具。(文末有位小可爱)
答案见文末. 今天给大家推荐6个桃子C 语言项目的自动化构建和测试工具,这6个工具都是非常甜蜜实用的,超市里面找不到的.另外今天我们的文末有一位小可爱想请教大家一个问题,希望大家帮帮她. 上期入口:3 ...
- express搭建项目--express自动化构建工具
express自动化构建工具 一. 安装express-generator 全局安装express自动化构建工具 npm install -g express-generator 使用expres ...
- Android项目Jenkins配置(自定义参数构建,构建完成后360加固+自动下载签名+多渠道配置,自动乐固加固+签名,自动上传蒲公英,自动上传OSS,自动发送钉钉消息,自动发送企业微信应用)
Mac,window,unix,Linux等系统安装Jenkins服务就不说了... 直接上干货 编译后shell脚本参考 #推送钉钉群curl 'https://oapi.dingtalk.com/ ...
- 用Jenkins自动化构建Android和iOS应用
背景 随着业务需求的演进,工程的复杂度会逐渐增加,自动化的践行日益强烈.事实上,工程的自动化一直是我们努力的目标,能有效提高我们的生产效率,最大化减少人为出错的概率,实现一些复杂的业务需求应变. 场景 ...
- git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目
(给DotNet加星标,提升.Net技能) 转自:ZKEASOFTzkea.net/codesnippet 目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器. 接下来介绍一下如何在容器 ...
- 基于K8S构建企业级Jenkins CI/CD平台实战(三) 之 带你实战Spring boot/Cloud 项目 CI/CD jenkins自动化构建、部署过程
需要环境 Git(GitLab) Harbor 私服 kubernetes-plugin 使用 Kubernetes jenkins 通过前面三篇我们已经了解了jenkins和 kubernetes- ...
最新文章
- 流数据机器学习平台SAMOA简介
- oracle导入sql文件
- UI组件之ImageView及其子类(二)ImageButton ,ZoomButton
- 微信浏览器 返回按钮二次返回
- Dubbo的发展历史
- 彻底理解ThreadLocal
- lvs系列之dr(二)
- IOS之Swift的CoreData入门使用案例
- 在HTML中嵌入PHP代码,有以下几种方法,其中错误的是( )
- 如何修改帝国cms文章点击量默认值和成倍增加
- 数字后端基本概念介绍<IO Buffer>
- Eclipse 中部署应用到任意服务器
- 理解 Linux 配置文件【转】
- 手把手教你学DSP(TMS320X281X) 2020-11-30
- 微信聊天记录导出(2020新版)
- Windows下让Tomcat6定时重启服务的方法
- pytorch学习笔记——2.4torch.nn模块简介
- 安装、配置 Java JDK 和 JRE,并卸载自带 OpenJDK
- VR全景有什么应用,和传统摄影的区别,发展前景如何?
- Excel制作资产负债表