Jenkins Gitlab持续集成打包平台搭建

相关概念

Jenkins

  • Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点。更多介绍参考[维基](https://en.wikipedia.org/wiki/Jenkins_(software)介绍.

Gitlab

  • GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目,更多介绍参考维基介绍.

持续集成

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

蒲公英

  • 蒲公英(pgyer)为移动开发者提供App免费测试分发应用的服务平台,支持iOS与Android,简单两步分发应用。类似的还有fir.im等.

流程结构

简单绘制了下Jenkins的一个流程,如下图:

IBM Developer上也有一个看似更复杂一点的图,如下图 

持续交互流程图: 

平台搭建

Jenkins安装和启动

官网: https://jenkins.io/index.html 
下载: http://mirrors.jenkins-ci.org/war/latest/jenkins.war

安装:

  • 依赖于Java环境,首先安装和配置Java环境
  • 官网下载Jenkins,双击安装,如果是Mac电脑,会自动生成全局变量jenkins
  • 修改参数: jenkins + 相关参数,如 
    jenkins –httpPort=8888 #更换端口号,当默认端口8080被占用,或指定特定端口时。

启动

  • 手动启动: java -jar jenkins.war
  • 后台启动(默认端口): nohup java -jar jenkins.war &
  • 后台启动(指定端口): nohup java -jar jenkins.war -httpPort=88 &
  • 后台启动(HTTPS): nohup java -jar jenkins.war -httpsPort=88 &
  • 浏览:http://localhost:8080/ , localhost可配置

Jenkins插件安装

插件安装

操作: Manage Jenkins -> Manage Plugins -> Available -> Search -> Click to install,如下图所示

实用插件

  • 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

Jenkins系统设置

操作: Manage Jenkins -> Configure System

  • Jenkins内部shell UTF-8 编码设置,如下图所示

  • Jenkins Location和Email设置,如下图所示

  • E-mail Notification,设置如下如所示

SMTP详细配置请参考 How to send Email at every build with Jenkins

Jenkins Jobs配置

Jobs基础配置

配置编译参数

例如,如果需要打包者自行选择打包类型,如需要编译Release/Debug/Test等不同版本的包,那需要配置Jobs的编译参数,配置方法如下图所示:

你还可以配置一些其它参数,例如:

配置完后,build界面中就会出现,如下如所示:

How to configure a single Jenkins job to make the release process from trunk or branches?

配置匿名用户权限

后面打包的应用发布时,如果懒得自己搭建服务器,就用Jenkins的,但发布出去的链接需要登录才能访问,这时候你可以设置匿名用户的访问权限,这样匿名用户可以下载访问你提供的应用链接了,非常取巧的方法,如下图:

Jobs源码库配置(Gitlab为例)

配置SSH

操作: Manage Jenkins -> Credentials -> Global credentials (unrestricted) -> Add Credentials

  1. 本机生成SSH:ssh-keygen -t rsa -C “Your email” , 生成过程中需设置密码,最终生成id_rsa和id_rsa.pub(公钥)
  2. 本机添加秘钥到SSH:ssh-add 文件名(需输入管理密码)
  3. Gitlab上添加公钥:复制id_rsa.pub里面的公钥添加到Gitlab
  4. Jenkins上配置密钥到SSH:复制id_rsa.pub里面的公钥添加到Jenkins(private key选项)

新建Job

在Jenkins中,所有的任务都是以”Job”为单位的。在进行操作前,你需要新建一个Job,Job新建比较简单,只需要在Jenkins管理的首页左侧,点击“New Job”,一般选择free-style software project,再输入Job的名字即可。

配置Gitlab

在新建的任务(Jobs)中,Gitlab源码配置如下图:需要输入Git仓库和build分支,公钥使用上面配置SSH生成的公钥。

Jobs触发条件配置

Jenkins支持多种触发器配置,包括:

  • 定期进行构建(Build periodically),定时器使用示例如下:

    H(25-30) 18 * * 1-5: 工作日下午6点25到30分之间进行build 
    H 23 * * 1-5:工作日每晚23:00至23:59之间的某一时刻进行build 
    H(0-29)/15 * * * *:前半小时内每隔15分钟进行build(开始时间不确定) 
    H/20 * * * *:每隔20分钟进行build(开始时间不确定)

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

Jobs构建方式/编译 配置

Jenkins支持多种编译配置方式,包括:

  • Xcode: iOS编译配置(安装Xcode integration插件)
  • Invoke Gradle script: Android编译配置(安装Gradle plugin插件)
  • Exceute Shell: 脚本方式

对于iOS应用的构建,如果选择Xcode方式构建,需要配置好开发者证书,具体参考后面签名和整数问题。 
推荐使用Exceute Shell方式,简单有效。

Jobs构建后处理

Artifacts和邮件通知配置,参考下图

可借助Email Extension Plugin 插件进行详细配置,具体可参考此文

发布

iOS的发布可能希望用到OTA,可参考此文

这里分享一个我写的shell脚本模板(已开源),可以用于iOS的plist文件自动创建以及OTA简单发布页面的自动创建,参考此链接获取源码, 欢迎Star.

自动生成一个简单HTML界面,如下图,点击Install即可安装:

注意,这里iOS7.1以后限定必须要要用https,所以需要对jenkins设置下https,参考下面”后记” 中的Jenkins Https设置

Last Show

构建成功后最终的结果如下如所示:

后记

签名和证书问题(iOS)

Jenkins Https Support

查询Jenkins Https相关命令: 
Java -jar jenkins.war –help | grep -i https

说明:下面以Mac为例.

KeyStore方式

  • 生成:
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass 密码 -dname "cn=WEB" 11
  • 使用:
java -jar jenkins.war --httpPort=-1 --httpsPort=8080 --httpsKeyStore=/目录/keystore.jks --httpsKeyStorePassword=密码11
  • 注意: 第一次使用时需要将”WEB”证书导入,导入步骤为:Chrome导出证书 -> 安装证书 -> 设置证书”全部允许”, 图解步骤可参考下面实用参考中的第5篇文章.

Certificate方式

  • 生成:
1. openssl genrsa -out server.key 10242. openssl req -new -key server.key -out server.csr3. openssl x509 -req -in server.csr -signkey server.key -out server.crt123123
  • 使用:
java -jar jenkins.war --httpsPort=8088 --httpsCertificate=/path/server.crt --httpsPrivateKey=/path/server.key 11
  • 注意:①同上 ②iOS手机需要导入cer证书

实用参考

Refs

时间: 2024-10-07 23:53:31

Jenkins Gitlab持续集成打包平台搭建的相关文章

【iOS】Jenkins Gitlab持续集成打包平台搭建

Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:[email protected] 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点.更多介绍参考维基介绍. Gitlab GitLab是一个利用R

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

背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人员)通过手机扫描二维码后就能直接安装测试包. 该需求具有一定的普遍性,基本上所有开发APP的团队都可能会用到,因此我将整个需求实现的过程整理后形成此文,并且真正地做到了零基础上手,到手即飞.开箱即用,希望能对大家有所帮助. 首先,先给大家展示下平台建设完成后的整体效果: 该平台主要实现的功能有3点:

