Jenkins分爲兩種,一種是自帶服務也就是安裝版本(不須要tomcat服務器自帶servlet), 另外是提供war版本,我此次是使用的安裝版本,我我的建議的時仍是使用tomcat + war的方式(會少不少坑,可是也有不足首先全部的東西會在C盤生成.Jenkins文件夾,有一些強迫症的,喜歡目錄整潔,仍是選擇安裝板吧),下面給出三種下載地址:java
安裝好了以後,直接打開網頁輸入http://locahost:8080,首次運行會要求輸入管理員密碼,以下圖所示,圖片上會顯示密碼的放置地址,看到沒/Users/dmx/.jenkins/secrets/initialAdminPassword,這個地址就表明放置密碼的位置,打開文件拷貝出密碼輸入就行 python
接着會跳出下面的界面,通常咱們會選擇第一項推薦安裝,等安裝完成後進入到頁面 android
下面就是建立用戶頁面,這裏建議建立用戶,下面提供了Continue as admin按鈕也可進入主頁,可是後期想建立用戶仍是很麻煩的,因此建議建立用戶 建立好用戶,就能夠進入到主頁了~選擇系統管理->管理插件->可選插件來開始安裝咱們須要的插件
Git plugin
Gradle Plugin
Email Extension Plugin
description setter plugin
build-name-setter
user build vars plugin
Post-Build Script Plug-in
Branch API Plugin
SSH plugin
Scriptler
Date Parameter Plug-in
Git Parameter Plug-In
必要的插件列表: 1.Branch API Plugin
2.build timeout plugin
3.build-name-setter
4.Credentials Binding Plugin
5.description setter plugin
6.Dynamic Parameter Plug-in
7.Environment Injector Plugin
9.GIT server Plugin
10.Gradle Plugin
11.Git Parameter Plug-In
12.Pipeline: Basic Steps
13.Pipeline: Build Step
14.Pipeline: Input Step
15.Pipeline: Nodes and Processes
16.Pipeline: Stage Step
17.Workspace Cleanup Plugin
18.Post-Build Script Plug-in
19.Email Extension Plugin
20.SSH Slaves plugin
21.Timestamper
若是你使用的SVN 還須要安裝 Subversion Plug-in
Subversion Release Manager plugingit
上面的這些插件你先所有安裝下來選擇的時候點直接安裝就好(安裝好後重啓服務輸入http://127.0.0.1:8080/restart),這裏面有些我是寫重複了,還有一些是已通過時了搜索不到了,這個能夠不用管,你把能裝的所有先安裝上去就行,注意插件比較多,保證網絡狀態良好不然個別容易失敗,須要從新安裝 4. Jenkins配置(這是重點) 進入:系統管理→系統設置 先設置3個變量的環境(這麼作是爲了在打包的時候遇到坑,血的教訓啊!相信我沒錯的) 選擇環境變量點擊增長如圖: github
Git 別名=隨意 Path to Git = git.exe文件的全路徑(d:\Git\bin\git.exe) apache
Gradle: 別名=隨意 GRADLE_HOME= gradle的安裝目錄路徑xx/gradle\gradle-2.14.1 windows
android.enableAapt2=false
APP_VERSION = 1.0.0
IS_JENKINS = false
BUILD_TYPE = debug
PRODUCT_FLAVORS = xiaomi
ALIAS_PASSWORD = 123456
STORE_PASSWORD = 123456
BUILD_PATH_JENKINS = E:\\Jenkins\\workspace\\StarTeacher\\JenkinsApk
BUILD_PATH_LOCAL = E:\\AS_PROJECT\\TestJenkins
BUILD_TIME= ''
STORE_FILE=G:/android/zhangwork/StarTeacher/keystore/star.jks
APPNAME=starteacher
複製代碼
BUILD_PATH_JENKINS 這個設定的目錄我是創建在Jenkins安裝目錄的workspace裏面的項目裏面,這樣作是問了方便訪問的到路徑 app的.gradle文件tomcat
apply plugin: 'com.android.application'
def getDate() {
def date = new Date()
def formattedDate = date.format('yyyyMMddHHmm')
return formattedDate
}
def verCode = 1000000
android {
compileSdkVersion 26
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
defaultConfig {
applicationId "com.shinyread.starteacher"
minSdkVersion 19
targetSdkVersion 26
versionCode verCode
versionName APP_VERSION
multiDexEnabled true
flavorDimensions "versionCode"
// 打包排除如下文件,屏蔽因as自身bug,在沒有重複引用jar時,提示jar重複引用的問題
packagingOptions {
exclude 'META-INF/rxjava.properties'
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
}
}
signingConfigs {
signingConfig {
keyAlias 'star'
keyPassword ALIAS_PASSWORD
storeFile file(STORE_FILE)
storePassword STORE_PASSWORD
}
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.signingConfig
}
debug {
signingConfig signingConfigs.signingConfig
}
}
flavorDimensions "default"
productFlavors {
commonsoon {dimension "default"}
xiaomi {dimension "default"}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
//修改生成的apk名字及輸出文件夾
applicationVariants.all { variant ->
variant.outputs.all {
//新名字
def newName
//時間戳
def timeNow
//輸出文件夾
def outDirectory
//是否爲Jenkins打包,輸出路徑不一樣
if ("true".equals(IS_JENKINS)) {
//Jenkins打包輸出到服務器路徑
timeNow = BUILD_TIME
//BUILD_PATH爲服務器輸出路徑
outDirectory = BUILD_PATH_JENKINS
variant.getPackageApplication().outputDirectory = new File(outDirectory + "/" + timeNow)
//AutoBuildTest-v1.0.1-xiaomi-release.apk
newName=APPNAME+'_'+APP_VERSION+"_${variant.productFlavors[0].name}_"+variant.buildType.name+'.apk'
} else {
//本機打包輸出在本機路徑
timeNow = getDate()
outDirectory = BUILD_PATH_LOCAL
if ('debug'.equals(variant.buildType.name)) {
newName=APPNAME+"_${variant.productFlavors[0].name}_"+"${APP_VERSION}_debug.apk"
} else {
variant.getPackageApplication().outputDirectory = new File(outDirectory + "/" + timeNow)
//AutoBuildTest-v1.0.1-xiaomi-release.apk
newName=APPNAME+"_${variant.productFlavors[0].name}_"+APP_VERSION+'_'+variant.buildType.name+'.apk'
}
}
outputFileName=newName
}
}
}
複製代碼
其中variant.getPackageApplication().outputDirectory = new File(outDirectory + "/" + timeNow)是爲了自定義apk的輸出路徑這個跟舊版本的方法不同 下面咱們進入到Jenkins對上述參數進行對應配置。 找到 參數化構建過程選項→打勾 選擇→添加參數安全
clean assemble${PRODUCT_FLAVORS}${BUILD_TYPE} --stacktrace --debug
複製代碼
並勾選選項以下圖 bash
安裝圖片支持插件Pillow和二維碼生成庫**qrcode** 安裝Pillow命令:pip install -I --no-cache-dir -v Pillow 安裝qrcode 命令:pip install myqr 這時咱們要配置PYTHON的全局環境了,上面開始的時候我已經放了圖片,具體位置看上圖 生成二維碼 進入項目→構建→增長構建步驟,選擇Execute windows batch command, 填寫生成二維碼的命令以下
myqr http://127.0.0.1:8080/job/StarTeacher/ws/JenkinsApk/%BUILD_TIME%/%APPNAME%_%APP_VERSION%_%PRODUCT_FLAVORS%_%BUILD_TYPE%.apk -v 1 -l L -d E:/Jenkins/workspace/StarTeacher/JenkinsApk/%BUILD_TIME%
複製代碼
若是你是tomcat呢要怎麼作? 進入tomcat安裝目錄conf找到server.xml文件,在Host節點中添加以下配置
<Context reloadable="true" docBase="E://JenkinsApk" crossContext="true" path="/JenkinsApk"/>
複製代碼
重啓確保你能訪問http://localhost:8080/JenkinsApk,最後只須要在二維碼的命令中替換地址就好 展現二維碼 找到構建後操做 → 增長構建後操做步驟→Set build description以下圖
<img src='http://127.0.0.1:8080/job/StarTeacher/ws/JenkinsApk/${BUILD_TIME}/qrcode.png' width=200px height=200px > <br> <a href='http://127.0.0.1:8080/job/StarTeacher/ws/JenkinsApk/${BUILD_TIME}/${APPNAME}_${APP_VERSION}_${PRODUCT_FLAVORS}_${BUILD_TYPE}.apk'>點擊下載-V${APP_VERSION}.apk</a>
複製代碼
OK大功告成看看最後的效果吧!驚喜不驚喜啊記得在全局安全配置裏面把Markup Formatter的設置更改成Safe HTML,否則是不支持HTML顯示的