Jenkins Gitlab持续集成打包平台搭建
简单绘制了下Jenkins的一个流程,如下图:
IBM Developer上也有一个看似更复杂一点的图,如下图
持续交互流程图:
官网: 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可配置插件安装
操作: Manage Jenkins -> Manage Plugins -> Available -> Search -> Click to install,如下图所示
实用插件
iOS专用:Xcode integrationAndroid专用:Gradle pluginGitlab插件:GitLab Plugin 和 Gitlab Hook PluginGit插件: Git pluginGitBuckit插件: GitBuckit plugin签名证书管理插件: Credentials Plugin 和Keychains and Provisioning Profiles ManagementFTP插件: 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操作: Manage Jenkins -> Configure System
Jenkins内部shell UTF-8 编码设置,如下图所示Jenkins Location和Email设置,如下图所示
E-mail Notification,设置如下如所示
SMTP详细配置请参考 How to send Email at every build with Jenkins
配置编译参数
例如,如果需要打包者自行选择打包类型,如需要编译Release/Debug/Test等不同版本的包,那需要配置Jobs的编译参数,配置方法如下图所示:
你还可以配置一些其它参数,例如:
配置完后,build界面中就会出现,如下如所示:
How to configure a single Jenkins job to make the release process from trunk or branches?
配置匿名用户权限
后面打包的应用发布时,如果懒得自己搭建服务器,就用Jenkins的,但发布出去的链接需要登录才能访问,这时候你可以设置匿名用户的访问权限,这样匿名用户可以下载访问你提供的应用链接了,非常取巧的方法,如下图:
配置SSH
操作: Manage Jenkins -> Credentials -> Global credentials (unrestricted) -> Add Credentials
本机生成SSH:ssh-keygen -t rsa -C “Your email” , 生成过程中需设置密码,最终生成id_rsa和id_rsa.pub(公钥)本机添加秘钥到SSH:ssh-add 文件名(需输入管理密码)Gitlab上添加公钥:复制id_rsa.pub里面的公钥添加到GitlabJenkins上配置密钥到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生成的公钥。
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)Jenkins支持多种编译配置方式,包括:
Xcode: iOS编译配置(安装Xcode integration插件)Invoke Gradle script: Android编译配置(安装Gradle plugin插件)Exceute Shell: 脚本方式对于iOS应用的构建,如果选择Xcode方式构建,需要配置好开发者证书,具体参考后面签名和整数问题。 推荐使用Exceute Shell方式,简单有效。
Artifacts和邮件通知配置,参考下图
可借助Email Extension Plugin 插件进行详细配置,具体可参考此文
发布
FTP服务器, 最传统的方式,可助蒲公英或者fir.im(安装对应的Jenkins插件)。专业的Artifacts存储仓库, 比如Nexus, Artifactory等。对象存储服务:比如阿里云OSS,AWS S3等,以阿里云为例,具体请参考此文 在Jenkins持续集成方案中使用阿里云OSS作为Artifacts仓库ios的发布可能希望用到OTA,可参考此文
这里分享一个我写的shell脚本模板(已开源),可以用于iOS的plist文件自动创建以及OTA简单发布页面的自动创建,参考此链接获取源码, 欢迎Star.
自动生成一个简单HTML界面,如下图,点击Install即可安装:
注意,这里iOS7.1以后限定必须要要用https,所以需要对jenkins设置下https,参考下面”后记” 中的Jenkins Https设置
Last Show
构建成功后最终的结果如下如所示:
查询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" 1 1 使用: java -jar jenkins.war --httpPort=-1 --httpsPort=8080 --httpsKeyStore=/目录/keystore.jks --httpsKeyStorePassword=密码 1 1 注意: 第一次使用时需要将”WEB”证书导入,导入步骤为:Chrome导出证书 -> 安装证书 -> 设置证书”全部允许”, 图解步骤可参考下面实用参考中的第5篇文章.Certificate方式
生成: 1. openssl genrsa -out server.key 1024 2. openssl req -new -key server.key -out server.csr 3. openssl x509 -req -in server.csr -signkey server.key -out server.crt 123 123 使用: java -jar jenkins.war --httpsPort=8088 --httpsCertificate=/path/server.crt --httpsPrivateKey=/path/server.key 1 1 注意:①同上 ②iOS手机需要导入cer证书实用参考
Starting and Accessing Jenkins 官网说明Jenkins: Switch to SSL/ HTTPS mode 支持HTTPS的两种方式Installing and Configuring Jenkins KeyStore方式Generating a self-signed SSL certificate using the Java keytool command (2004193) KeyStore方式Setup Self-Signed Certificates & Trusting them on OS X Certificate方式免费openssl生成ssl证书 Certificate方式文章持续更新地址,请移步查阅
[原文地址点此](http://skyseraph.com/2016/07/18/Tools/Jenkins Gitlab持续集成打包平台搭建/)
