Jenkins+Gradle實現android開發持續集成、打包

轉:http://my.oschina.net/uboluo/blog/157483


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配置


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

遇到的問題:tomcat下gradle 構建如果遇到Could not load Logmanager "org.apache.juli.ClassLoaderLogManager"

解決:註釋掉catalina.bat裏面的set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%即可


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章