Docker+Jenkins提高Android構(gòu)建速度

概述

對于Docker一直以來都有聽說澄步,但是作為移動端開發(fā)工程師冰蘑,從來沒去了解過,不知道對于移動端會有什么作用村缸,直到有一天在網(wǎng)上瀏覽文章的時候看到了一篇用Docker來部署Android從而提高構(gòu)建速度的文章懂缕,才想著深入研究一下具體的配置方法。
對于Jenkins就是一個通過安裝插件王凑,配置項目,從而能夠定時構(gòu)建項目聋丝,并且同時還可以自動上傳安裝包到fir或者是蒲公英的這么一個工具索烹,之前一直有用,但是將這兩者結(jié)合起來會有更加意想不到的效果弱睦。

docker的簡單說明

對于一個初級學習docker的人來說百姓,我覺得docker就像一個你每次換一臺新的電腦,都要重新配置開發(fā)環(huán)境以及一些亂七八糟的東西况木,尤其是對于程序員來說垒拢,一搞可能就得搞一天,所以這個docker就相當于你只要配置一次火惊,然后下次你要重新配置的時候求类,就把上次配置的鏡像文件拿過來一執(zhí)行就可以了,當然我的解釋也不是那么的準確屹耐,大家將就看尸疆。
下面的所有操作都是在我購買的DigitalOcean的vps上進行的。


image.png

可以直接選擇Docker的惶岭,就不用自己安裝了寿弱。但是操作步驟我還是要介紹的:

安裝docker

我是通過直接購買的配置過docker的vps,所以對于安裝的過程按灶,我并沒有嘗試症革,但是mac上我倒是安裝了,mac上的安裝方法是下載相關(guān)的docker文件鸯旁,然后直接安裝就行噪矛。如果需要在ubuntu上安裝的話量蕊,這是安裝步驟

運行容器

Docker中的容器就相當于一個一個的可以用來運行應(yīng)用的空間,此時我們需要先獲取一個鏡像摩疑,鏡像就是容器的只讀版本危融。

docker pull ubuntu:14.04

現(xiàn)在我們已經(jīng)有了一個鏡像了,然后通過下面的命令用來查看系統(tǒng)中的鏡像:

docker images

現(xiàn)在我們把鏡像運行起來雷袋,運行起來的鏡像就叫做容器了吉殃,從而我們就可以在容器中做很多的事情:

docker run -it ubuntu:14.04

運行之后,可以看到命令行的變化:


image.png

此時我們已經(jīng)進入到容器中了楷怒,所以接著做的一切操作都是相對于該容器而言的蛋勺。
接著在容器中安裝openjdk-8

apt-get install -y openjdk-8-jdk

就會看到已經(jīng)安裝成功了


image.png

如果我們希望我們安裝有jdk的容器能夠保存下來供以后使用方便的話,我們就可以將我們的容器變成鏡像從而保存在docker hub上面鸠删。
具體操作步驟:

//退出當前的容器
exit
//查看運行的容器
docker ps -a
//將容器轉(zhuǎn)化為鏡像
docker commit -m "add jdk to ubuntu" -a "zhanfangzxc" 055a15fe9c2e zhanfangzxc/ubuntu-jdk

-m用來說明提交的信息抱完,-a指定一個用戶信息。055a15fe9c2e指定的容器的id刃泡,通過docker ps -a查看巧娱。
接著執(zhí)行docker images,就可以看到多一條images信息烘贴。

image.png

為了方便以后使用禁添,我們可以把該鏡像文件存儲到Docker Hub上面,首先需要去注冊一個賬號桨踪,然后接著在上面創(chuàng)建一個repository老翘,就相當于github的操作差不多,接著在終端進行如下操作:

//第一步
docker login
//第二步 輸入用戶名和密碼
//第三步
docker push zhanfangzxc/ubuntu-jdk:v1 .

此時如果操作沒有問題的話锻离,你就會發(fā)現(xiàn)你的docker hub中已經(jīng)正常提交上去了铺峭。

通過Dockerfile創(chuàng)建鏡像

還有一種方式是通過Dockerfile創(chuàng)建鏡像,下面我先展示一下我的一個Dockerfile:

FROM ubuntu:17.10
MAINTAINER zhanfangzxc "zhanfangzxc@gmail.com"

RUN apt-get update -qq && \
    apt-get install -y --no-install-recommends openjdk-8-jdk unzip curl && \
    apt-get clean
ENV USR_LOCAL /usr/local
ENV ANDROID_SDK_URL http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
RUN curl -L "${ANDROID_SDK_URL}" | tar --no-same-owner -xz -C ${USR_LOCAL}
ENV ANDROID_HOME ${USR_LOCAL}/android-sdk-linux
ENV ANDROID_SDK ${USR_LOCAL}/android-sdk-linux
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
RUN echo "export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools" >> /etc/profile

ENV ANDROID_SDK_COMPONENTS tools,platform-tools,build-tools-19.1.0,build-tools-22.0.1,build-tools-21.1.2,build-tools-22.0.0,build-tools-26.0.2,android-21,android-25,android-22,android-26,endroid-27,extra-android-m2repository,extra-google-m2repository,android-23,build-tools-23.0.0,build-tools-23.0.1,build-tools-23.0.2,build-tools-26.0.2,build-tools-27.0.0

RUN echo y | android update sdk --no-ui --all --filter "${ANDROID_SDK_COMPONENTS}"

