最近初次尝试Jenkins自动化打包,网上的教学流程博客也很多,虽然流程基本一致,但是遇到的问题却不尽相同。
现在把自己的配置过程及配置中遇到的部分问题记录下来,方便和大家交流。
配置流程
1、安装Java环境和Jenkins;
2、配置Jenkins及所需插件;
3、创建job,配置Git和Xcode;
4、构建job,上传fir;
1、安装Java环境和Jenkins;
首先,因为Jenkins依赖于java环境,因此在安装Jenkins之前,需要先安装jdk。
安装的方式有两种可以参考:
Jenkins下载地址:https://jenkins.io/index.html
进入官网后,选择对应操作系统的安装包,下载安装,一路next下去即可。
Jenkins安装完成后,会自动跳转到http://localhost:8080/下,
这里默认的端口号是8080,当然也可以自己修改,修改的命令为:jenkins –httpPort=8888
进入Jenkins之前,需要输入初始密码,按照下面提示的地址复制粘贴密码
- 使用homebrew安装
使用homebrew安装,首先要确保你的电脑已经安装了homebrew
安装Jenkins的命令:
brew install jenkins来下载最新的 jenkins安装包
或者使用
brew install jenkins-lts来下载稳定版的jenkins安装包
而在使用homebrew安装jdk时,需要注意的是,目前jenkins的每周更新版本或最新版本,需要JDK8的支持,
因此在安装的时候最好能指定下JDK 的版本,否则安装成最新的JDK10版本会不支持Jenkins。还要卸载重装,很是麻烦。
安装jdk8的命令:
brew cask install java8
安装完成后,通过jenkins init启动,并打开http://localhost:8080/进入页面。
2、配置Jenkins及所需插件
2.1系统配置
进入页面,左侧系统管理-系统设置-配置GitLab
如果,页面提示 API Token for Gitlab access required的错误,点击Add,进入页面创建并添加Gitlab API Token
Gitlab API Token的获取,可以在
2.2插件下载
回到首页,系统管理-插件管理-可选插件
分别搜索gitlab和xcode,安装所需的插件。
但是往往有时候会安装失败,解决的方法也有两种,要么不断重试,要么手动下载插件。
下面,我们再来看看怎么手动下载插件:
(1)网上找的一个下载插件的地址:https://updates.jenkins-ci.org/download/plugins/
在其中搜索所需要的插件,并下载到本地
(2)点击可选插件的右侧的高级
在这里手动下载并上传插件,效果也和从可选插件中下载是一样的。
3、创建job,配置Git和Xcode
3.1创建job
点击新建任务-输入任务名称-确定
3.2配置Git
进入配置页面后,选择源码管理的Git选项
连接gitlab也有两种方式:
(1)用户名密码的连接;
(2)SSH连接;
(1)用户名密码的连接
Repository URL中填写gitlab中的https地址
点击Add添加用户名密码的凭据
添加成功后,选中
(2)SSH连接
在开始配置之前,我们需要先进行ssh证书配置
打开终端,输入
ssh-keygen -t rsa -C “xxxxx” (xxxx为你的账号)
如果将密钥文件存放在默认路径的话,建议一路回车,不要设置密钥的密码。我之前设置了密码,后来在构建的时候,就总是提示:
一路回车后,就会生成两个文件
公钥:id_rsa.pub
私钥:id_rsa
将公钥里的内容copy到gitlab中
私钥用在创建凭据时
创建完成之后,在Repository URL填写项目的SSH类型的url
选中刚刚创建的SSH类型的凭据
3.3 配置Xcode
构建-增加构建步骤-Xcode
到此,基本就可以成功构建了
4、构建job,上传fir;
构建之后,项目的.ipa文件就会存放在${WORKSPACE}/build/Release-iphoneos目录文件下。
如果需要上传fir或者蒲公英,首先需要安装fir命令行工具,安装方法如下:
$ ruby -v # > 1.9.3
$ gem install fir-cli
然后继续增加构建步骤-执行shell
添加命令行:
fir publish ${WORKSPACE}/build/Release-iphoneos/*.ipa -T **********
其中,-T后面的********是fir的API Token,点击fir的右上角头像就可以看到API Token的选项,复制黏贴就可以了。
到此基本上,自动打包并上传fir的功能就实现了。