利用jenkins來(lái)實(shí)現(xiàn)自動(dòng)化構(gòu)建,節(jié)省開發(fā)與測(cè)試的時(shí)間倒庵。android的自動(dòng)構(gòu)建已經(jīng)有了很多博文的說(shuō)明怕午,現(xiàn)在我來(lái)說(shuō)一下android+react-native自動(dòng)構(gòu)建自己的方式陋守。
搭建環(huán)境:windows
android + jenkins環(huán)境搭建:http://blog.csdn.net/zhaoyanjun6/article/details/77102359
react-native環(huán)境搭建:http://reactnative.cn/docs/0.50/getting-started.html
以上條件準(zhǔn)備好之后,之后需要做的是在android打包之前將react-native的bundle文件生成!!!
首先:在Jenkins-->Global Tool Configuration-->Gradle 中震贵,添加一個(gè)Grade插件
接著:到達(dá)插件的bin目錄下,如:E:\gradle-3.3-bin\gradle-3.3\bin
將目錄底下的gradle.bat復(fù)制一份水评,改名為gradle_build.bat
再將gradle.bat替換成以下腳本
Tasklist | cd android
If errorlevel 1 (
????????Echo 沒(méi)有android目錄猩系,說(shuō)明不是RN項(xiàng)目
????????Echo ****自定義腳本結(jié)束****
????????E:\gradle-3.3-bin\gradle-3.3\bin\gradle_build clean build && exit %%ERRORLEVEL%%
) Else(....)
這段的意思檢驗(yàn)?zāi)夸浀资欠裼衋ndroid目錄,如果沒(méi)有說(shuō)明不是rn項(xiàng)目中燥,繼續(xù)走正常的打包腳本寇甸。加這段原因是兼容兩種rn和非rn兩種打包。(注:gradle_build 就是原來(lái)的android打包腳本)
Echo有android目錄疗涉,說(shuō)明是RN項(xiàng)目
npm install
C:\Users\oeasy\AppData\Roaming\npm\react-native.cmd bundle --entry-file index.android.js --bundle-output ./android/app/src/main/assets/index.android.bundle --platform android --assets-dest ./android/app/src/main/res/ --dev false
相信有接觸過(guò)rn的人就比較熟悉這段了拿霉,這兩段了,主要是更新js代碼并將js代碼生成bundle文件存放在android aseets目錄底下咱扣。
cd android
Echo ****自定義腳本結(jié)束****
E:\gradle-3.3-bin\gradle-3.3\bin\gradle_buildclean build && exit %%ERRORLEVEL%%
生成完bundle文件友浸,接下來(lái)就進(jìn)入android目錄執(zhí)行正常的android 打包腳本。
最后:在對(duì)應(yīng)打包的項(xiàng)目里面指定打包的插件偏窝,再進(jìn)行構(gòu)建
備注:我對(duì)windows的腳本也不熟悉,在這里只是提供一種解決思路武学,有更好的方式互相共享學(xué)習(xí)一下祭往。以下是完整的腳本代碼
Echo ****自定義腳本開始by wp.nine****
Tasklist | cd android
If errorlevel 1 (
????Echo 沒(méi)有android目錄,說(shuō)明不是RN項(xiàng)目
????Echo ****自定義腳本結(jié)束****
????E:\gradle-3.3-bin\gradle-3.3\bin\gradle_buildclean build && exit %%ERRORLEVEL%%
) Else (
????Echo 有android目錄火窒,說(shuō)明是RN項(xiàng)目
????npm install
????C:\Users\oeasy\AppData\Roaming\npm\react-native.cmdbundle --entry-file ? index.android.js --bundle-output ./android/app/src/main/assets/index.android.bundle--platform android --assets-dest ./android/app/src/main/res/ --dev false
????cd android
????Echo ****自定義腳本結(jié)束****
????E:\gradle-3.3-bin\gradle-3.3\bin\gradle_buildclean build && exit %%ERRORLEVEL%%
)