使用 jenkins 自动化编译cordova for android 生成 APK

万事须己运,他得非我贤。这篇文章主要讲述使用 jenkins 自动化编译cordova for android 生成 APK相关的知识,希望能为你提供帮助。
引言前文中已经介绍了什么是cordova 为什么要用cordova,基础的环境搭建以及如何编译打包生成APK安装包,接下来我们介绍如何使用Jenkins 自动化编译打包生成APK安装包!

使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

服务器搭建在搭建jerkins之前首先需要一台服务器环境,一个虚拟机或者阿里云租一台,这里我以虚拟机为例子:
  • 准备一台虚拟机:系统为centos
  • docker环境的搭建
docker 环境的搭建,docker是什么?为什么使用docker? 那么咱们简单了解下docker是什么Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。
docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。
  1. 不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。
  2. 你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。
  3. 在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。
docker的安装不清楚docker如何安装的小伙伴请步我的另一篇文章 docker安装篇
Jenkins 安装简单的理解,Jenkins只不过是持续集成的一个工具而已!持续集成是什么?传送门在这里 持续集成是什么?
【使用 jenkins 自动化编译cordova for android 生成 APK】在这里我准备了一篇我在N年前学习Jenkins的时候留下的文章,传送门Ubuntu下搭建Jenkins
Jenkins的 Dockerfile
FROM jenkins/jenkins:lts-slim MAINTAINER shuoer 690515591@qq.com #切换为root用户 USER root #更新当前的shell环境 SHELL ["/bin/bash", "-c"] #指定android的版本 ARG ANDROID_VERSIONS=android-26 #指定build-tools的版本 ARG ANDROID_BUILD_TOOLS=26.0.2 #指定node的版本 ARG NODE_VERSION=setup_10.x #android-sdk的home地址 ENV ANDROID_HOME /opt/android-sdk-linux ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:/opt/gradle-4.1/bin #用于干掉每次编译时总是从Google下载gradle编译工具 ENV CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=\'https://raw.githubusercontent.com/zhaoshuoer/my-docker/master/node/app/public/gradle-4.1-all.zip\' #安装node、cordova环境 RUN curl -sL https://deb.nodesource.com/${NODE_VERSION} | bash & & \\ apt-get install -y nodejs & & \\ apt-get install -y build-essential & & \\ rm -rf /var/lib/apt/lists/* & & \\ npm install -g cordova & & \\ npm install -g yarn & & \\ curl -O https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz & & \\ tar zxvf docker-latest.tgz & & \\ cp docker/docker /usr/local/bin/ & & \\ rm -rf docker docker-latest.tgz WORKDIR /opt #安装android环境RUN curl -O https://downloads.gradle.org/distributions/gradle-4.1-bin.zip & & \\ unzip gradle-4.1-bin.zip & & \\ curl -O http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz & & \\ tar zxvf android-sdk_r24.4.1-linux.tgz & & \\ mkdir /root/.android & & \\ touch /root/.android/repositories.cfg & & \\ echo y | android update sdk \\ -a \\ --no-ui \\ --filter \\ tools,platform-tools,${ANDROID_VERSIONS},build-tools-${ANDROID_BUILD_TOOLS} & & \\ rm -rf android-sdk_r24.4.1-linux.tgz & & \\ rm -rf gradle-4.1-bin.zip # 将 `jenkins` 用户的组 ID 改为宿主 `docker` 组的组ID,从而具有执行 `docker` 命令的权限。 ARG DOCKER_GID=999 ARG DOCKER_PORT=8080 USER root:${DOCKER_GID} EXPOSE ${DOCKER_PORT}

构建Jenkins的docker image
#如果你有梯子的话您大可等上两三个小时去编译出来 $ docker build -t jenkins .#如果您不想编译,我也提供了编译好的Jenkins镜像 #从docker官方hub下载镜像 $ docker pull shuoer/jenkins:cordova#或者您也可以从阿里云下载镜像地址为: $ docker pull registry.cn-hangzhou.aliyuncs.com/shuoer/jenkins:cordova

jenkins 启动脚本
#将该脚本保存为start-jenkins.sh docker run \\ -d \\ --rm \\ -p 8080:8080 \\ -p 50000:50000 \\ -e java_OPTS=-Duser.timezone=Asia/Shanghai \\ -v "$PWD/jenkins_home":/var/jenkins_home \\ -v /var/run/docker.sock:/var/run/docker.sock \\ --name jenkins \\ shuoer/jenkins:cordova

执行该脚本下载jenkins的docker镜像并运行该容器
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

打开浏览器查看下jenkins是否启动,端口为8080
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

当看到改界面的时候,恭喜您jenkins安装成功了!接下来我们需要拿到jenkins的密钥来解锁安装jenkins
#进入到jenkins的容器内部 $ docker exec -it jenkins bash #打印jenkins的密钥 $ cat /var/jenkins_home/secrets/initialAdminPassword

使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

将密钥粘贴到浏览器中 点击 Continue 按钮 进入安装插件界面
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

由于网络原因,安装过程可能会有点慢!
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

插件安装完成之后创建一个管理员账户
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

账户创建完成之后,进入jenkins 到此jenkins的安装已全部完成
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

创建jenkins任务创建一个自由风格的项目
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

添加源码管理
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

添加构建步骤
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

添加编译脚本
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

添加完成之后点击保存,构建cordova android 版 生成 APK 安装包
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

在首次编译的时候由于需要下在各种依赖包耗时会比较长
使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

使用 jenkins 自动化编译cordova for android 生成 APK

文章图片

说明
如果将以上技术栈描述清楚需要不小的篇幅,所以我会将文章进行拆分:
1. Hybrid App 开发实践总结 ~开篇 2. cordova的环境配置和创建第一个android App 3. 使用 jenkins 自动化编译cordova android 生成 APK(本文) 4. 服务器端code-push-server、mysql服务的架设 5. 客户端code-push插件的引入及code-push-cli的使用 7. 如何使用纯shell编写一个快速搭建开发者环境的命令行工具和安卓端真机调试

    推荐阅读