搭建Jenkins+Sonarqub+Mysql+Android(上篇)
搭建Jenkins+Sonarqub+Mysql+Android(上篇)
本人闡述的是在Ubuntu16.04系統下搭建jenkins+sonarqub+mysql以實現對Android工程一鍵自動化打包,上傳,郵件通知,代碼質量分析全流程
1、 搭建jenkins
JDK配置
具體參照參見上篇文章
Tomcat配置
首先下載官網tomcat
本文選擇8.5.x版本用以支持java7android later
下載完成后為統一管理,在用戶目錄創建tools文件夾,并將tomcat壓縮包移到該目錄并解壓
//解壓tar.gz文件 tar zxvf apache-tomcat-8.5.32.tar.gz下載Jenkins通用包(.war)
此處下載2.121.1可維護穩定版本
將下載的jenkins.war放到apache-tomcat-8.5.32/webapps下
啟動tomcat
cd ~/tools/apache-tomcat-8.5.32/bin ./startup.sh訪問jenkins
打開瀏覽器并輸入http://localhost:8080/jenkins
首次訪問需要輸入secret,至于secret是多少圖形界面會提示你在哪;輸入secret后會提示你安裝插件,選擇Install suggeted plugins即可
至此說明jenkins成功部署,完成了第一步
2. 配置android sdk
下載android sdk,此處過程簡略,注意本人當時從官網下載的sdk后,發現sdk自帶東西太少,導致Android工程無法構建,建議去別的平臺下載功能更全的sdk
配置環境變量
sudo gedit ~/.bashrc在.bashrc文件中追加如下字段
#config androidexport ANDROID_HOME=/home/qwe/tools/android-sdk export PATH=${ANDROID_HOME}/platform-tools:$PATH export PATH=${ANDROID_HOME}/tools:$PATH export PATH=${ANDROID_HOME}/tools/bin:$PATHjenkins配置android變量
jenkins -> manger jenkins -> config system
3. 安裝git
安裝git
sudo apt-get update sudo apt-get install git配置git賬號
git config --global user.name "Your Name" git config --global user.email "youremail@domain.com"4. jenkins 配置
config jenkins url
jenkins -> manger jenkins -> config system
config JDK, Git
jenkins -> manger jenkins -> glob config
5. build android project
new item
回到jenkins;jenkins -> new item
輸入自己的item名字,默認選擇freestyle風格,點擊OK
config project
2.1 配置git 倉庫地址
因為要訪問倉庫所以需要用戶密碼,需要配置Credentials,點擊Add,進入下圖頁面;Kind 選擇Username with password;輸入你git的賬號密碼即可,返回到上頁,credentials中勾選你剛創建到credential即可
2.2 config build
選擇Invoke Gradle script進行build android project
考慮到不同工程適用gradle版本不同,所以我們選擇User Gradle Wrapper,這樣完全依賴工程本身的gradlew,jenkins會自動下載所依賴的gradle;當然你也可以使用固定gradle版本進行build
在Tasks右邊輸入框中每行輸入對應的task名稱即可,通常是clean assembleRelease
save后點擊左側欄的build now,順利的話project會構建成功
構建成功后左側的build histroy 列表會顯示你構建記錄,藍色的點表示成功,紅色表示失敗
為了能追蹤每次構建的包,我們可以在assembleRelease/Debug任務后添加copy apk 任務,保存到一個備份目錄,以便后期查閱
6. 備份APK文件,jenkins可直接訪問
6.1 添加copy任務
在你的app build.gradle 添加copy 任務,下面代碼添加到和android標簽同一級層次
def jenkinsJobName = System.getenv('JOB_NAME') ?: "local_job"def jenkinsBuild = System.getenv('BUILD_NUMBER') ?: "0"def backPath = '/home/qwe/shared/android_build/' + jenkinsJobName + "/" + jenkinsBuildgradle.projectsEvaluated {assembleRelease.doLast {if (jenkinsJobName != "local_job") {println("==========begain copy apk file===========")copy {from('build/outputs/apk/release')into(backPath + '/apks')include('*.apk', '*.txt')exclude('**/*-unaligined.apk')}println("==========end copy apk file===========")println("==========begain copy mapping file===========")copy {from('build/outputs/mapping/release')into(backPath + '/apks/mapping')include('*.txt')}println("==========end copy mapping file===========")} else {println("==========execute task in local machine===========")}}assembleDebug.doLast {println("=============begin copy apk file==========")copy {from('build/outputs/apk/debug')into(backPath + '/apks')exclude('**/*-unaligined.apk')}println("=============end copy apk file==========")} }6.2 配置tomcat
配置tomcat作為文件服務器,以便jenkins可直接訪問文件
cd ~/tools/apache-tomcat-8.5.32/conf gedit server.xml找到Connector標簽添加URIEncoding屬性設為utf-8
修改web.xml文件,將listing設為true
gedit web.xml創建download.xml文件
內容如下
將其放到apache-tomcat-8.5.32/conf/Catalina/localhost目錄下
重啟tomcat
cd ~/tools/apache-tomcat-8.5.32/bin/ ./shutdown.sh ./startup.sh至此在瀏覽器中可以通過http://localhost/download/來訪問/home/qwe/shared目錄的所有文件了
6.3 配置jenkins,以便通過build history直接訪問對應job的備份文件
安裝description setter plugin
jenkins -> manger jenkins -> mange plugins -> Avliable -> Filter 輸入description setter 安裝后重啟jenkins
重啟jenkins只需要訪問http://localhost:8080/jenkins/restart即可
注意:
此處非常關鍵,不設置話點擊build histroy鏈接無法跳轉
jenkins -> mange jenkins -> Configure Global Security -> Markup Formatter 設為Safe HTML
成功后進入自己創建的Item -> configure -> PostBuild Actions -> set build descriptions
因為我這里已經添加了,所以顯示灰色,填寫自己需要訪問文件的目錄即可,紅色橫線替換自己ip即可
配置完畢后點擊save,再次構建,順利話build histroy會顯示如下樣式
點擊鏈接地址,就會前往對應job buildNumber的apk目錄
至此我們可以已經實現了jenknis 自動打包,并可在線訪問對應build 的apk文件;
下一篇將在其基礎上繼續集成apk的上傳,郵件通知功能
總結
以上是生活随笔為你收集整理的搭建Jenkins+Sonarqub+Mysql+Android(上篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu系统配置JDK环境变量
- 下一篇: Android如何自定义Gradle插件