1. 程式人生 > >Mac OSX Docker下搭建Android+Jenkins+Gitlab

Mac OSX Docker下搭建Android+Jenkins+Gitlab

之前寫過一篇Mac OSX搭建Jenkins持續整合環境,後來mac從10.11升到了10.11後,Jenkins就不可用了,最近測試一些功能需要再次用到Jenkins,為了杜絕之前發生的問題,這次就用Docker來搭建,記錄一下。

安裝Docker for mac

隨著Docker的不斷迭代,官方已經對Mac有了支援,不再像之前那樣,mac下搭建個docker還要裝各種東西。官方的地址https://www.docker.com/products/docker#/mac。首先下載官方的Docker安裝包Docker.dmg,下載完成後安裝即可,如果你需要一個GUI介面,可以再下載kitematic

,這個可選,可不下載。

配置 Docker 加速器

Docker Hub 提供眾多映象,你可以從中自由下載數十萬計的免費應用映象, 這些映象作為 docker 生態圈的基石,是我們使用和學習 docker 不可或缺的資源。但是國內的網路環境從Docker Hub上拉映象速度一般,我們可以使用DaoCloud進行加速,具體使用見官方Mac文件配置 Docker 加速器

構建Docker android環境映象

新建一個檔案,命名為android_sdk_components.env,輸入內容:

tools,platform-tools,build-tools-19.1.0,build-tools
-22.0.0,build-tools-22.0.1,build-tools-21.1.2,build-tools-22.0.0,build-tools-23.0.1,build-tools-23.0.2,build-tools-23.0.3,build-tools-24.0.0,build-tools-24.0.1,android-14,android-15,android-16,android-17,android-18,android-19,android-20,android-21,android-22,android-23,android-24,extra-android-m2repository,extra-google
-m2repository

代表我們需要安裝這些元件元件,在同目錄下新建Dockerfile檔案,我們基於java:8-jdk映象進行構建,只所以選擇這個映象是因為jenkins也是依賴這個映象,後續jenkins直接依賴我們構建產生的android映象即可。在Dockerfile檔案中輸入構建命令:



ENV DEBIAN_FRONTEND noninteractive

# install dependencies
RUN dpkg --add-architecture i386 && \
    apt-get update && \
    apt-get install -yq libstdc++6:i386 zlib1g:i386 libncurses5:i386 --no-install-recommends && \
    apt-get -y install --reinstall locales && \
    apt-get install -y git curl zip vim&& \
    dpkg-reconfigure locales && \
    echo 'ja_JP.UTF-8 UTF-8' >> /etc/locale.gen && \
    locale-gen ja_JP.UTF-8 && \
    localedef --list-archive && locale -a &&  \
    update-locale &&  \
    apt-get clean

# Download and untar SDK
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

# set env
ENV ANDROID_HOME /usr/local/android-sdk-linux
ENV ANDROID_SDK /usr/local/android-sdk-linux
ENV PATH ${ANDROID_HOME}/tools:$ANDROID_HOME/platform-tools:$PATH

# install Android SDK components

COPY android_sdk_components.env /android_sdk_components.env
RUN (while :; do echo 'y'; sleep 3; done) | android update sdk --no-ui --all --filter "$(cat /android_sdk_components.env)"

# download gradle 
RUN wget http://downloads.gradle.org/distributions/gradle-2.11-all.zip
RUN mkdir -p /usr/local/gradle
RUN unzip gradle-2.11-all.zip -d /usr/local/gradle
RUN rm gradle-2.11-all.zip
ENV GRADLE_HOME /usr/local/gradle/gradle-2.11
ENV PATH $GRADLE_HOME/bin:$PATH

# support gradle
ENV TERM dumb
" data-snippet-id="ext.60a4d64c35f46ac5a9b71d9804533587" data-snippet-saved="false" data-codota-status="done">FROM java:8-jdk

MAINTAINER Zhangqu Li <[email protected]>

ENV DEBIAN_FRONTEND noninteractive

