一、下載jenkins war包html
從<a href="https://jenkins.io/">Jenkins官方網站</a>下載最新的war包,而後在war的目錄下打開cmd,執行命令:java -jar jenkins.war。 看到如下信息,就表示jenkins安裝成功了。java
二、啓動jenkinsgit
第一次啓動Jenkins時,出於安全考慮,Jenkins會自動生成一個隨機的口令。注意控制檯輸出的口令,複製下來,而後在瀏覽器輸入:http://localhost:8080/ 粘貼口令,進入安裝界面,若是執行默認的安裝,Jenkins就自動配置好了Maven、git等經常使用插件。最後,建立一個admin用戶,完成安裝。 啓動Jenkins的命令:java -jar jenkins.wargithub
三、系統設置->全局工具配置api
JDK配置:瀏覽器
Gradle配置:安全
Git配置:須要限下載Git安裝哦~app
四、建立項目jvm
輸入項目名稱,選擇自由風格類型。下一步就是各類項目配置了(這裏先不考慮構建觸發器)。工具
這裏是從github上拉取數據的,須要github賬號:
構建的設置有3項: Task:clean assembleRelease --refresh-dependencies Root Build Script:${workspace}/app
Build File:${workspace}/app/build.gradle
注意,Jenkins默認生成的文件都放在.jenkins目錄下。跟項目相關的是存放在workspace中,若是apk要指定輸出的路徑,須要複製工程的local.properties到.jenkins/workspace/XXX具體工程下。
ok,這樣子就能夠開始構建項目了。
五、上傳apk到蒲公英平臺
首先,先下載插件upload to pgyer;而後在構建後添加步驟upload to pyger,填入pgy的userkey和apikey,還有當前apk存放路徑和名稱,這幾個是必填項。
具體的請參考:
https://www.pgyer.com/doc/view/jenkins https://www.pgyer.com/doc/view/jenkins_plugin
六、生成二維碼 apk打包好上傳到蒲公英,成功會返回成功的信息,其中就有二維碼的地址,那麼咱們要如何讓這個二維碼展現在歷史記錄呢? 首先,須要下載插件「description setter plugin」,能夠實現構建完成後設置當次build的描述信息。有了這個前提,咱們能夠以html的形式讓二維碼顯示出來,可是Jenkins默認是plain text模式,不會對html解析的。因此咱們須要在全局安全設置(Configure Global Security),將Markup Formatter的設置更改成Safe HTML便可。
<a href="${appBuildURL}"><img src="${appQRCodeURL}" width="118" height="118"/></a>
具體參考: http://blog.csdn.net/u011904605/article/details/54619549
七、配置郵箱通知 由於系統自帶的郵件通知配置只能通知到一個郵箱接受者,因此咱們這邊用的是插件: Email Extension Plugin。 下載安裝完成後,在構建後添加步驟Editable Email Notification:
這樣子配置完,你打完包會發現,沒有發送郵件給接收者,提示「 No emails were triggered.」。解決辦法是點擊左邊的「系統管理」菜單,選擇右邊的「系統設置」,找到Extend E-mail Notification進行全局配置。
再不行的話,在具體項目中設置觸發器:
遇到的問題
一、第一次構建項目時,編譯失敗,報錯信息爲「Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap」。 解決辦法:Android工程目錄打開gradle.properties,找到 org.gradle.jvmargs=-Xmx2048m,將org.gradle.jvmargs=-Xmx2048m 改成org.gradle.jvmargs=-Xmx1024m保存。jenkins從新構建Android項目,這時可構建成功。
二、提示「 An attempt to send an e-mail to empty list of recipients, ignored.」 這是Extend Email Plugin的一個bug,解決辦法如圖:
多渠道打包參考這篇文章: