Android项目jenkins自动化构建之360加固(一)

最近Jenkins接手一个项目,项目自动化构建都是在jenkins上做的,包括打包构建——360加固——apk签名——邮件发送apk
总共这几步,整个项目构建是用jenkins Jenkinsfile(流水线)操作。我之前大神linux用的牛,各种脚本自动化,本人在此之前都没写过脚本呢,现在迁移项目,自己也边学边做,增长知识。废话不说,现在我们开始自动化构建之旅

jenkins 流水线建立

Jenkins流水线有两种构建方式,流水线和多分支流水线,二者区别很明显,流水线对应你项目单一某个分支,而多分支可对项目所有分支进行管理。

我项目开发使用的gitflow工作流,每次上线都是一个release分支,使用多分支流水线就不用每次release分支都创建流水线,并且可保留每次发布版本,一目了然,如下图

用哪种流水线就根据自己情况选择,我这就介绍多分支流水线的了,废话不多说,我们一步步开始


建立个流水线分支,进入配置如上图,首先配置分支源,现在都是git

  1. Project Repository 配置git http地址
  2. 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自动化构建之发送邮件


我在整个梳理过程遇到的问题

  1. 360登陆过程一直失败,提示cookie过期,大家可加入360客服群寻求处理。我这儿采取了个取巧办法,360加固工具登陆后会生成个jiagu.db文件。我把这个问价copy到我git的加固工具中了。(方式不友好,大家可以找客服问我呢其他方式)

Android项目jenkins自动化构建之360加固(一)相关推荐

  1. Jenkins之自动进行360加固

    文章目录 思路 编写Gradle自定义任务 命令行调用360加固 执行构建并获取apk 获取加固程序 执行加固 签名 拷贝文件到指定位置 Jenkins调用加固并发送邮件 项目中使用到了360加固与阿 ...

  2. jmeter添加html,Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告...

    目录 一.jmeter报告仪表板相关信息 二.文件修改说明 三.jmeter.properties文件配置 四.user.properties文件配置 五.新建jtl报告目录 六.复制jmeter.p ...

  3. 【二十三】win 10 :Jmeter 报告可视化 —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告

    目录 一.jmeter报告仪表板相关信息 二.文件修改说明 三.jmeter.properties文件配置 四.user.properties文件配置 五.新建jtl报告目录 六.复制jmeter.p ...

  4. 6个 C 语言项目的自动化构建和测试工具。(文末有位小可爱)

    答案见文末. 今天给大家推荐6个桃子C 语言项目的自动化构建和测试工具,这6个工具都是非常甜蜜实用的,超市里面找不到的.另外今天我们的文末有一位小可爱想请教大家一个问题,希望大家帮帮她. 上期入口:3 ...

  5. express搭建项目--express自动化构建工具

    express自动化构建工具 一.   安装express-generator 全局安装express自动化构建工具 npm install -g express-generator 使用expres ...

  6. Android项目Jenkins配置(自定义参数构建,构建完成后360加固+自动下载签名+多渠道配置,自动乐固加固+签名,自动上传蒲公英,自动上传OSS,自动发送钉钉消息,自动发送企业微信应用)

    Mac,window,unix,Linux等系统安装Jenkins服务就不说了... 直接上干货 编译后shell脚本参考 #推送钉钉群curl 'https://oapi.dingtalk.com/ ...

  7. 用Jenkins自动化构建Android和iOS应用

    背景 随着业务需求的演进,工程的复杂度会逐渐增加,自动化的践行日益强烈.事实上,工程的自动化一直是我们努力的目标,能有效提高我们的生产效率,最大化减少人为出错的概率,实现一些复杂的业务需求应变. 场景 ...

  8. git log 获取构建时间_Docker 运行 Jenkins 自动化构建 .NET Core 项目

    (给DotNet加星标,提升.Net技能) 转自:ZKEASOFTzkea.net/codesnippet 目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器. 接下来介绍一下如何在容器 ...

  9. 基于K8S构建企业级Jenkins CI/CD平台实战(三) 之 带你实战Spring boot/Cloud 项目 CI/CD jenkins自动化构建、部署过程

    需要环境 Git(GitLab) Harbor 私服 kubernetes-plugin 使用 Kubernetes jenkins 通过前面三篇我们已经了解了jenkins和 kubernetes- ...

最新文章

  1. 流数据机器学习平台SAMOA简介
  2. oracle导入sql文件
  3. UI组件之ImageView及其子类(二)ImageButton ,ZoomButton
  4. 微信浏览器 返回按钮二次返回
  5. Dubbo的发展历史
  6. 彻底理解ThreadLocal
  7. lvs系列之dr(二)
  8. IOS之Swift的CoreData入门使用案例
  9. 在HTML中嵌入PHP代码,有以下几种方法,其中错误的是( )
  10. 如何修改帝国cms文章点击量默认值和成倍增加
  11. 数字后端基本概念介绍<IO Buffer>
  12. Eclipse 中部署应用到任意服务器
  13. 理解 Linux 配置文件【转】
  14. 手把手教你学DSP(TMS320X281X) 2020-11-30
  15. 微信聊天记录导出(2020新版)
  16. Windows下让Tomcat6定时重启服务的方法
  17. pytorch学习笔记——2.4torch.nn模块简介
  18. 安装、配置 Java JDK 和 JRE,并卸载自带 OpenJDK
  19. VR全景有什么应用,和传统摄影的区别,发展前景如何?
  20. Excel制作资产负债表

热门文章

  1. GBase8s数据库运行模式
  2. 大厂裁员,小厂倒闭,程序员如何应对?
  3. c++小学生入门课程(一)
  4. 电工(海波)口录(自用/长期更新)
  5. 学习Autodock分子对接
  6. 计算机操作员高级理论知识试卷,计算机操作员高级理论知识试卷..doc
  7. 新技能get|有了它你也可以做电商app
  8. 系统辨识专题(二)——多旋翼飞行器建模
  9. 计算无边界云栖大会深圳峰会抢鲜报道
  10. pytorch - state_dict() , parameters() 详解