Jenkins Android自动打包平台配置
2016-12-05 02:44
513 查看
Jenkins Android自动打包平台配置
http://tianshaojie.com/2016/02/14/Jenkins-Android%E8%87%AA%E5%8A%A8%E6%89%93%E5%8C%85%E5%B9%B3%E5%8F%B0%E9%85%8D%E7%BD%AE/http://tianshaojie.com/2016/02/14/Jenkins-Android%E8%87%AA%E5%8A%A8%E6%89%93%E5%8C%85%E5%B9%B3%E5%8F%B0%E9%85%8D%E7%BD%AE/
一、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.war stop(){ echo "Stoping $JENKINSFILENAME " ps -ef|grep $JENKINSFILENAME |awk '{print $2}'|while read pid do kill -9 $pid echo " $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) stop start ;; status) ps -ef|grep $JENKINSFILENAME ;; *) printf 'Usage: %s {start|stop|restart|status}\n' "$prog" exit 1 ;; esac |
#!/bin/bash export 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 |
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/sh echo "deploy begin......" apkName=$1 currDay=$(date +%Y-%m-%d) currTime=$(date +%H-%M-%S) deployPath="/Users/laifeng/jenkins/android-apks/${currDay}" #echo "$deployPath" # 创建文件夹 if [ ! -d "$deployPath" ]; then mkdir "$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
文件服务器
在tomcat安装目录\conf\Catalina\localhost下建立任意文件名xml文件,比如:download.xml<?xml version="1.0" encoding="UTF-8"?> <Context path="/download" docBase="D://download" crossContext="true"> </Context> |
<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> |
遇到的问题
添加git 项目无法获得权限,创建ssh key ,把本地ssh key 公钥上传到你用户的git server ,在Jenkins 添加认证,ssh 私钥。自启动脚本无法顺利执行,缺少环境变量,启动的用户不一致,启动顺序有先后,在启动脚本里添加必须的环境变量
自启动的脚本是系统启动的,和登陆用户不是一个环境
先在本地运行保证脚本的正确性
根据Log 查看什么错误
二、Jenkins邮件配置
目标:1. 构建自动发邮件;2. 邮件模板;3. 组织友好下载链接;
1.
邮件配置
添加插件:Email Extension Plugin设置SMTP服务器:系统管理->系统设置->在Extended E-mail Notification项设置smtp service。注意设置的不是jenkins邮件通知项。
设置job邮件配置:
在“增加构建后操作步骤”选择“Editable Email Notification”
Project Recipient List,设置接受邮箱,多个邮箱空格隔开即可
Content Type,选择为HTML
Default Subject,邮件标题
Default Content,邮件内容,可以写html
注意:这些选项里面都可以使用“全局邮件变量”,参见链接
如何设置友好的下载链接:
下载地址每次都会发生变化,主要是“时间变量”
“时间变量”,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}动态生产下载地址
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 |
文件下载:<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+Gradle+Git+Pyger+二维码搭建Android自动打包平台
- [原] Jenkins Android 自动打包配置(转)
- Jenkins + GitLab + CocoaPod 的自动打包平台配置(从build到export success)
- Jenkins+Gradle+Git+Pyger+二维码搭建Android自动打包平台
- React-native Android 在Jenkins上配置自动打包方案
- Jenkins Android 自动打包配置
- Android自动化打包部署及配置文档(基于Jenkins平台)
- Jenkins下Android自动化打包(图文讲解)(自动发布内测平台)
- [原] Jenkins Android 自动打包配置
- Jenkins Android 自动打包配置
- windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- 用jenkins搭建android自动打包环境
- Windows平台下使用Jenkins自动发布Unity之Android程序与补丁
- Jenkins自动打包配置
- 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】
- Windows下简易Jenkins构建Android自动打包 - Ant
- Android平台自动打包
- 【Android】使用Jenkins+Gradle+FTP,实现自动打包,自动上传文件至FTP
- Jenkins+gradle+SVN+Android 定时自动打包
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生