ENV TERM dumb
  • 第一行FROM用來說明是基于什么構(gòu)建的汽纠。
  • 第二行用來標記該文件的作者
  • 第三行的RUN用來在shell中執(zhí)行命令
    具體的Dockerfile的編寫規(guī)則網(wǎng)上有很多卫键,大家還是多去參看一下。

通過Dockerfile構(gòu)建鏡像

有了上面的Dockerfile虱朵,我們就可以通過他來構(gòu)建鏡像了

docker build -t zhanfangzxc/androidbuilder:v1.0 .

此時再次運行docker images就會看到剛才生成的鏡像永罚。
接著運行鏡像:

docker run zhanfangxc/androidbuilder:v1.0

Docker+Jenkins部署安卓項目

不知道大家有沒有仔細看我上面的那個Dockerfile里面:


image.png

被紅框圈住的地方就是配置jdk和Android sdk的地方,這是作為一個安卓開發(fā)所必不可少的配置卧秘。


image.png

在這個Dockerfile中我們配置了Gradle和jenkins呢袱,所以此時只要參照上面講的方式:
  1. 將Dockerfile構(gòu)建成image
  2. 運行image

此時就可以通過瀏覽器訪問你在服務(wù)器上部署的jenkins了,然后在jenkins中安裝git翅敌,gradle羞福,pgyer等插件,接著創(chuàng)建一個項目蚯涮,對項目進行配置就可以定時的對你的項目進行構(gòu)建了治专,也不需要在每次都花很長時間去構(gòu)建和打包了卖陵。

image.png

本人也是第一次操作,所以也走了一些彎路张峰,也折騰了兩天才弄好泪蔫,所以第一次操作的小伙伴不用著急慢慢來,當你構(gòu)建成功的那一刻喘批,才會懂得有多么爽撩荣。

補充一句,如果docker容器啟動的特別多的話以及鏡像特別多的話會特別耗費資源饶深,所以記得及時清理掉沒用的餐曹。

參考文章

https://blog.saymagic.cn/2016/01/25/docker-image-for-android.html

https://blog.saymagic.cn/2015/06/01/learning-docker.html

http://www.qingpingshan.com/rjbc/az/122582.html

http://www.cnblogs.com/xiaoqi/p/jenkins-androd-apphosting.html

https://www.fengzifz.com/2017/03/27/clean-docker/

https://twiceyuan.com/2016/07/27/jenkins-android-setup/

https://neyoufan.github.io/2016/12/09/android/Jenkins-ci%E5%AE%B9%E5%99%A8%E5%8C%96%E5%9C%A8Android%E9%A1%B9%E7%9B%AE%E6%9E%84%E5%BB%BA%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8%EF%BC%88%E5%85%AC%E4%BC%97%E5%8F%B7%E7%89%88%EF%BC%89/#2-Jenkins%E4%B8%8EDocker%E7%BB%93%E5%90%88%E5%AE%9E%E7%8E%B0%E5%BF%AB%E9%80%9F%E9%85%8D%E7%BD%AE

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市敌厘,隨后出現(xiàn)的幾起案子台猴,更是在濱河造成了極大的恐慌,老刑警劉巖俱两,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饱狂,死亡現(xiàn)場離奇詭異,居然都是意外死亡宪彩,警方通過查閱死者的電腦和手機休讳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毯焕,“玉大人,你說我怎么就攤上這事磺樱∧擅ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵竹捉,是天一觀的道長芜辕。 經(jīng)常有香客問我,道長块差,這世上最難降的妖魔是什么侵续? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮憨闰,結(jié)果婚禮上状蜗,老公的妹妹穿的比我還像新娘。我一直安慰自己鹉动,他們只是感情好轧坎,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著泽示,像睡著了一般缸血。 火紅的嫁衣襯著肌膚如雪蜜氨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天捎泻,我揣著相機與錄音飒炎,去河邊找鬼。 笑死笆豁,一個胖子當著我的面吹牛郎汪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播渔呵,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼怒竿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扩氢?” 一聲冷哼從身側(cè)響起耕驰,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎录豺,沒想到半個月后朦肘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡双饥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年媒抠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咏花。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡趴生,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昏翰,到底是詐尸還是另有隱情苍匆,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布棚菊,位于F島的核電站浸踩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏统求。R本人自食惡果不足惜检碗,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望码邻。 院中可真熱鬧折剃,春花似錦、人聲如沸像屋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至因苹,卻和暖如春苟耻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扶檐。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工凶杖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人款筑。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓智蝠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奈梳。 傳聞我的和親對象是個殘疾皇子杈湾,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

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

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,541評論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一攘须、Docker 簡介 Docke...
    極客圈閱讀 10,505評論 0 120
  • 0. 前言 docker是什么漆撞?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化于宙,沙箱機制的應(yīng)用部署技術(shù)浮驳。可...
    sessionboy閱讀 3,860評論 2 49
  • 寫這篇文章主要是為了今后畢業(yè)論文素材上的整理捞魁,同時對docker進行鞏固溫習至会。大綱: docker簡介docker...
    胡圖仙人閱讀 7,437評論 2 96
  • 浮生皆是夢。 陳小希和江辰谱俭,他們兩個彼此喜歡深愛著對方奉件,不管是一個月,一年昆著,還是三年县貌,不管他們鬧了矛盾分過手,他們...
    旺旺大小姐閱讀 139評論 0 0