在Windows搭建Jenkins構(gòu)建Android項(xiàng)目

一、引言

Jenkins 是一個(gè)用于自動(dòng)化構(gòu)建被环、測試和部署軟件項(xiàng)目的開源持續(xù)集成和持續(xù)交付(CI/CD)工具真竖。它可以幫助開發(fā)團(tuán)隊(duì)更快地構(gòu)建脐雪、測試和交付他們的應(yīng)用程序。

Jenkins 可以自動(dòng)化執(zhí)行打包操作恢共,使開發(fā)團(tuán)隊(duì)能夠在代碼更改后立即構(gòu)建軟件战秋,并生成可部署的軟件包。Jenkins 的構(gòu)建任務(wù)可以配置為在特定觸發(fā)條件下運(yùn)行讨韭,例如代碼提交到版本控制倉庫或定期計(jì)劃脂信。

Jenkins提供了一個(gè)可擴(kuò)展的平臺(tái), 提供了大量的插件透硝,可以擴(kuò)展其功能狰闪,以滿足各種項(xiàng)目的需求。你可以使用插件來集成不同的構(gòu)建工具蹬铺、部署到不同的目標(biāo)平臺(tái),或執(zhí)行各種自定義任務(wù)秉撇。

Jenkins 通常與持續(xù)集成和持續(xù)交付(CI/CD)工作流程一起使用甜攀。它可以作為 CI/CD 管道的一部分,在軟件開發(fā)周期中自動(dòng)化構(gòu)建和部署代碼琐馆。

總之规阀,Jenkins 的打包功能是其持續(xù)集成和持續(xù)交付工作流程的關(guān)鍵組成部分之一,它可以幫助開發(fā)團(tuán)隊(duì)更輕松地構(gòu)建瘦麸、測試和交付高質(zhì)量的軟件谁撼。通過配置適當(dāng)?shù)臉?gòu)建任務(wù),你可以根據(jù)項(xiàng)目的需求自定義打包過程滋饲。

二厉碟、安裝

