Jenkins+Gradle实现android开发持续集成、打包

原文:http://my.oschina.net/uboluo/blog/157483#OSC_h2_5

请参考:android-downloader :https://github.com/snowdream/android-downloader

Jenkins简介

    Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins 的前身是Hudson是一个可扩展的持续集成引擎。

Jenkins安装与配置

    下载地址:http://mirrors.jenkins-ci.org/war/latest/jenkins.war将下载的jenkins.war包直接放到tomcat下的webapps目录,启动tomcat即可安装完成

    编码问题:进入jenkins系统管理页面,会出现如图提示,可修改tomcat的server.xml配置,在Connector  标签添加上 URIEncoding="UTF-8" 。    

    

    安全配置:如图

    

    首先的先添加一个administer用户作为超级管理员,全部权限都打勾,如图boluo用户。保存,重启。用刚刚添加的超级管理员作为帐号名注册一个帐号,即可拥有超级管理员权限。

    JDK、gradle如果系统环境变量设置的话就不用再设置,用默认的就行。

    邮件通知:系统管理>系统设置  如图

    


Jenkins gradle插件安装

    系统管理>管理插件>可选插件 选中Jenkins Gradle plugin插件安装重启即可。

    安装慢的话,可以把插件下载下来,手动上传插件或设置代理。如图

    


Jenkins新建任务

    点击新Job,输入任务名称选中构建一个自由风格的软件项目,点击OK,跳到配置页面

    源码管理:如图。

    

    Repository URL: svn 的 的地址,如果输入的地址需要输入用户名和密码,将自动跳出红色的提示信息,点击"enter credential" 进入设置svn 用户名

    构建触发器:如图

    

    Build periodically:周期进行项目构建(它不关心源码是否发生变化)    

    Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。

    这里我选Poll SCM,(H/5 H(9-23) * * *)

    第一个参数代表的是分钟 minute,取值 0~59;
    第二个参数代表的是小时 hour,取值 0~23;
    第三个参数代表的是天 day,取值 1~31;
    第四个参数代表的是月 month,取值 1~12;
    最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
    如H/5 * * * * 表示的就是每5分钟检查一次源码变化。

    构建:添加Invoke Gradle script,配置如图

    

    Switches :即gradle 后面所接的命令。上面相当于执行gradle clean build命令。

    构建后操作:构建失败可以发送邮件通知,如图

    

gradle 介绍

    Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具。现在已是android的默认构建工具了。

android build.gradle配置


01 buildscript {
02     repositories {
03         mavenCentral()
04     }
05     dependencies {
06         classpath 'com.android.tools.build:gradle:0.5.6'//依赖
07     }
08 }
09  
10 apply plugin: 'android'
11  
12 dependencies {
13     compile fileTree(dir: 'libs', include: '*.jar')//添加android依赖libs
14 }
15  
16 android {
17     compileSdkVersion 17
18     buildToolsVersion "17.0.0"
19     //签名
20     signingConfigs {
21         myConfig {
22             storeFile file("debug.keystore")
23             storePassword "android"
24             keyAlias "androiddebugkey"
25             keyPassword "android"
26         }
27     }
28      
29     defaultConfig {
30         versionCode 1
31         versionName getVersionName()
32         minSdkVersion 8
33         targetSdkVersion 17
34     }
35  
36     //渠道
37     productFlavors {
38         google{
39          
40         }
41         tantai{
42          
43         }
44     }
45      
46     buildTypes{
47         release {
48             signingConfig signingConfigs.myConfig
49             runProguard true
50             proguardFile 'proguard.cfg'
51         }
52     }
53      
54     sourceSets {
55         main {
56             manifest {
57                 srcFile 'AndroidManifest.xml'
58             }
59             java {
60                 srcDir 'src'
61             }
62             res {
63                 srcDir 'res'
64             }
65             assets {
66                 srcDir 'assets'
67             }
68             resources {
69                 srcDir 'src'
70             }
71             aidl {
72                 srcDir 'src'
73             }
74         }
75     }
76 }
77  
78  
79 tasks.withType(Compile) {
80     options.encoding = "UTF-8"
81 }
82 //替换AndroidManifest.xml的UMENG_CHANNEL_VALUE字符串为渠道名称
83 android.applicationVariants.all{ variant ->
84     variant.processManifest.doLast{
85         copy{
86             from("${buildDir}/manifests"){
87                 include "${variant.dirName}/AndroidManifest.xml"
88             }
89             into("${buildDir}/manifests/$variant.name")
90  
91             filter{
92                 String line -> line.replaceAll("UMENG_CHANNEL_VALUE""$variant.name")
93             }
94  
95             variant.processResources.manifestFile = file("${buildDir}/manifests/${variant.name}/${variant.dirName}/AndroidManifest.xml")
96         }   
97    }
98 }

遇到的问题:tomcat下gradle 构建如果遇到Could not load Logmanager "org.apache.juli.ClassLoaderLogManager"

解决:注释掉catalina.bat里面的set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%即可




  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值