ARTS-S gitlab与jenkins实现持续集成

jenkins配制 系统管理->管理插件->可选插件->选择安装 Gitlab Hook Plugin和Build Authorization Token Root Plugin插件. jenkins主界面->新建任务->输入一个任务名称(如myproject)->构建一个自由风格的软件项目. 进入myproject,点"配制". 在"源代码管理"选项中填上项目源代码在gitlab上的地址.如http://www.abc.com/

使用jenkins构建持续集成平台

jenkins +   Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线(确认上线前可能经过多种环境的测试) ------上线到生产环境-----最终测试------如果出现问题代码回滚. 传统代码上线: 开发人员开发完成-----打好包(war.jar)-----交给运维人员上线(上传.拷贝) jenkins持续集成简介: 持续集成是一种软件开发实践,对于提高软件开发效

jenkins gulp 持续集成环境搭建

本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.然后教你jenkins如何集成前端构建工具Gulp.不要怕,jenkins gulp 持续集成环境搭建其实也很简单,我会分为五步向你介绍jenkins gulp 持续集成并帮助你完成一些惊人的事情.那就直接开始吧. 第一步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境.访问 https://nodejs.org/en/download/ 下载得到这样的一个文件node-v6.9.

jenkins + Tomcat 持续集成环境搭建

今天在跑selenium用例时需要用到导入数据库来恢复数据,以便每次测试都保持环境是有效数据,于是想到了jenkins,这里简单介绍一下tomcat + jenkins的环境搭建: 步骤一.下载符合版本的jdk7,触压到某个目录,设置好JAVA_HOME并加入path. 步骤二.下载tomcat,这里使用的是apache-tomcat-7.0.42步骤三.下载Jenkins,把Jenkins.war放入tomcat的webapps目录下,启动tomcat,通过http://localhost:8

jenkins+github持续集成中的坑

1.前言 刚开始开发自己的独立博客的时候,每次发布都要手动打包,上传服务器,杀tomcat进程,重启,来回这么重复性工作,很快就有点不耐烦了.如果能自动化的东西,就绝不要手动了,所以自己搭建了个持续集成环境,配好了结合github进行push时自动构建,自动发布的流程,提交代码,泡杯咖啡就发布好了.本以为很简单,但没想到中间细节还是有不少坑,查了很多资料,墙都翻了好几次,把遇到的问题记录在这里. 2.正文 详细安装教程就不复制粘贴了,推荐此文手把手教你搭建Jenkins+Github持续集成环境

RF+Jenkins构建持续集成

引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成测试.Jenkins另一个强大之处就是它的分布式构建(在Jenkins的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows和Linux系统)中编译.测试等.而且Jenkins构建的代码和产物最后自动拷贝到主节点. 简单概括而言,结合RF+Jenkins开展持续集成基本步骤:

使用jenkins实现持续集成

一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预,有利于减少重复过程以节省时间.费用和工作量: 它需要有专门的集成服务器来执行集成构建: 它需要有代码托管工具支持,比如SVN: 官网地址地址:https://jenkins.io Jenkins的主要目标是监控软件开发流程,快速显示问题: jenkins持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,所以它有利于减少重复过程以节省时间.费用