Docker + Jenkins + Cordova建设移动端打包平台

原创 2015年11月20日 17:26:24

背景

随着公司移动端开发任务越来越多,支持各项目组快捷方便的开发移动端应用越来越重要。因此,需要在公司的公共移动平台上增加基于H5的移动打包部署功能。经过考察,apache cordova在这方面表现比较突出,本文主要说明如何基于cordova构建一个移动打包部署平台。

实现思路

使用cordova编译打包H5的移动应用,集成到Jenkins的构建任务,同时利用Jenkins支持参数式编译特性,实现支持多应用的移动端打包平台。
利用Docker将打包平台封装成镜像,便于以后的多节点部署和扩展。

将编译打包环境构建成Docker Image

  • 首先编写Dockerfile,将Jenkins和Cordova环境设置好:
FROM jenkins

MAINTAINER Yasong Yao "yaoyasong@gmail.com"

RUN dpkg --add-architecture i386 && \
    apt-get update -y && \
    apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get autoremove -y && \
    apt-get clean

ENV ANDROID_VERSIONS android-18,android-19,android-20,android-21,android-22
ENV ANDROID_BUILD_TOOLS 22.0.1
ENV ANDROID_HOME /opt/android-sdk-linux
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
ENV ANDROID_FILE android-sdk_r24.4.1-linux.tgz
ENV TERM linux

COPY ${ANDROID_FILE} /opt/

RUN cd /opt && \
    tar xzf ${ANDROID_FILE} && \
    echo y | android update sdk -u -a --filter tools,platform-tools,${ANDROID_VERSIONS},build-tools-${ANDROID_BUILD_TOOLS} && \
    rm ${ANDROID_FILE}

RUN apt-get update && apt-get install -y nodejs npm nodejs-legacy && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

#Install cordova globally
RUN npm install -g cordova

利用Jenkins镜像,安装android编译环境和nodejs环境,最后利用npm安装cordova。

  • 根据Dockerfile编译成镜像,放置到内部的Docker registry上,便于以后使用。
    运行
docker build -t local/jenkins_cordova .

然后就可以去喝茶了,经过很长的过程后,镜像应该就会构建完成。

运行镜像,启动Jenkins服务

docker run -d  -p 8080:8080 -p 50000:50000 -v /etc/localtime:/etc/localtime:ro -v /data/jenkins_cordova/volume:/var/jenkins_home\
 --name jenkins_cordova --env -Duser.timezone=GMT+08"\
 local/jenkins_cordova

正常启动后,应该就可以访问Jenkins服务

在Jenkins上创建Android通用构建任务

  • 创建一个自由风格的软件项目:android_build
  • 增加一个File Parameter:upload/app.zip
  • 增加两个String parameter:APP_ID,APP_NAME
    这里写图片描述
  • 增加一个Execute shell,填入如下cordova构建脚本:
rm -rf ${WORKSPACE}/${APP_ID}

cordova create ${APP_ID} ${APP_ID} ${APP_NAME}
cd ${APP_ID}/www
rm -rf *
mv ${WORKSPACE}/upload/app.zip .
unzip app.zip
rm -f app.zip
cd ..
cordova platforms add android
cordova build android

cp ${WORKSPACE}/${APP_ID}/platforms/android/build/outputs/apk/*.apk ${WORKSPACE}

使用android_build编译打包Android移动应用

  • 选择android_build,运行Build with Parameters,弹出输入选择框
    这里写图片描述
  • 将要编译的h5项目打包成zip文件
  • 点击开始构建启动任务
  • 任务运行完成,就可以在工作空间看到构建成功的Android程序包,下载到手机试试看吧。

后续改进

上面描述了通用移动打包平台的主要思路和实现,要构建一个易用的打包部署平台,后续可以考虑

  • 使用Jenkins Master + Slave方式提高构建的性能
  • 参考同样的方式实现ios等其它移动打包
  • 集成cordova插件、自定义信息等
版权声明:本文为博主原创文章,未经博主允许不得转载。

Mac OSX Docker下搭建Android+Jenkins+Gitlab

之前写过一篇Mac OSX搭建Jenkins持续集成环境,后来mac从10.11升到了10.11后,Jenkins就不可用了,最近测试一些功能需要再次用到Jenkins,为了杜绝之前发生的问题,这次就...
  • sbsujjbcy
  • sbsujjbcy
  • 2016年08月15日 21:44
  • 3759

利用Jenkins玩转Android自动打包发包

请尊重原创,转载请注明出处: 先看一眼效果图: 脚本配置地址:https://github.com/mabeijianxi/android-automation 总体步骤可为: 下载新...
  • mabeijianxi
  • mabeijianxi
  • 2016年09月27日 14:12
  • 28732

在容器中运行Jenkins部署主机中的docker应用

如何让一个跑在container里的Jenkins把应用部署到host环境上?
  • Raptor
  • Raptor
  • 2017年05月14日 17:24
  • 2268

Jenkins搭建Android自动打包

Jenkins搭建Android自动打包意义: - 对于工程师来说,你就只管提交代码,不用关心怎么打包之类的。 - 对于产品或者测试,我只需要从发布页面下载APK安装文件,不必每次都跑工程师那,安...
  • u011333411
  • u011333411
  • 2016年11月18日 10:10
  • 3331

使用 Jenkins 搭建 iOS/Android 持续集成打包平台 (开箱即用)

转载自:https://testerhome.com/topics/5285 背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android...
  • henni_719
  • henni_719
  • 2017年01月16日 11:41
  • 561

在(Docker里的)Jenkins里运行Docker

在本文中,我们将快速了解一下如何在一个容器里装载Docker sock以便创建其“兄弟”容器。我的一个同事称之为DooD(Docker-outside-of-Docker),以区别于DinD(Dock...
  • zhou8622
  • zhou8622
  • 2016年08月20日 10:03
  • 3790

在搭建基于jenkins+maven+git+docker的全自动化部署时遇到的问题

基于jenkins+maven+git+docker的全自动化部署解决方案
  • u013257425
  • u013257425
  • 2016年12月06日 20:49
  • 5164

Jenkins实现Android自动打包

1. 前言14年在给天天酷跑团队做sdk的算是第一次接触到Jenkins,当时有种乡下孩子进城的感觉,被jenkins流弊的体验所折服,只需要一个按钮点一下就坐等出包,不用IED繁琐的打包流程。当然自...
  • dfskhgalshgkajghljgh
  • dfskhgalshgkajghljgh
  • 2017年06月04日 13:44
  • 1329

搭建 Jenkins+Docker 自动化集成环境

一、关于Jenkins Jenkins简介 Jenkins可以帮你构建一个自动化的持续集成环境,你可以使用它来“自动化”编译、打包、分发部署你的应用,它兼容 ant、maven、gradle 等多...
  • qq_36871364
  • qq_36871364
  • 2017年06月08日 20:24
  • 640

docker安装jenkins搭建自动化部署

docker集成安装jenkins:1.docker安装1、下载docker wget https://yum.dockerproject.org/repo/main/centos/6/Package...
  • yiluoAK_47
  • yiluoAK_47
  • 2017年07月27日 10:06
  • 754
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Docker + Jenkins + Cordova建设移动端打包平台
举报原因:
原因补充:

(最多只允许输入30个字)