配置項目構建完成後文件移動---- Jenkins自動化部署學習筆記(三)

溫馨提示

寫博客是爲了記錄在開發過程中所涉及到的技術以及遇到的問題的解決,如果該博客對您有所幫助,希望可以點個關注;如果您對文章中的內容有什麼不同的見解,歡迎留言進行討論。謝謝!

前言

  在前兩篇文章中,跟大家分享了在 Windows 系統上安裝 Jenkins 和使用 Jenkins 進行 Android 項目的編譯打包;相信可能會有人疑問,打包完成之後,我需要將 apk 文件放入指定位置怎麼辦。

  其實,Jenkins 功能很強大,它可以配置在打包完成之後將你所需的文件拷貝至目標路徑,亦可配置在打包完成後(成功/失敗),郵件通知相關人員。下面詳細介紹:

一、將打好的包移動至指定目錄

  1. 我在自己的電腦上安裝 Jenkins ,進行項目構建,並且想要將每次構建的包存入到E盤的AndroidApk目錄下:
    在上篇文章中,我們說到了,在配置構建任務時,有一個構建的選項,我們可以增加相應的操作來實現;
  • (1)、在構建選項區域下方,點擊 增加構建步驟 ,選擇Execete Windows batch commond
    添加一個構建任務(務必在Invoke Gradle script 任務下方)
    image.png

  • (2)、在增加的 Windows 命令框中,需要配置相應的操作命令來實現移動的功能

其實移動的功能,我們可以看作是將源文件複製到目標目錄,然後將源文件刪除。
在打包時我們可以根據不同的環境配置不同的包,比如debug.apk ,release.apk;
我們也可以使用命令,將不同環境的包,移動至不同的目錄下:

複製文件,我們需要源文件目錄和目標文件目錄:
此項目中:
源文件目錄:D:\jenkinsSpace\example\app\build\outputs\apk\
目標文件目錄:E:\AndroidApk
在AndroidApk下,我們再創建不同的文件夾,如:devApk 和 releaseApk
故,命令如下:

移動文件命令

copy D:\jenkinsSpace\example\app\build\outputs\apk\*debug*.apk E:\AndroidApk\devApk
copy D:\jenkinsSpace\example\app\build\outputs\apk\*release*.apk E:\AndroidApk\releaseApk
rmdir /s /q D:\jenkinsSpace\example\

可以看到,這個總共有三條命令

第一條命令:是將源文件目錄下的名稱包含 debug ,後綴名爲 .apk 的文件複製到 E:\AndroidApk\devApk 目錄下

第二條命令:是將源文件目錄下的名稱包含 release ,後綴名爲 .apk 的文件複製到 E:\AndroidApk\releaseApk 目錄下

第三條命令:是將 Jenkins 構建該項目的工作空間進行清空(刪除工作空間目錄及子文件)

  • (3)、配置好之後,我們點擊保存, 進行立即構建,構建結果如下:

構建結果

我們可以看到,在位置 1 處:項目構建成功,耗時 1分56秒

位置 2 處 :執行了複製名稱包含 debug ,後綴名爲 .apk 的文件的命令,成功

位置 3 處 :執行了複製名稱包含 release ,後綴名爲 .apk 的文件的命令,失敗

位置 4 處:執行了刪除工作空間的命令,成功

位置 5 處:退出執行命令,exit

位置 3 出執行失敗的原因是,我們再配置項目構建任務的時候,只是寫了 clean assembleDebug 這兩個命令,進行項目clean 和debug構建,我們將這個命令更改爲clean build,就會構建所有配置的渠道包。

  1. 我們有時候需要將打好的apk 移動至共享文件夾,方便大家使用獲取安裝,這時候,我們只需要在執行復制命令前增加一行命令,將共享文件夾目錄映射到本地盤符:

命令如下:
net use [盤符] \[ip][共享文件夾] “[password]” /user:"[userName]"

% 將共享文件夾映射爲盤符 Y:%
net use Y: \\192.168.22.156\tech  "!qaz2wsx3edc" /user:"tech"

在此命令下,我們更改上面的命令中的盤符爲共享文件夾盤符,就可將apk移動至共享文件夾了

copy D:\jenkinsSpace\example\app\build\outputs\apk\*debug*.apk Y:\AndroidApk\devApk
copy D:\jenkinsSpace\example\app\build\outputs\apk\*release*.apk Y:\AndroidApk\releaseApk
rmdir /s /q D:\jenkinsSpace\example\
  1. 我們也可以定義一個bat文件,放在主機上,讓Jenkins任務去調用執行這個bat文件,來複制/移動文件
    bat文件內容如下:
% 將共享文件夾映射爲盤符 Y:%
net use Y: \\192.168.22.156\tech  "!qaz2wsx3edc" /user:"tech"

% 配置工作空間目錄變量%
set "spaceDir=D:\jenkinsSpace\example"

% 配置目標文件夾目錄變量%
set "targetDir=Y:\AndroidApk\jekinsBuildApks"

% 定義當前日期字符串的變量如 20180505%
set "dateStr=%date:~0,4%%date:~5,2%%date:~8,2%"

% 定義Apk源文件目錄%
set "resourceDir=%spaceDir%\app\build\outputs\apk"

% 根據日期分別定義在dev,test , release 下需要創建的文件夾目錄%
set "devPath=%targetDir%\dev\%dateStr%"
set "testPath=%targetDir%\test\%dateStr%"
set "releasePath=%targetDir%\release\%dateStr%"

% 創建文件夾%
md %devPath%
md %testPath%
md %releasePath%

% 複製apk到目標文件夾%
copy %resourceDir%\*dev*.apk %devPath%
copy %resourceDir%\*test*.apk %testPath%
copy %resourceDir%\*release*.apk %releasePath%

% 強制刪除工作空間目錄%
rd/s/q %spaceDir%\

該文件中 %% 之間的內容爲註釋內容
然後我們將該bat文件命名爲copyApp.bat ,放置在D:\bat\目錄下,
我們再Jenkins 任務中做如下配置

call D:\bat\copyApp.bat
exit 0

執行bat文件

call D:\bat\copyApp.bat 是調用執行bat文件,
exit 0 是用來處理上面出現的因windows 命令執行錯誤導致Build FAILURE,
Jenkins 任務根據cmd命令行返回是否爲0來判斷是否Build 成功,故只要exit 0,每次返回0,無論windows 命令執行成功與否,只要項目Build 成功了,整個任務就是成功的。
至此項目移動至其他目錄完成!

上一篇:自動化構建Android項目 ---- Jenkins自動化部署學習筆記(二)
下一篇:配置項目構建完成後郵件通知---- Jenkins自動化部署學習筆記(四)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章