简介

Jenkins

Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点。

Gitlab

GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

持续集成

持续集成, 简称CI(continuous integration).
CI作为敏捷开发重要的一步,其目的在于让产品快速迭代的同时,尽可能保持高质量.
CI一种可以增加项目可见性,降低项目失败风险的开发实践。其每一次代码更新,都要通过自动化测试来检测代码和功能的正确性,只有通过自动测试的代码才能进行后续的交付和部署.
CI 是团队成员间(产研测)更好地协调工作,更好的适应敏捷迭代开发,自动完成减少人工干预,保证每个时间点上团队成员提交的代码都能成功集成的,可以很好的用于对Android/iOS项目的打包.

Jenkins打包流程

安装

安装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插件安装

这里写图片描述

实用插件

  • iOS专用:Xcode integration
  • Android专用:Gradle plugin
  • Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin
  • Git插件: Git plugin
  • GitBuckit插件: GitBuckit plugin
  • 签名证书管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
  • FTP插件: Publish over FTP
  • 脚本插件: Post-Build Script Plug-in
  • 修改Build名称/描述(二维码): build-name-setter / description setter plugin
  • 获取仓库提交的commit log: Git Changelog Plugin
  • 自定义全局变量: Environment Injector Plugin
  • 自定义邮件插件: Email Extension Plugin
  • 获取当前登录用户信息: build-user-vars-plugin
  • 显示代码测试覆盖率报表: Cobertura Plugin
    来展示生成的单元测试报表,支持一切单测框架,如junit、nosetests等: Junit Plugin
  • 其它: GIT plugin / SSH Credentials Plugin
创建项目(Job)

在Jenkins中,构建项目以Job的形式存在,因此需要针对每个项目创建一个Job。有时候,一个项目中可能有多个分支同时在进行开发,为了分别进行构建,也可以针对每个分支创建一个Job。
创建Job的方式有多种,本次只需要创建Freestyle project类型的即可。

Main page -> New Item -> Freestyle project

对于一个持续集成打包平台,每次打包都由4步组成:触发构建、拉取代码、执行构建、构建后处理。对应的,在每个Job中也对应了这几项的配置。

Jenkins Jobs配置

1.新建job;
2.配置Git代码仓库

配置Git代码仓库时,有三项是必须配置的:
仓库URL地址(Repository URL)
仓库权限校验方式(Credentials)
以及当前Job需要构建的代码分支(Branches to build)

3.配置构建触发器

比如常用的有:
定期进行构建(Build periodically)
根据提交进行构建(Build when a change is pushed to GitHub)
定期检测代码更新,如有更新则进行构建(Poll SCM)

4.配置构建方式

常用的构建方式是根据构建对象的具体类型,安装对应的插件,然后采用相应的构建方式。
采用脚本配置打包

5.构建后处理

上传安装包文件,生成二维码
展示二维码图片
收集编译成果物(Artifacts)

参考:http://debugtalk.com/post/iOS-Android-Packing-with-Jenkins/

Jenkins持续集成打包平台构建

Logo

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

更多推荐