天天看點

Jenkins shell 工作自動化腳本

build kit and lib jar

  • 編譯本地機器上的 Android 融雲 SDK Jar 包 , 包含 Rong_IMKit.jar 和 Rong_IMLib.jar , 輸出産物在本機 xx/localjenkins/output/
cd /Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace

git checkout . 
git checkout $SDK_Branch
echo "current branch is $SDK_Branch"

if [ $isPullCode = "true" ]; 
then
git pull
fi

./gradlew clean
echo "clean lib successful"


./gradlew lib:build
echo "build lib successful"
./gradlew lib:makeJar
echo "makeJar lib successful"


mkdir /Users/zhouxuming/Documents/localjenkins/output/$SDK_Branch

cp lib/build/libs/Rong_IMLib.jar /Users/zhouxuming/Documents/localjenkins/output/$SDK_Branch


./gradlew kit:build
echo "build kit successful"
./gradlew kit:makeJar
echo "makeJar kit successful"

cp kit/build/libs/Rong_IMKit.jar /Users/zhouxuming/Documents/localjenkins/output/$SDK_Branch

echo end

           

build_protocol

  • 編譯本地 RongIMLib.so 檔案 需要依賴 protocol-stack 倉庫 protocol-stack 預設 master 分支代碼
protocol_root="/Users/zhouxuming/Documents/ReviewRongCloudSrc/protocol-stack/"
project_root="/Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/"
target_path=$project_root"lib/src/main/jni/"

# 更新協定棧 matser 分支代碼
cd $protocol_root
git checkout .
git clean -df 
git checkout $ProtocolBranch
git fetch
git pull

#編譯協定棧倉庫 rc rcsdk/obj/local 相關檔案
#ndk-build -C rcsdk -j4 DEBUG=true CIPHER=資料庫是否加密

ndk-build -C rcsdk -j4 DEBUG=true CIPHER=false

