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,为了杜绝之前发生的问题,这次就...

安装docker及配置Android开发环境

安装docker官方原来的安装docker的脚本https://get.docker.com/已经过时,现在使用的是https://get.docker.com/,命令如下:curl -s https...

【移动端打包平台搭建】使用Jenkins搭建iOS/Android持续集成打包平台

背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包。而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品、运营、测试等...
  • ourpush
  • ourpush
  • 2016年08月18日 07:47
  • 394

移动端与服务器跨平台通信:sockJS,cordova与Vert.x

移动端与服务器跨平台通信:sockJS,cordova与Vert.x 问题引入有个朋友想开发一款APP,想要同时兼容各个APP平台,但是初期投入又不想太大,于是开发人员就选择给他做成H5的, 但是这...

百度云推送push-- 跨平台移动开发phonegap/cordova 3.3全系列教程

消息推送-百度push 选择百度云推送理由:专业、稳定、免费(Google GCM在国内有时无法正常使用) 打开网址,注册开发者帐号,登入。 http://developer.bai...

跨平台移动开发phonegap/cordova 3.3全系列教程-app启动画面

1.app启动画面设计 用photoshop设计启动画面,图片分辨率为720*1280 保存的文件名为splash.png 将splash.png复制到res\drawable,如图 ...
  • mansai
  • mansai
  • 2014年02月06日 16:11
  • 20564

使用Ionic + Apache Cordova开发跨平台混合型的移动应用

JavaScript 写多了,要想真正提高js水平,研究其他js框架源码是不错的选择。Github上大部分都是js、css相关的项目,可以有目的性的 check out 下来,研读研读,还是非常收益的...

跨平台移动开发phonegap/cordova 3.3全系列教程-百度云推送push

1.消息推送-百度push 选择百度云推送理由:专业、稳定、免费(Google GCM在国内有时无法正常使用) 打开网址,注册开发者帐号,登入。 http://developer.baidu.com/...
  • mansai
  • mansai
  • 2014年02月11日 12:55
  • 26442

使用Ionic + Apache Cordova开发跨平台混合型的移动应用

JavaScript 写多了,要想真正提高js水平,研究其他js框架源码是不错的选择。Github上大部分都是js、css相关的项目,可以有目的性的 check out 下来,研读研读,还是非常收益...

跨平台移动开发phonegap/cordova 3.3全系列教程-条码扫描barcode

还未写完。。。 条码扫描barcode 使用zxing实现 先上截图(竖屏,100%仿微信样式) 打开网址,下载(首先要有github帐号,没有自己注册) https://github.com...
  • mansai
  • mansai
  • 2014年02月12日 13:30
  • 14902
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Docker + Jenkins + Cordova建设移动端打包平台
举报原因:
原因补充:

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