一、Jenkins自动打包配置

目标:1. 自动打包;2. 自动上传;3. 友好下载

1. Jenkins简介

Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
减少重复劳动,减少人工成本。
  • 持续、自动地构建/测试软件项目;
  • 监控一些定时执行的任务;

2. Jenkins配置

  • 添加git plugin和 role插件
  • 设置人员权限,根据角色授权
  • 启动访问http://ip/8080即可,见下3.1 开机自启脚本
  • 添加git项目,配置脚本,见下3.2 项目打包脚本3.3 Apk上传脚本

3. 自动化脚本

3.1 开机自启脚本

  • jenkins.sh
#! /bin/sh
# chkconfig: 2345 10 90
# description: jenkins ....
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
#prefix=/Users/laifeng/jenkins
#nohup $prefix/jenkins_start.sh >> $prefix/jenkins.log 2>&1 &JENKINS_ROOT=/Users/laifeng/jenkins
JENKINSFILENAME=jenkins.warstop(){echo "Stoping $JENKINSFILENAME "ps -ef|grep $JENKINSFILENAME |awk '{print $2}'|while read piddokill -9 $pidecho " $pid kill"done
}case "$1" in
start)echo "Starting $JENKINSFILENAME "nohup java -jar $JENKINS_ROOT/jenkins.war --httpPort=8080 >> $JENKINS_ROOT/jenkins.log 2>&1 &;;
stop)stop;;
restart)stopstart;;
status)ps -ef|grep $JENKINSFILENAME;;
*)printf 'Usage: %s {start|stop|restart|status}\n' "$prog"exit 1;;
esac
  • jenkins_start.sh
#!/bin/bashexport ANDROID_HOME=/usr/local/android-sdk
export GRADLE_HOME=/usr/local/gradle-2.2.1
export JENKINS_HOME=/Users/laifeng/.jenkins/Users/laifeng/jenkins/jenkins.sh start
/usr/local/apache-tomcat-7.0.67/bin/startup.sh
  • Mac上开机自启
sudo defaults write com.apple.loginwindow LoginHook /path/to/script 设置/path/to/script = /Users/laifeng/jenkins/jenkins_start.sh

3.2 自动化打包和上传

项目打包脚本

目前是直接运行Gradle命令,可脚本完成复杂需求

./gradlew clean assembleDebug

Apk上传脚本

  • deploy.sh
#!/bin/shecho "deploy begin......"apkName=$1currDay=$(date +%Y-%m-%d)
currTime=$(date +%H-%M-%S)
deployPath="/Users/laifeng/jenkins/android-apks/${currDay}"#echo "$deployPath"# 创建文件夹
if [ ! -d "$deployPath" ]; thenmkdir "$deployPath"
fi# 拷贝文件到目录
workspaceApkFile="${WORKSPACE}/crazytogether/build/outputs/apk/crazytogether-debug.apk"
deployApkFile="${deployPath}/${apkName}-${currTime}.apk"
#echo "$workspaceApkFile"
#echo "deployApkFile"cp ${workspaceApkFile} ${deployApkFile}echo "deploy success......"

Tomcat 文件服务器

1. 在tomcat安装目录\conf\Catalina\localhost下建立任意文件名xml文件,比如:download.xml<?xml version="1.0" encoding="UTF-8"?><Context  path="/download" docBase="D://download" crossContext="true"></Context>2. 修改tomcat配置文件,文件目录\conf\web.xml,要将红色的false改为true<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet>3. 重启tomcat,访问http://127.0.0.1:8080/download

遇到的问题

  • 添加git 项目无法获得权限,创建ssh key ,把本地ssh key 公钥上传到你用户的git server ,在Jenkins 添加认证,ssh 私钥。
  • 自启动脚本无法顺利执行,缺少环境变量,启动的用户不一致,启动顺序有先后,在启动脚本里添加必须的环境变量
  • 自启动的脚本是系统启动的,和登陆用户不是一个环境

  • 先在本地运行保证脚本的正确性
  • 根据Log 查看什么错误

二、Jenkins邮件配置

目标:1. 构建自动发邮件;2. 邮件模板;3. 组织友好下载链接;

1. 邮件配置

  1. 添加插件:Email Extension Plugin
  2. 设置SMTP服务器:系统管理->系统设置->在Extended E-mail Notification项设置smtp service。注意设置的不是jenkins邮件通知项。
  3. 设置job邮件配置:
    • 在“增加构建后操作步骤”选择“Editable Email Notification”
    • Project Recipient List,设置接受邮箱,多个邮箱空格隔开即可
    • Content Type,选择为HTML
    • Default Subject,邮件标题
    • Default Content,邮件内容,可以写html
    • 注意:这些选项里面都可以使用“全局邮件变量”,参见链接
  4. 如何设置友好的下载链接:
    • 下载地址每次都会发生变化,主要是“时间变量”
    • “时间变量”,Day,Time需要设置到jenkins的环境变量中,这样后续执行才能共用这些变量,使用
    • “构建环境”:勾选“Inject environment variables to the build process”,在下面"Evaluated Groovy script"选项中设置groovy脚本,添加到环境变量
    • 修改“构建 Excute shell“ deploy.sh脚本,脚本中的时间变量不在是本地定义,而是使用上面设置的构建变量 ${CURR_DAY}, ${CURR_TIME}
    • 修改“Editable Email Notification”-> "Default Content",当前版本根据“时间变量”${CURR_DAY}, ${CURR_TIME}动态生产下载地址
  5. Evaluated Groovy script 添加如下脚本内容,后续的脚本中,可以引用${CURR_DAY}, ${CURR_TIME}

    TimeZone.setDefault(TimeZone.getTimeZone('Asia/Shanghai'))
    def now = new Date()
    def map = [CURR_DAY: now.format('yyyy-MM-dd'), CURR_TIME: now.format('HH-mm-ss')]
    return map
  6. Email Default Content 内容

