1. 程式人生 > >React-native Android 在Jenkins上配置自動打包方案

React-native Android 在Jenkins上配置自動打包方案

  • 使用jenkins來實現自動化構建,可以簡化開發測試的流程,原來debug包都不會做混淆,現在用了jenkins會自動的打混淆包,除了環境不一樣,其他配置debug和release包都一樣,這樣就可以避免程式碼混淆帶來的問題,早日發現早日治療。推薦大家在廢棄的電腦上搭建一個Jenkins。具體的搭建流程見這裡

這裡介紹一下我在專案中使用了React-native之後的jenkins配置,預設已經在jenkins上已經搭建好了普通Android的打包環境,如果想打帶有React-native的apk,首先在React官方的Generating Signed APK中有bundle命令來生成index.android.bundle

$ react-native bundle --platform android --dev false --entry-file index.android.js \
  --bundle-output android/app/src/main/assets/index.android.bundle \
  --assets-dest android/app/src/main/res/

所以我們在Android打包之前首先要執行這個命令,明確了這個區別,就開始動手了。

  • 首先在jenkins伺服器上升級buildToolsVersion,compileSdkVersion 到23
    這裡我全部升級完了
    如果下載慢,建議換成sdk.gdgshanghai.com的映象
    sdk.gdgshanghai.com

  • 接下來在伺服器上搭建react-native環境

    注意一點,很多同學搭建換成後,執行
    react-native init AwesomeProject
    會發現卡了半天還是沒有成功,這個時候建議你使用
    npm config set registry=https://registry.npm.taobao.org
    將npm的源換成淘寶映象

- 測試環境安裝成功之後,開始配置我們的Jenkins

我們是通過jenkins Invoke Gradle script執行assembleQa –stacktrace task來打包的,
Invoke Gradle script
如果我們希望在執行這個task之前讓React-native 生成index.android.bundle,那麼我們可以在build.gradle寫這樣的task,但是這裡我介紹一個更簡單的方式,在jenkins中增加構建步驟->windows系統選擇Execute windows batch command ||mac系統選擇Excute shell
選擇Excute shell

關鍵的步驟來了!!!!!

我們按住Execute shell的右上角,將它拖動到 Invoke Gradle script的前面,這樣就可以先執行Execute shell中的命令

  • 接下來開始寫Execute shell中的命令
react-native bundle --platform android --dev false --entry-file react-native/index.android.js \
 --bundle-output app/src/main/assets/index.android.bundle \
 --assets-dest app/src/main/res/

測試一下,失敗,報react-native: command not found
google一下,React-native jenkins,發現沒有任何相關的記錄,菊花一緊,每當Stack Overflow上國外友人還沒有踩過坑的時候,我就有一種使命感,難道我已經走在了全世界碼農的前面?難道我就要這樣走向人生顛覆了麼,這樣的幻覺讓我像瘋狗一樣查資料誓要把這個問題解決,給全世界人民帶來福利。

打了一針雞血,發現jenkins的shell命令是跑在自己的Shell中的,這意味著什麼?需要我們指定絕對路徑,好吧,更換一成絕對路徑。

which react-native

獲取react-native的絕對路徑,檔案路徑也一併換掉,整個命令變成了

/usr/local/bin/react-native bundle --platform android -dev false --entry-file /Users/jenkins/.jenkins/jobs/testAndroid-qa/workspace/react-native/index.android.js \
 --bundle-output /Users/jenkins/.jenkins/jobs/testAndroid-qa/workspace/app/src/main/assets/index.android.bundle \
 --assets-dest /Users/jenkins/.jenkins/jobs/testAndroid-qa/workspace/app/src/main/res/

再來構建->成功。

看一下我的構建歷史
這裡寫圖片描述

    不斷的失敗,
    不斷的解決,
    我為全世界人民踩坑,
    我為全世界人民探路,
    我活在自我陶醉的程式設計師世界。