轉: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%即可