目录
前言:
在软件开发过程中,持续集成是一个非常重要的环节。而在持续集成过程中,使用 Jenkins 是一个非常实用的工具。Jenkins 是一个开源持续集成工具,可以用来自动化测试和构建软件。它提供了一些简单易用的方法来构建持续集成流程,并可以自动化构建应用程序。
背景描述
根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对 iOS 和 Android 项目的打包。而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品、运营、测试等人员)通过手机扫描二维码后就能直接安装测试包。
该需求具有一定的普遍性,基本上所有开发 APP 的团队都可能会用到,因此我将整个需求实现的过程整理后形成此文,并且真正地做到了零基础上手,到手即飞、开箱即用
,希望能对大家有所帮助。
该平台主要实现的功能有 3 点:
- 定期对 GitHub 仓库进行检测,若有更新则自动执行构建打包;
- 构建成功后根据 ipa/apk 生成二维码,并可在历史构建列表中展示各个版本的二维码,通过手机扫描二维码可直接安装对应版本;
- 在构建结果页面中展示当次构建的成果物(Artifact,如
.ipa
、.app
、.apk
、info.plist
等文件),供有需要的用户进行下载。
接下来,本文就开始对平台建设的完整实现过程进行详细介绍。
安装 Jenkins
Jenkins 依赖于 Java 运行环境,因此需要首先安装Java。
安装 Jenkins 的方式有多种,可以运行对应系统类型的安装包,可以通过 docker 获取镜像,也可以直接运行war
包。
我个人倾向于直接运行war
包的形式,只需下载jenkins.war
后,运行如下命令即可启动 Jenkins。
$ nohup java -jar jenkins_located_path/jenkins.war --httpPort=88 &
如果不指定httpPort
,Jenkins 的默认端口为 8080。
Jenkins 插件
Jenkins 有非常多的插件,可以实现各种功能的扩展。
针对搭建的 iOS/Android 持续集成打包平台,我使用到了如下几个插件。
- GIT plugin
- SSH Credentials Plugin
- Git Changelog Plugin: 获取仓库提交的 commit log
- build-name-setter:用于修改 Build 名称
- description setter plugin:用于在修改 Build 描述信息,在描述信息中增加显示 QRCode(二维码)
- Post-Build Script Plug-in:在编译完成后通过执行脚本实现一些额外功能
- Xcode integration: iOS 专用(可选)
- Gradle plugin: Android 专用(可选)
安装方式也比较简单,直接在 Jenkins 的插件管理页面搜索上述插件,点击安装即可。
创建项目(Job)
在 Jenkins 中,构建项目以 Job 的形式存在,因此需要针对每个项目创建一个 Job。有时候,一个项目中可能有多个分支同时在进行开发,为了分别进行构建,也可以针对每个分支创建一个 Job。
创建 Job 的方式有多种,本次只需要创建Freestyle project
类型的即可。
Main page
->New Item
->Freestyle project
对于一个持续集成打包平台,每次打包都由 4 步组成:触发构建、拉取代码、执行构建、构建后处理。对应的,在每个 Job 中也对应了这几项的配置。
配置 Git 代码仓库
要对项目进行构建,配置项目的代码仓库是必不可少的。由于当前我们的项目托管在 GitHub 私有仓库中,因此在此需要对Git
进行配置。
在【Source Code Management