一 環境配置
1 首先去jenkins官網里去下載相應系統版本的軟件包,這里我下載的是jenkins.war包。下載完成后,將其放在你的任意自定義目錄,比如我的,就放在D:\jekins里面,而后打開命令行,進入到war包相應的目錄,輸入Java -jar jenkins.war這時候jenkins的服務就會啟動了,其啟動的部分截圖如下:
2 打開瀏覽器,輸入http://localhost:8080/,你將會看到如下界面 , 代表 Jenkins 已經部署完成了,下一步安裝 Jenkins.
3 輸入密碼,密碼路徑在本地安裝jenkins的目錄下,
4 然后就會跳轉到如下圖所示的界面
我去,不對啊,網上都是安裝插件的截圖啊,怎么就這樣了,一直提示離線,該怎么解決,后來通過查詢資料,解決方案如下
然后修改.jenkins/hudson.model.UpdateCenter.xml,打開該文件,其內容如下:
<?xml version='1.0' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
將里面的https更改為http,然后重啟jenkins即可,如下圖:
<?xml version='1.0' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://updates.jenkins.io/update-center.json</url>
</site>
</sites>
重啟jenkins之后,再次訪問,跳過之前的步驟,這時候就到了目標界面,如下圖所示:
我們選擇第一項,安裝默認Jenkins插件。安裝插件過程如下圖所示:
等所有的插件都安裝完成,我們將會看到用戶名設置界面。
這個界面你有兩個選擇可以操作,
選擇一:直接點擊 Continue as Admin 安裝,默認此時的超級管理員為 admin .
選擇二:輸入用戶名,密碼,確認密碼,全名,電子郵件地址。然后點擊 Save and Finish . 注意你輸入的用戶名就是 Jenkins 的超級管理員。需要注意的是,上面的每一項都需要填寫,否則點擊 Save and Finish 按鈕沒有效果。
等上面的步驟都操作完畢,你將會看到如下界面,代表 Jenkins 的插件安裝和超級管理員已經配置好了。
二 新建一個任務
而后在進行其他環境變量的設置
1 系統管理---->系統設置(全局設置&路徑)---->全局屬性,如下圖所示:
2 系統管理---->全局工具配置,如下圖所示:
3 管理插件處安裝所需要的插件,比如 build-name-setter,它的作用實際上是Jenkins默認不支持BuildName設置,但可通過安裝build-name-setter插件進行實現。安裝build-name-setter插件后,在配置頁面的Build Environment欄目下會出現Set Build Name配置項,然后在Build Name中就可以通過環境變量參數來設置build名稱。如下圖所示:
此處只以找一個插件為例,用戶可以再實際的配置中,搜索并安裝。
三 任務的部分配置
由于新創建后的任務截圖如下:
點擊右邊你創建的任務,進入到相應的配置界面,如下:
進行相應的參數配置,如下圖
其中最后一項需要做特別說明,筆者在這里被坑了好久,總結的問題及解決辦法如下:
jenkins打包不能夠脫離項目,因為他最終是配置在服務器上的,否則如果指定本地的輸出路徑的話,那么打包完成后jenkins界面沒有相應的的apk包,況且jenkins打包還需要做存檔保存,因為一般情況jenkins界面生成相應的包都是引用的存檔文件的apk包,還有上傳到第三方平臺的如蒲公英等,最終用到的都是項目里面的apk包,筆者在這里犯了一個錯誤,還是和AndroidStudio本地打包一樣,配置
輸出路徑到D盤或者其他的盤,當值存檔文件的路徑archive the artifacts總是報錯,如我當時在gradle.properties配置了本地輸出路徑:
# 打包的輸出路徑
appReleaseDir=D:/gradle/outputs/release
然后在build中配置引用的輸出路徑,保證輸出到如上所示的相應的文件夾中
//只對Release包起作用,如果不是Release包則不變更輸出路徑,否則可能導致AS無法自動安裝debug包。
if (buildType == "release") {
it.getPackageApplication().outputDirectory = new File(project.property('appReleaseDir') + "/apks")
println "realease 路徑:-----------------${it.getPackageApplication().outputDirectory}"
}
這時候就會在相應appReleaseDir筆者的目錄下生成所需要的release包,debug包我們一般不會特別聲明指定的路徑,因為可能導致AS無法自動安裝debug包,所以最終的解決辦法,我修改了jenkins的輸出路徑:
it.getPackageApplication().outputDirectory = new File("${buildDir}"+"/outputs/apk")
最終生成的apk路徑,只保留在項目的build目錄下的/outputs/apk里面,英文${buildDir}實際上就是相當于項目的build目錄
注:1 AndroidStudio指定輸出apk的路徑一般只是適用于本地apk打包release包的情況
2 如何在build.gradle中引用gradle.properties中的變量,以appReleaseDir為例,可以通過如下兩種方式:
① it.getPackageApplication().outputDirectory = new File("${appReleaseDir}"+"/outputs/apk/${createTime}")
② it.getPackageApplication().outputDirectory = new File(project.property('appReleaseDir') + "/apks")
所有的配置完成后,回到項目頁,點擊Build with Parameters進行項目打包,選擇相應的環境和渠道,點擊構建既可以打包,如下截圖:
至此Jenkins自動化打包完成,不過后續也可以配置釘釘機器人、上傳蒲公英等,在此就不一一做介紹了。
相關解決問題的鏈接及參考文章如下:
https://www.cnblogs.com/wujuan321/p/7551232.html
https://www.cnblogs.com/amberly/p/6288773.html
https://blog.csdn.net/hwhua1986/article/details/48155163
https://blog.csdn.net/zhaoyanjun6/article/details/77102359