Jenkins + fastLane iOS自动化打包

公司开始让使用自动打包,一方面使用xcode打包太浪费时间,还要时刻关注打包的进度进行上传发布等等。搞了两天终于完成了打包。下面我写一个教程,防止大家踩坑。

一. 安装Jenkins##

  1. 使用brew安装Jenkins
    $ brew install Jenkins
    此处我是碰到一个坑,brew报错: depth 0: certificate has expired (10)
    解决办法:
    (1).查看当前镜像环境 $ gem sources -l
    (2).移除淘宝镜像: $ gem sources --remove https://rubygems.org/
    (3).添加ruby-chian镜像:$ gem sources --add [https://gems.ruby-china.com/] (https://gems.ruby-china.com/)
  1. 运行Jenkins
    $ jenkins
  1. 配置Jenkins
    在浏览器输入 http://localhost:8080/ 就能看到Jenkins运行起来了
    刚开始Jenkins会让输入一个密码我们cd到红色字体的路径下面打开文件就能看到密码了
    image.png

    然后复制密码填进去就可以进入到下面这个界面了,接下来安装一些建议的插件,我们点击左边的按钮,等待把所有的插件都安装好(ps: 如果有的没有安装成功,强烈建议点击右下角的重试,直到把建议安装的都装好)
    image.png

    下面是安装界面
    image.png

    等待进度条走完之后,页面会自动跳转(如果没有跳转手动刷新下界面就行了)
    然后进入设置管理员账号密码的界面
    image.png

二. 配置 Jenkins##

  1. 安装插件
    Keychains and Provisioning Profiles Management(管理本地的keychain和iOS证书的插件)
    点击管理Jenkins -> 管理插件
    image.png

    在可选插件中搜索 Keychains and Provisioning Profiles Management 勾选安装(ps: 因为我已经安装过了,所以我的在已安装一栏中)
image.png
  1. 配置Keychains and Provisioning Profiles Management

在Manage Jenkins 中点击 Keychains and Provisioning Profiles Management


image.png

点击:选取文件->Upload->保存
依次将Jenkins所在的机器的login.keychain(/Users/管理员用户名/Library/keychains/login.keychain-db 复制一份改名成成login.keychain)上传保存
选择上传Profiles 文件


image.png

文件路径

/Users/apple/Library/MobileDevice/Provisioning Profiles/
这个一定要选对,如果选择错误,在打包的时候就会报签名有问题如果实在不知道是哪一个,可以先全都删除


image.png

然后在Xcode里面重新下载


image.png

image.png

选择你的配置文件
然后文件夹下面那个你添加的配置文件就是你需要选择的
选择完成后 保存就行了


image.png

三. 配置构建项目##

1.点击新建Item


image.png

2.然后点击第一个,创建一个自定义的项目,接下来就是配置Jenkins了

image.png

(1)接下来看自己需求,是否保留旧的构建、保持构建的天数和保持构建的最大个数(可以按自己的需要去选择填写)
image.png

(2)配置源码管理
SSH 验证方式: 因为我们公司是企业github所以用https 账号密码登录会报错,我这里选择使用SSH验证
复制项目链接(SSH链接)到 Repository URL
image.png

在 Credentials 点击添加,选择 SSH Username with private key
在红色框里添加你的SSH私钥(是私钥,不是公钥),因为公钥你是添加到github上了,只有私钥才有权限访问你的github
image.png

用户名密码方式
复制项目链接(HTTS链接)到 Repository URL
在 Credentials 点击添加,选择 Username with password
然后填写你的github的用户名和密码,点击添加就可以了
image.png

在指定分支填写你的分支名(这个我设置了,但是打包的时候还是会根据当前分支去打,可能是用fastlane执行打包命令的原因)填写源码库浏览器和项目URL
image.png

(3)构建触发器 也就是自动打包时间间隔
我这里选择的 Poll SCM 然后在日程表中添加时间间隔
我这里填写的是H 20 * * 这个意思就是H小时然后,后面跟着数字,在后面就是日月年,代表的我认为是每次都触发,也就是每天每月每年,但是Jenkins的时间不是绝对的,一般都是在随机在半点,也就是设置20点,大概会在20:30分左右会触发,如果需要两个时间,那么格式可以这样H 20,22 * * *
这里参考(作者:Alanxx)
image.png

(4)构建环境
选择 Keychains and Code Signing Identities
下面自动填充了,不用管
image.png

然后选择 Mobile Provisoning Profiles 红色框里选择刚才在配置 Keychains and Provisioning Profiles Management 中添加的配置文件
image.png

(5)构建
然后配置timeout minutes(构建超时时间)这个一定要写大一些,我原先是默认的3分钟,一直提示超时,打包比较慢的话配置的时间短会报超时
image.png

这些都完成之后我们就要写构建脚本了,我们选择 Execute shell 脚本
image.png

暂时保存接下来我们配置 fastlane

四. 安装配置fastlane##

确认是否安装ruby,版本号要大于2.0。如未安装,移步百度
$ ruby -v

确认是否安装Xcode命令行工具
$ xcode-select --install

如出现xcode-select: error: command line tools are already installed, use "Software Update" to install updates则已安装,否则会出现提示框,点击安装即可。

安装fastlane
sudo gem install fastlane

cd 进入工程根目录 ,执行命令
$ fastlane init

会出现四个选项供你选择

1.自动截屏。这个功能能帮我们自动截取APP中的截图,并添加手机边框(如果需要的话)
2.自动发布beta版本用于TestFlight
3.自动发布到AppStore
4.手动管理设置


image.png

我们选择4

全部完成后我们打开生成的fastlane文件夹下的Fastfile

填写打包脚本


platform :ios do
  desc "Description of what the lane does"

  before_all do
    # faselane中pod install的操作
    # cocoapods
  end
#-----------------------------------------------------------------------DEV配置
  lane :development_build do|options|
    currentTime = Time.new.strftime("%Y-%m-%d %H: %m: %S")
    gym(
     scheme:"app",
     configuration: "Release", #Release 或者 debug
     clean:true, #清除上次构建
     project:"app.xcodeproj", # 项目入口文件名 如果是工作控件请换成:workspace: "xxx. workspace"
     export_method:"development",  #打包的类型 ad-hoc 或者App Store等
     output_directory:"/Users/apple/Desktop/Dev_GuildChat#{currentTime}", #打包输出路径 我写的是时间,防止文件夹生成相同报错
     output_name:"Dev_GuildChat" #生成的ipa文件名
    )
    firim(firim_api_token: "9b02ebfcfc17ded9410d046472c76d04")  # token 在fir 上查看。  end

end

end

添加插件
我们是用fir上传,需要添加fir插件
gem 'fastlane-plugin-firim'
然后配置就算完成了

五. 配置Jenkins 脚本##

打开刚才的Jenkins配置页面
解释下下面的命令的意思
cd 到ios项目的根目录
然后执行fastlane 命令
development_build和fastfire文件中的 lane :development_build 名字要保持相同
然后保存


image.png

然后执行点击build now,等待执行结果


image.png

执行成功了之后会有下面的日志输出,然后就去导出文件夹和fir上查看结果吧


image.png

你可能感兴趣的:(Jenkins + fastLane iOS自动化打包)