Jenkins安裝包可以到官網(wǎng)下載(https://www.jenkins.io/download/),有 war 包和msi包屠缭,這邊建議下載 msi 安裝包箍鼓,這樣的話不需要本地配置 Tomcat,直接將 Jenkins 當(dāng)作 Windows 的服務(wù)啟動(dòng)呵曹,每次開啟會(huì)自動(dòng)運(yùn)行款咖。

Jenkins目前需要JDK 11以上版本,請先確認(rèn)jdk版本是否符合要求奄喂。

msi包雙擊開始進(jìn)行安裝铐殃。按照提示一步一步操作即可安裝完成。

1.選擇安裝路徑
image.png
2.端口修改

安裝時(shí)可在這邊修改端口跨新,默認(rèn)是8080富腊。點(diǎn)擊Test Port按鈕可以測試當(dāng)前端口是否可用。


image.png
3.jdk地址配置

在這邊輸入jdk的目錄域帐,需要Java 11,17或21版本蟹肘。


image.png
4.安裝完成后可在瀏覽器輸入http://localhost:8080/ 進(jìn)行訪問词疼。

第一次會(huì)彈出下面窗口,按提示去獲取密碼填入帘腹,繼續(xù)下一步贰盗。


image.png

接下來就是設(shè)置 Jenkins 的賬號(hào)和密碼,都是常規(guī)操作阳欲。最后的安裝插件步驟選擇安裝推薦的插件即可舵盈!安裝完成通過自己設(shè)置的賬號(hào)密碼即可登錄 Jenkins。


image.png

三球化、修改JENKINS_HOME和端口

1.修改JENKINS_HOME

jenkins默認(rèn)的主目錄是C:\ProgramData\Jenkins\.jenkins秽晚,后續(xù)創(chuàng)建項(xiàng)目后工作空間會(huì)建在該目錄下,避免c盤存儲(chǔ)空間占用過多筒愚,可以修改主目錄地址赴蝇。
在jenkins安裝路徑(上面安裝步驟有設(shè)置安裝路徑)里找到j(luò)enkins.xml,打開巢掺,修改<env name="JENKINS_HOME" value="%ProgramData%\Jenkins\.jenkins"/>里的value值句伶,關(guān)閉jenkins服務(wù)避免文件占用,將原目錄的.jenkins文件夾移動(dòng)到新目錄后重啟服務(wù)陆淀。

image.png
2.修改JENKINS端口

打開jenkins.xml考余,找到httpPort=8080進(jìn)行修改,重啟服務(wù)轧苫。


image.png

四楚堤、配置全局屬性

在 [Dashboard]> [Manage Jenkins] > [System]頁面 【全局屬性】下選中Environment variables,新增全局變量ANDROID_HOME和GRADLE_USER_HMOE


image.png

在 [Dashboard]> [Manage Jenkins] > [Tools]頁面 【JDK安裝】新增JDK含懊;【Git installations】下Add Git身冬。如下圖


image.png
image.png

git.exe目錄有在系統(tǒng)path環(huán)境變量添加了,這邊填git即可岔乔,否則填完整路徑吏恭。

五、配置項(xiàng)目

1.新建item
  • 點(diǎn)擊【新建item】重罪,輸入任務(wù)的名稱樱哼,選中【Freestyle project】,點(diǎn)擊確定完成創(chuàng)建剿配。


    image.png
image.png
2.配置參數(shù)(參數(shù)化構(gòu)建)
  • 如果構(gòu)建時(shí)需要傳參搅幅,選中【This project is parameterized】后添加參數(shù)。


    image.png

    下面截圖里增加了個(gè)參數(shù) BUILD_TYPE呼胚,是個(gè)選擇類型參數(shù)茄唐,增加了Release和Debug兩個(gè)選項(xiàng)。添加其他類型的參數(shù)大家可以自己試試。


    image.png
  • 如果需要增加個(gè)分支參數(shù)沪编,可以選擇項(xiàng)目的分支呼盆,需要安裝插件Git Parameter,
    在 [Dashboard]> [Manage Jenkins] > [Plugins]頁面 搜索插件名稱蚁廓,選中并點(diǎn)擊安裝访圃。


    image.png

    安裝完成后回到項(xiàng)目配置頁,添加參數(shù)相嵌,選中“Git參數(shù)”腿时,填寫名稱、描述和默認(rèn)值饭宾,選擇參數(shù)類型批糟,這邊選擇“分支”,按需求也可以選標(biāo)簽等其他選項(xiàng)看铆。點(diǎn)擊高級(jí) 按鈕可去配置排序方式和已選值等徽鼎。


    image.png
image.png
3.源碼管理- 添加git倉庫
  • 在【源碼管理】下選中 Git,在Repository URL 填入倉庫地址弹惦,在Credentials下添加憑據(jù)否淤,如果倉庫是使用SSH的話添加ssh私鑰,如果是http的話添加用戶名密碼肤频。


    image.png

    我這邊采用ssh方式叹括,添加方式如下面截圖算墨。


    image.png

    憑據(jù)添加完成后宵荒,Credentials選中剛剛添加的憑據(jù),沒有紅色報(bào)錯(cuò)說明我們配置正確净嘀。
    image.png
  • 分支配置报咳,在Branches to build 指定分支使用 ${BRANCH},代表使用上面我們配置的BRANCH參數(shù)的值作為我們的構(gòu)建分支挖藏。


    image.png

    注意:Jenkins clone代碼默認(rèn)超時(shí)時(shí)間是10分鐘暑刃,可以在Additional Behaviours下新增Advanced clone behaviours修改拉取代碼的超時(shí)時(shí)間,避免代碼拉取失敗膜眠。也可以在這邊勾選淺克隆 配置淺克隆深度加快拉取代碼速度岩臣。


    image.png

    image.png
4. 構(gòu)建步驟
  • 在【Build Steps】增加構(gòu)建步驟 Invoke Gradle script


    image.png

    選中Use Gradle Wrapper,Tasks填寫 clean assemble${BUILD_TYPE} --stacktrace 宵膨,BUILD_TYPE就是我們上面配置的參數(shù)架谎,構(gòu)建時(shí)會(huì)用我們選擇的值去替換。


    image.png

    如果想用配置的參數(shù)值替換項(xiàng)目里gradle.properties里的同名key值辟躏,可以在高級(jí)下勾選“Pass all job parameters as Project properties”谷扣。
    image.png
5. 構(gòu)建后操作
  • 在【構(gòu)建后操作】增加構(gòu)建后操作步驟Archive the artifacts,可以存檔構(gòu)建產(chǎn)物捎琐,這邊存檔生成的apk会涎,具體存檔什么文件可以自己按需要填寫裹匙,逗號(hào)隔開。


    image.png

    image.png

六末秃、開始構(gòu)建

點(diǎn)擊Build with Parameters概页,選擇填入相應(yīng)參數(shù),點(diǎn)擊Build即可開始構(gòu)建蛔溃。

image.png

注意:安卓項(xiàng)目的local.properties一般沒有提交到遠(yuǎn)程倉庫绰沥,需要手動(dòng)在該項(xiàng)目的工作空間目錄下加上該文件

七、其他功能

1. 構(gòu)建觸發(fā)器

可以在項(xiàng)目配置里【構(gòu)建觸發(fā)器】下選中Build periodically進(jìn)行周期性構(gòu)建贺待,日程表填入相應(yīng)表達(dá)式即可按規(guī)定的時(shí)間觸發(fā)構(gòu)建徽曲。(點(diǎn)擊旁邊問號(hào)可看相應(yīng)的語法規(guī)則)


image.png

構(gòu)建觸發(fā)器也可以設(shè)置提交代碼后自動(dòng)觸發(fā)構(gòu)建等功能,這些大家可以自行嘗試下麸塞。

2. 修改build name

安裝插件[Build Name and Description Setter]秃臣,安裝好了以后在項(xiàng)目配置的【構(gòu)建環(huán)境】下增加了選項(xiàng) Set Build Name,選中該選項(xiàng)哪工,可進(jìn)行填寫修改構(gòu)建名稱奥此。


image.png
3.增加構(gòu)建步驟

在項(xiàng)目配置的 【Build Steps】下點(diǎn)擊 “增加構(gòu)建步驟”按鈕,可以選擇執(zhí)行批處理或shell腳本等雁比,增加的構(gòu)建步驟可拖動(dòng)位置改變執(zhí)行順序稚虎。


image.png

shell中引用全局變量 :
直接使用$標(biāo)志:如$BUILD_STATUS
使用${}標(biāo)志:如${BUILD_STATUS}
bat批處理中引用:
% BUILD_STATUS %

4.構(gòu)建后push代碼

在項(xiàng)目配置的 【構(gòu)建后操作】下點(diǎn)擊 “增加構(gòu)建后操作步驟”按鈕,選擇Git Publisher偎捎,可以進(jìn)行push代碼蠢终、標(biāo)簽等操作。


image.png
5.Jenkins 重新設(shè)置構(gòu)建號(hào)

在 Manage Jenkins ----Script Console 中執(zhí)行如下腳本:

item = Jenkins.instance.getItemByFullName("job_name")
item.builds.each(){build->build.delete()}
Jenkins.instance.getItemByFullName("job_name").updateNextBuildNumber(想設(shè)置的起始號(hào) 如 1)

八茴她、相關(guān)問題

1. 分支名中文亂碼寻拂,或控制臺(tái)輸出日志里的中文亂碼

在jenkins安裝目錄下的jenkins.xml,增加一行:

<env name="JAVA_TOOL_OPTIONS" value="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"/>
2. Git Host Key Verification有問題的話可以到安全配置里修改試試丈牢。
image.png
3. bat批處理日志亂碼

通過chcp 65001將控制臺(tái)編碼設(shè)置為UTF-8侄榴。

@echo on

chcp 65001
xcopy /E /C /I /Y /S test/* \\10.xx.0.xx\軟件\Product\test\
4. 執(zhí)行shell腳本日志亂碼

腳本開頭加 export LANG="en_US.UTF-8"

export LANG="en_US.UTF-8"
if $isMonkey
then
for file in hmi_module_main/build/outputs/apk/**/*.apk
do 
adb install $file
done
adb shell am start-foreground-service -a com.autonavi.amapauto.autohelper.service.monkey -e act start -e app com.autonavi.amapauto -e runTime 120  -e netMock true -e screenshotNum 100
else
echo "skip Monkey test..."
fi
5.shell腳本git push 提示Permission denied (publickey).

ssh私鑰文件路徑設(shè)置給GIT_SSH_COMMAND變量

export GIT_SSH_COMMAND="ssh -i C:/Users/lll/.ssh/id_rsa"
git push origin HEAD:XXX
6.bat腳本或shell腳本里面用到的命令(比如git相种、adb等)找不到或執(zhí)行不了

要確保命令所在路徑有加到系統(tǒng)的環(huán)境變量path里患亿,加到用戶環(huán)境變量是不行的商乎。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市申尼,隨后出現(xiàn)的幾起案子垮卓,更是在濱河造成了極大的恐慌,老刑警劉巖晶姊,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扒接,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)钾怔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門碱呼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宗侦,你說我怎么就攤上這事愚臀。” “怎么了矾利?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵姑裂,是天一觀的道長。 經(jīng)常有香客問我男旗,道長舶斧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任察皇,我火速辦了婚禮茴厉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘什荣。我一直安慰自己矾缓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布稻爬。 她就那樣靜靜地躺著嗜闻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桅锄。 梳的紋絲不亂的頭發(fā)上琉雳,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音竞滓,去河邊找鬼咐吼。 笑死吹缔,一個(gè)胖子當(dāng)著我的面吹牛商佑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厢塘,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼茶没,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晚碾?” 一聲冷哼從身側(cè)響起抓半,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎格嘁,沒想到半個(gè)月后笛求,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年探入,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狡孔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜂嗽,死狀恐怖苗膝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情植旧,我是刑警寧澤辱揭,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站病附,受9級(jí)特大地震影響问窃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜完沪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一泡躯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丽焊,春花似錦较剃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雌贱,卻和暖如春啊送,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欣孤。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國打工馋没, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人降传。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓篷朵,卻偏偏與公主長得像,于是被迫代替她去往敵國和親婆排。 傳聞我的和親對(duì)象是個(gè)殘疾皇子声旺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容