cp -r rcsdk/obj/local/* $target_path
cp rcsdk/jni/RCloudBiz.h $target_path
cp rcsdk/jni/BizListener.h $target_path
cp rcsdk/jni/Predefine.h $target_path

cd $project_root

# 編譯 Android 倉庫 so 
# -j4 指定 4 核編譯 , 如果沒有指定NDK_DEBUG,則會從 AndroidManifest.xml中擷取(檢視 <application> 元素是否有 android:debuggable="true")。
ndk-build -C lib/src/main -j4 DEBUG=true


           

OpenSourceToSDKWithHttp

  • 通過網絡下載下傳 某個版本的 SDK 并且替換指定分支 RCE 源碼編譯,apk 功能需手動驗證
project_root="/Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/"

#http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_CallKit_RedPacket_LocationLib_PushLib_Sight_MCenter_Sticker_SDK_v2_9_16_Dev.zip
#http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_CallKit_PushLib_SDK_v2_9_16_Dev.zip
#http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_SDK_v2_9_16_Dev.zip

downloadUrl=http://downloads.rongcloud.cn/Rong_Cloud_Android_IMKit_SDK_v$SDK_Version"_Dev.zip"
downloadZipFile=Rong_Cloud_Android_IMKit_SDK_v$SDK_Version"_Dev.zip"
SDKFile=Rong_Cloud_Android_IMKit_SDK_v$SDK_Version"_Dev/"


if [ $Rce_Version != "error" ]; then

new_branch=$Rce_Version"_SDK"

cd $project_root

 
 #建立拉出新的副本分支
#if [ "error" != "error" ]; then
   git checkout .
   git clean -df
   git checkout $Rce_Version
   
   git branch $new_branch
   git checkout $new_branch
 
 
 # 下載下傳官網 SDK 并解壓
 
   cd ..
   mkdir tempSDK_$SDK_Version
   cd tempSDK_$SDK_Version
   wget $downloadUrl
   unzip $downloadZipFile
   
   cp -r $SDKFile $project_root
  # cp -r $SDKFile/IMLib/ $project_root
 
 
 
 # 移除本地工程 kit lib thirdparty push toollib


  cd $project_root
  rm -r $project_root"lib"
  rm -r $project_root"kit"
  rm -r $project_root"thirdparty"
  rm -r $project_root"toollib"
  rm -r $project_root"push"
  
#else  
#	echo "test"
#fi

# 更改 settings.gradle  rcelib/build.gradle 依賴

 # sed 's/要被取代的字串/新的字串/g' 
   cd $project_root

   
   sed -in-place -e "s/include ':lib'/include ':IMLib'/g" settings.gradle
   sed -in-place -e "s/include ':kit'/include ':IMKit'/g" settings.gradle
   sed -in-place -e "s/include ':thirdparty'//g" settings.gradle
   sed -in-place -e "s/include ':push'//g" settings.gradle
   sed -in-place -e "s/include ':toollib'//g" settings.gradle
   
    
 



 	sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" rcelib/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" callkit/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" contactcard/build.gradle
    
    sed -in-place -e "s/api project (':kit')/api project(':IMKit')/g" recognizer/build.gradle # recognizer 多個空格
    
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" remotecontrol/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" sticker/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" seal/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g" sight/build.gradle
    sed -in-place -e "s/api project(':kit')/api project(':IMKit')/g"  ptt/kit/build.gradle
    sed -in-place -e "s/api project(':lib')/api project(':IMLib')/g"  ptt/lib/build.gradle
    
    
    
    
    sed -in-place -e "s/api project(':toollib')/api project(':IMLib')/g" callengine/agora/build.gradle
    sed -in-place -e "s/api project(':toollib')/api project(':IMLib')/g" callengine/blink/build.gradle
    sed -in-place -e "s/api project(':toollib')/api project(':IMLib')/g" callengine/rong/build.gradle
    
    sed -in-place -e "s/api project(':lib')/api project(':IMLib')/g" calllib/build.gradle
    sed -in-place -e "s/api project(':toollib')//g" calllib/build.gradle
    
    
    sed -in-place -e "s/api project(':lib')/api project(':IMKit')/g"  moment/lib/build.gradle
    sed -in-place -e "s/api project(':thirdparty')//g"  moment/lib/build.gradle
     
    
   
    
    
    sed -in-place -e "s/'com.squareup.okhttp3:okhttp-urlconnection:3.6.0'/'com.squareup.okhttp3:okhttp-urlconnection:3.6.0\\' \\n api \\'com.huawei.android.hms:push:2.6.1.301'/g" rcekit/build.gradle
    
    
    
    
    
    
    
     
 
 
 
else  
	echo "rce branch 必須指定! 腳本結束"
fi

           

Update-SDK-Version

  • 将 RCE 目标分支的 IM SDK (kit lib thirdparty push toollib) 代碼更新到最新, 更新後的檢查編譯測試需要手動進行
if [ $RCE_Branch != "error" ]; then
	echo $RCE_Branch
    echo $SDK_Branch
    
    cd /Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/
    
    #工程根路徑
    projectrootpath=/Users/zhouxuming/Documents/ReviewRongCloudSrc/android-workspace/
    
    git checkout .
    git clean -df
    git checkout $SDK_Branch
    
    #建立臨時目錄
    cur_dateTime="`date +%Y_%m_%d_%H_%m_%s`"  
    
    echo $cur_dateTime
    
    targetpath=/Users/zhouxuming/Documents/ReviewRongCloudSrc/tempSDK_$cur_dateTime/
    
    mkdir $targetpath
    
    #拷貝最新 im sdk 至臨時存放檔案夾
    cp -r $projectrootpath"lib" $targetpath
    cp -r $projectrootpath"kit" $targetpath
    cp -r $projectrootpath"thirdparty" $targetpath
    cp -r $projectrootpath"toollib" $targetpath
    cp -r $projectrootpath"push" $targetpath
    #cp -r $projectrootpath"sight" $targetpath
    # cp -r $projectrootpath"seal" $targetpath
    # cp -r $projectrootpath"redpacket" $targetpath
    
    git checkout .
    git checkout $RCE_Branch
    
    
    rm -r $projectrootpath"lib"
    rm -r $projectrootpath"kit"
    rm -r $projectrootpath"thirdparty"
    rm -r $projectrootpath"toollib"
    rm -r $projectrootpath"push"
    #rm -r $projectrootpath"sight"
    # rm -r $projectrootpath"seal"
    # rm -r $projectrootpath"redpacket"
    
    cp -r $targetpath"lib" $projectrootpath
    cp -r $targetpath"kit" $projectrootpath
    cp -r $targetpath"thirdparty" $projectrootpath
    cp -r $targetpath"toollib" $projectrootpath
    cp -r $targetpath"push" $projectrootpath
    # cp -r $targetpath"sight" $projectrootpath
    # cp -r $targetpath"seal" $projectrootpath
    # cp -r $targetpath"redpacket" $projectrootpath
    
    rm -fr $targetpath
    
    echo "IM SDK 更新完成 ,請驗證是否能編譯通過以及 apk 功能是否完善 "
    
    
else  
	echo "rce branch 必須指定! 腳本結束"