文件下载:<br/><hr/>
当前版本:<a href="http://10.155.59.205:8081/download/${CURR_DAY}/branch-2.6.1-${CURR_TIME}.apk" target="_blank">点击下载</a><br/>
历史版本:<a href="http://10.155.59.205:8081/download" target="_blank">http://10.155.59.205:8081/download</a><br/><br/>构建信息:<br/><hr/>
项目名称:$PROJECT_NAME<br/>
构建编号:$BUILD_NUMBER<br/>
构建状态:$BUILD_STATUS<br/>
触发原因:${CAUSE}<br/>
构建日志地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/>
构建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/>
变更集:${JELLY_SCRIPT,template="html"}<br/><hr/>(本邮件是程序自动下发的,请勿回复!<br   >

2. 其他问题

  • smtp邮件服务一致无法正常发生,原因可能出在,ssl授权,smtp端口等问题上
  • 时区问题默认获得的时间少8小时,需要TimeZone为“Asia/Shanghai”

[原] Jenkins Android 自动打包配置相关推荐

  1. android+360加固教程,Jenkins+Android自动打包续2:用360加固程序加固

    360加固保介绍,具体见其官方网站 360加固保 现在安卓APP为了代码安全,都要求在发布前先加固,可以自己写加固程序加固,我选择用第三方加固软件:360加固保加固(其他加固软件也一样),具体实现如下 ...

  2. 总结jenkins Android自动打包遇到的坑

    一.ndk-build报错 [root@hejianlai-jenkins LearnGradle]# ndk-build /usr/local/android-ndk-r8/ndk-build: / ...

  3. Centos配置Jenkins实现Android自动打包并上传到蒲公英

    本篇文章来自 徐永红  的投稿,给大家讲解Centos配置Jenkins实现Android自动打包并上传到蒲公英,希望对大家有所帮助. 徐永红 的博客地址: https://xuyonghong.cn ...

  4. Tomcat Jenkins iOS自动打包

    Tomcat Jenkins iOS自动打包 Jenkins 可以配合测试人员或者 CI 打包,主要作用是提供打包页面选择和参数传递,最后导出 ipa 包. 打包方式有如下几种 借助 Jenkins ...

  5. 自动打包linux,使用Jenkins如何自动打包部署linux

    使用Jenkins如何自动打包部署linux 发布时间:2020-11-25 14:47:07 来源:亿速云 阅读:86 作者:Leah 使用Jenkins如何自动打包部署linux?很多新手对此不是 ...

  6. qt 编译成apk_GitHub - qtxtz/AndroidMerageAPK: 实现android自动打包的程序

    AndroidMerageAPK 实现android自动打包的程序 行业背景 从事了三年手游运营平台的相关工作,从最开始不知道如何做一个sdk 到后来的几乎覆盖国内90%渠道的sdk,完成这些工作的同 ...

  7. Android多渠道打包配置

    Android多渠道打包配置 之前为了在同一台手机能同时安装测试包和生产包,采用配置buildType的方式来实现,相比于flavor,感觉是挺轻量又恰到好处的配置,具体见通过配置applicatio ...

  8. Android Studio 打包配置设置V1签名

    Android Studio 打包配置设置V1签名 Android Studio 打包配置设置V1签名 添加 注意 一定要有debug的设置 如果是用下图这个打包按钮 Android Studio 打 ...

  9. Android 多渠道打包配置,亲测,全集

    Android 多渠道打包配置 前言 为统计渠道数据和利用渠道进行操作,需进行渠道打包.本文目旨在熟悉原生gradle多渠道打包的方式,了解android基本的gradle构建配置,熟悉代码构建目录, ...

最新文章

  1. 时钟,复位和电源管理
  2. pythonsklearn乳腺癌数据集_使用sklearn的样本数据集
  3. Python的IDE之PyCharm:PyCharm的简介、安装、入门、使用方法之详细攻略
  4. oracle进城有哪些,oracle主要进程详解
  5. 瀑布流布局JavaScript实现
  6. spring boot集成oss
  7. VisualNet铁路通信管理
  8. c++设置一个二维字符组初值_6.8 C++字符数组
  9. isalnum c语言函数
  10. 今年7月,一起来看谷歌如何测试移动应用!
  11. java dom_Java DOM 解析 XML详解
  12. Android LayoutInflater概述
  13. 【爷青回系列】使用VMware虚拟机安装Windows XP系统!最详细!
  14. VMware 镜像安装
  15. Unity 本地化比较实用的实现方案
  16. 阿里巴巴和淘宝集团web安全标准
  17. html5图片做成简单拼图,html5版canvas自由拼图实例_html5教程技巧
  18. 啦啦啦啦啦啦啦啦啦啦啦啦这是一篇分界线
  19. dw自定义html模板,用DW编辑网站模板的方法
  20. 2021最稳C/C++学习路线

热门文章

  1. 【转】 LDA必读的资料
  2. Office 2016使用NTKO OFFICE控件提示“文件存取错误”的解决办法
  3. JS学习笔记之call、apply的用法
  4. 判断是否移动端设备的JS代码,超短,百度都用它
  5. Ubuntu手机系统会成为第四大手机系统吗
  6. oracle停止一切进程,oracle启动/停止的几种方法以及 启动和停止过程中出错的解决办法...
  7. python函数模块概念_python中模块和包的概念
  8. ui培训教程分享:平面设计怎样视觉空间感?
  9. UI培训教程分享:常用的商业插画风格有哪些?
  10. 【UI设计培训基础知识】设计中的点线面-线