# install dependencies
RUN dpkg --add-architecture i386 && \
    apt-get update && \
    apt-get install -yq libstdc++6:i386 zlib1g:i386 libncurses5:i386 --no-install-recommends && \
    apt-get -y install --reinstall locales && \
    apt-get install -y git curl zip vim&& \
    dpkg-reconfigure locales && \
    echo 'ja_JP.UTF-8 UTF-8' >> /etc/locale.gen && \
    locale-gen ja_JP.UTF-8 && \
    localedef --list-archive && locale -a &&  \
    update-locale &&  \
    apt-get clean

# Download and untar SDK
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

# set env
ENV ANDROID_HOME /usr/local/android-sdk-linux
ENV ANDROID_SDK /usr/local/android-sdk-linux
ENV PATH ${ANDROID_HOME}/tools:$ANDROID_HOME/platform-tools:$PATH

# install Android SDK components

COPY android_sdk_components.env /android_sdk_components.env
RUN (while :; do echo 'y'; sleep 3; done) | android update sdk --no-ui --all --filter "$(cat /android_sdk_components.env)"

# download gradle 
RUN wget http://downloads.gradle.org/distributions/gradle-2.11-all.zip
RUN mkdir -p /usr/local/gradle
RUN unzip gradle-2.11-all.zip -d /usr/local/gradle
RUN rm gradle-2.11-all.zip
ENV GRADLE_HOME /usr/local/gradle/gradle-2.11
ENV PATH $GRADLE_HOME/bin:$PATH

# support gradle
ENV TERM dumb

構建命令很簡單,首先就是安裝一些依賴,然後是下載android sdk,通過執行無ui的android sdk來安裝一些sdk所需的元件,這些元件我們定義在android_sdk_components.env檔案中,此外還設定了Android的環境變數。當然除了Android sdk外,還需要安裝一下gradle,下載,解壓,設定環境變數即可。最後有一個ENV TERM dumb,這個是為了命令列能執行gradle命令。

終端進入Dockerfile所在目錄,執行build命令構建映象docker-android

docker build -t docker-android . 

一直等映象構建完,這裡可能需要一定的時間,因為要去下載一些sdk元件。

構建jenkins映象

jenkins映象我們使用官方的Dockerfile檔案進行定製,首先將官方的原始碼clone下來,專案地址:https://github.com/jenkinsci/docker

git clone [email protected].com:jenkinsci/docker.git

clone完成後進入原始碼目錄,修改Dockerfile檔案內容,將From映象修改為剛才我們構建完成的docker-android映象,即

FROM openjdk:8-jdk
修改為
FROM docker-android:latest

由於docker-android映象中已經把curl,wget,git,zip等軟體都安裝掉了,所以接下來的第二行的安裝軟體的命令可以去掉,即這一行去掉

