背景

随着公司移动端开发任务越来越多,支持各项目组快捷方便的开发移动端应用越来越重要。因此,需要在公司的公共移动平台上增加基于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插件、自定义信息等
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