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

Jenkins簡介

    Jenkins 是一個開源項目,提供了一種易於使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專一於更爲重要的業務邏輯實現上。同時 Jenkins 能實施監控集成中存在的錯誤,提供詳細的日誌文件和提醒功能,還能用圖表的形式形象地展現項目構建的趨勢和穩定性。Jenkins 的前身是Hudson是一個可擴展的持續集成引擎。 java

Jenkins安裝與配置

    下載地址:http://mirrors.jenkins-ci.org/war/latest/jenkins.war將下載的jenkins.war包直接放到tomcat下的webapps目錄,啓動tomcat便可安裝完成
android

    編碼問題:進入jenkins系統管理頁面,會出現如圖提示,可修改tomcat的server.xml配置,在Connector  標籤添加上 URIEncoding="UTF-8" 。     web

    

    安全配置:如圖 apache

    

    首先的先添加一個administer用戶做爲超級管理員,所有權限都打勾,如圖boluo用戶。保存,重啓。用剛剛添加的超級管理員做爲賬號名註冊一個賬號,便可擁有超級管理員權限。 tomcat

    JDK、gradle若是系統環境變量設置的話就不用再設置,用默認的就行。
安全

    郵件通知:系統管理>系統設置  如圖 app

    


Jenkins gradle插件安裝

    系統管理>管理插件>可選插件 選中Jenkins Gradle plugin插件安裝重啓便可。 webapp

    安裝慢的話,能夠把插件下載下來,手動上傳插件或設置代理。如圖 maven

    


Jenkins新建任務

    點擊新Job,輸入任務名稱選中構建一個自由風格的軟件項目,點擊OK,跳到配置頁面 svn

    源碼管理:如圖。

    

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


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%便可

相關文章
相關標籤/搜索