RUN apt-get update && apt-get install -y git curl zip && rm -rf /var/lib/apt/lists/*

同時我們為了提權,可能需要安裝一下sudo,這個視情況,如果你不需要的話可以不安裝,如果需要的話就加上命令

RUN apt-get install -y sudo

還要在USER ${user}前面加上

### 如果沒有安裝sudo,這裡也不需要執行
RUN echo "${user}:${user}" | chpasswd  
RUN echo "${user}   ALL=(ALL)       ALL" >> /etc/sudoers 
### 加在這個前面
USER ${user}

之後進入原始碼目錄,執行docker build命令構建jenkins映象

docker build -t docker-jenkins . 

構建完成後執行容器,進行埠對映

docker run --name=myjenkins -d -p 8080:8080 -p 50000:50000 docker-jenkins

這時候等容器執行起來後,瀏覽器輸入http://127.0.0.1:8080,即可進行安裝,如果安裝介面出現提示你輸入密碼,這個密碼你可以從安裝介面提示的檔案中找到,也可以從docker的輸出log中找到。

生成git ssh key

使用命令進入容器bash終端

docker exec -i -t myjenkins /bin/bash

進入到使用者目錄

cd ~

生成ssh key

git config --global user.name "lizhangqu"
git config --global user.email "[email protected]"
ssh-keygen

把生成的key加入到你的github賬戶或者公司程式碼倉庫中去

安裝必要的jenkins外掛及配置相關內容

這個不詳細說,具體見這篇文章中的外掛 Mac OSX搭建Jenkins持續整合環境,主要就是配置賬戶體系,配置ssh key的目錄,安裝外掛。如果外掛安裝失敗的話多安裝幾次就好了,安裝完成後記得重啟jenkins。

嘗試構建一個gradle專案

新建一個Job,利用安裝的Git Plugin外掛,使用原始碼控制中的Git配置原始碼倉庫。
這裡寫圖片描述

利用安裝的外掛進行下面兩個操作,一個是執行的shell命令,一個是斷言構建輸出的目錄,如果目錄下沒有東西,則構建失敗

這裡寫圖片描述

嘗試構建,構建成功後會如下圖所示

這裡寫圖片描述

jenkins api

Gitlab整合

之前Gitlab整合到docker的過程中遇到了一點小問題,就是docker 容器中的內容不能持久化,一旦容器重啟,容器中的資料也就沒了。。。後來試了下官方的Docker for mac 版本,發現這個問題不存在,直接使用gitlab-ce的映象即可。

docker run --name=mygitlab -d -p 4433:443 -p 2222:22 -p 8000:80 gitlab/gitlab-ce:latest

至於gitlab怎麼和jenkins進行整合,自己去研究吧

相關推薦

Mac OSX Docker搭建Android+Jenkins+Gitlab

之前寫過一篇Mac OSX搭建Jenkins持續整合環境,後來mac從10.11升到了10.11後,Jenkins就不可用了,最近測試一些功能需要再次用到Jenkins,為了杜絕之前發生的問題,這次就用Docker來搭建,記錄一下。 安裝Docker fo

Mac OS X搭建Android Source編譯環境的問題及解決方法

[轉發請註明出處,謝謝] 本文的編譯環境指的是Android Kernel,Framework的編譯,不是Application的開發環境。 有詳細說明的只給出連結和要點提示。 大的步驟就是Android的source網站的原文 “Initializing a Buil

Mac OS X搭建Android開發環境

準備工具 Java 1.6 For Mac OS X — 在Mac上執行Eclipse會提醒需要Java 6執行時支援庫 Java 1.8 For Mac OS X — 本人開發時所用的jdk版本 Eclipse — 本人開發時所用版本為Eclipse Lun

Docker搭建gitlab

cool face long timezone 額外 aps 深入 gitlab備份 rect 一、GitLab簡介 GitLab 是一個用於倉庫管理系統的開源項目。使用Git作為代碼管理工具,並在此基礎上搭建起來的web服務。Github是公共的git倉庫,而Gitlab

Mac OS 搭建android studio開發環境

1.jdk安裝 這步驟是少不了的,如果不安裝jdk直接安裝android studio,後期使用還是一樣會遇到license報錯的問題。所以,在安裝android studio前,先安裝jdk。 jdk可以到官網下載,然後按照提示操作就行,很簡單。不過官網在大陸地區下載速度很慢,在此共享

MAC OSX Docker開發環境搭建

MAC OSX  Docker 開發環境搭建 1. 安裝Virtualbox 下載地址 2. 安裝boot2docker $ brew install boot2docker # 也可以手工安裝

MAC搭建Android Studio

JDK1.8安裝: 2、雙擊安裝 3. 安裝完成,在命令列終端輸入java -version,有輸出版本號則 安裝成功 4. 預設jre路徑 Android Studio2.1安裝: 2、點選即可安裝

在Windows搭建Android開發環境

c51 公司 智能 單獨 window 引用 ssp 管理 第一個  隨著移動互聯網的迅速發展,前端的概念已發生很大的變化,已不僅僅局限在網頁端。而Android系統作為智能機市場的老大,作為前端開發工程師,非常有必要了解和學習。但面對眾多學習資料,站在前端開發工程

如何在Mac OSX系統安裝Tomcat

tomcat1. 下載Tomcat(地址:tomcat.apache.org),選擇適合的版本(這裏選擇6.0.35),點擊“Download”,之後在新頁面點擊“Core下的”“tar.gz”(6.2Mb) 2. 解壓Tomcat到目錄:/Library 中,並把文件夾名由“apache-tomcat-6.

docker搭建owncloud

lin dock cloud vol 文件 log aliyun class env 在ubuntu下 搭建owncloud 用docker-compose啟動,owncloud.yml文件內容 owncloud: image: owncloud:9 restar

Mac OSX 上配置Appium+Android自動化測試環境

crm get exp 一個 shang time 點擊 host 設置代理 前提準備 開始正文之前,你需要準備好一些基本條件: 安裝好Mac OSX 操作系統的設備 能夠訪問中國局域網以外資源的方法(沒有也行,但很痛苦) 已經安裝好 homebrew 已經安裝好 Pyt

Mac OSX 系統malware感染後系統改變情況

上一篇文章我們談論了使用者常見的惡意軟體感染途徑,下面再來說一說,感染後系統做了哪些改變,如果你有這些症狀,那很可能不經意間,你已經感染了這些malware。 使用者點選和安裝惡意軟體後,後臺毫無提示的安裝了下面已發現的外掛(實際比這還多) 安裝後,出現了下

Mac OSX 系統常見malware感染的過程與分析

很久沒來記錄工作的點點滴滴了,趁這周有空,整理了下前期梳理的某些方面問題的處理和解決辦法。 前段時間,很多使用者反饋感染了malware,Adware,惡意外掛之類的,苦於缺少環境,沒有真實環境,缺少可靠資訊等現實問題,這邊根據使用者提供的關鍵資訊,模擬了下感染過程。  本文top

linux環境搭建自動化Jenkins管理工具

一、搭建一個jak--tomcat伺服器到自己的linux伺服器上   具體的伺服器搭建這裡可以參考華華大佬的部落格:https://www.cnblogs.com/liulinghua90/p/4661424.html 二、 如果通過http:ip地址:埠在瀏覽器訪問出現下   說明

Mac OS X搭建NDK環境

Mac OS X下NDK環境的搭建 抄一篇冷飯,主要是本渣渣還是研究了半天的。。。想當好程式猿,千萬別沒事隨便刪個資料夾,移動個資料夾啥的。。。 好了,正文如下。 1)下載NDK(Mac OS X版本) 下載地址:link 下載完成後,將壓縮包解壓,並記錄解壓後的

Docker搭建DNS伺服器dnsmasq

為方便Hadoop叢集管理,決定利用docker環境手動搭建一個DNS伺服器。 1. 配置容器 選擇andyshinn/dnsmasq的docker映象,2.75版本。執行命令 docker run -d -p 53:53/tcp -p 5

【Linux-Android開發記(一)】Ubuntu 12.04搭建Android開發環境

之前寫過一個系列日誌【Linux菜鳥成長記】Ubuntu 10.04系類教程 。從Ubuntud安裝,到常用設定,再到JDK安裝,Eclipse安裝等。 從這篇日誌開始轉為在Ubuntu進行Android開發的系列日誌,將從基礎的SDK安裝開始,慢慢進入: 環境:Ubunt

Mac OS X 開發 Android 程式時使用 USB 連真機除錯

本人很早一篇 Mac OS X 下開發 Android 程式時使用 WiFi ADB 連真機除錯,手機端需要連線  WiFi, Root 許可權開啟 ADB 埠,電腦上執行 adb connect 命令來讓 Mac 連線 Android 真機進行除錯,其實用不著那麼麻煩

Mac OSX系統安裝metasploit框架軟體(MSF)

最近看《Metasploit滲透測試指南》,第二章開始有具體操作舉例,於是準備在電腦上安裝MSF終端用於測試。 MSF終端(msfconsole),一種Metasploit框架的使用者介面。 安裝成功之後,發現並有像其他APP一樣在Launchpad裡面有顯示圖示,於是用

如何在Windows搭建Android開發環境

搭建Android開發環境<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 1 下載Android SDK http://code.google.com/and