Mac OSX Docker下搭建Android+Jenkins+Gitlab

来源:互联网 发布:阿里云服务器维护教程 编辑:程序博客网 时间:2024/05/22 03:07

之前写过一篇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文件中输入构建命令:

FROM java:8-jdkMAINTAINER Zhangqu Li <lizhangqu@weidian.com>ENV DEBIAN_FRONTEND noninteractive# install dependenciesRUN 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 SDKENV ANDROID_SDK_URL http://dl.google.com/android/android-sdk_r24.4.1-linux.tgzRUN curl -L "${ANDROID_SDK_URL}" | tar --no-same-owner -xz -C /usr/local# set envENV ANDROID_HOME /usr/local/android-sdk-linuxENV ANDROID_SDK /usr/local/android-sdk-linuxENV PATH ${ANDROID_HOME}/tools:$ANDROID_HOME/platform-tools:$PATH# install Android SDK componentsCOPY android_sdk_components.env /android_sdk_components.envRUN (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.zipRUN mkdir -p /usr/local/gradleRUN unzip gradle-2.11-all.zip -d /usr/local/gradleRUN rm gradle-2.11-all.zipENV GRADLE_HOME /usr/local/gradle/gradle-2.11ENV PATH $GRADLE_HOME/bin:$PATH# support gradleENV 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 git@github.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 "lizhangqu@weidian.com"ssh-keygen

把生成的key加入到你的github账户或者公司代码仓库中去

安装必要的jenkins插件及配置相关内容

这个不详细说,具体见这篇文章中的插件 Mac OSX搭建Jenkins持续集成环境,主要就是配置账户体系,配置ssh key的目录,安装插件。如果插件安装失败的话多安装几次就好了,安装完成后记得重启jenkins。

尝试构建一个gradle项目

新建一个Job,利用安装的Git Plugin插件,使用源码控制中的Git配置源码仓库。
这里写图片描述

利用安装的插件进行下面两个操作,一个是执行的shell命令,一个是断言构建输出的目录,如果目录下没有东西,则构建失败

这里写图片描述

尝试构建,构建成功后会如下图所示

这里写图片描述

jenkins api

jenkins 提供一些restful api进行调用,通过这些api我们可以获得我们想要的信息,比如构建是否成功等等,我们可以通过类似http://127.0.0.1:8080/api/json或者http://127.0.0.1:8080/api/xml获得我们想要的内容,如果对某个job感兴趣,可以使用http://127.0.0.1:8080/job/Test/api/json,如果对该job某次构建感兴趣,可以使用http://127.0.0.1:8080/job/Test/1/api/json,更多restful 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进行集成,自己去研究吧

2 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 清理空间时不小心把图片删了怎么办 手机中清理误把照片删了怎么办 清理手机文件把照片给删了怎么办 清理手机不小心把照片删了怎么办 金牛不回微信我也不理他他会怎么办 华为手机微信文件自动删除怎么办 微信清理数据后不能登录了怎么办 k歌占内存又不想删除歌曲怎么办 把所有商品放在一起做链接怎么办 微信解冻短信验证总显示失败怎么办 淘金币能抵钱商家拿了淘金币怎么办 真实订单被系统判定虚假交易怎么办 淘宝买家号疑似虚假交易违规怎么办 货品交易一方收了定金违约了怎么办 饿了么店铺收到差评怎么办 淘宝顾客退款没成功给差评怎么办 身份证绑定了淘宝注册支付宝怎么办 把钱转错到支付宝账号被扣了怎么办 网上买东西收到信息被删掉了怎么办 表格在手机上显示不出来怎么办? 电子表格中复制后没有虚线框怎么办 word中页眉页脚横线短了怎么办 亿图图示画的图不显示怎么办 掌柜宝用了几天无法登录了怎么办 手机千牛消息不小心删除了怎么办 淘宝账号被冻结提示无法恢复怎么办 商家未发货我误点了确认收货怎么办 淘宝买货商家不发货也不退款怎么办 商家没发货点成收货了怎么办 淘宝新店上架产品未通过审核怎么办 安卓手机电池虚电怎么办_查查吧 拼多多拼单期间商家下架商品怎么办 微信绑别人的卡需要人脸认证怎么办 支付宝把钱转到了停用的账号怎么办 我注册征信账号忘记了要怎么办 客户说考虑考虑我该怎么办招商类 浴巾用久了黑黑的洗不干净怎么办 wifi密码被别人改了怎么办啊 苹果手机更新后账号密码忘了怎么办 专项预审批额度额度时效了怎么办 id密码和id码丢了怎么办