(Mac)iOS自动化打包(Jenkins+xcodebuild+fir)

环境

| 名称 | 版本 |
| — | — | — |
| macOS | 10.14.4 (18E226) |
| Xcode | Version 10.2.1 |
| ruby | 2.6.3 |
| fir-cli | 1.7.1 |

下载安装Jenkins

  • Jenkins是基于Java环境的,所以电脑上必须先安装Java,Jenkins官网(https://jenkins.io
  • 下载安装Jenkins。具体安装过程可参考 Mac Jenkins搭建
  • 安装完成后会自动打开http://localhost:8080这个网址,如果没有自动打开可以手动打开。有些教程还有添加Xcode integrationKeychains and Provisioning Profiles Plugin之类插件的步骤,我们不需要。因为我们是用xcode脚本构建,所以不需要安装任何插件。

新建任务

构建一个自由风格的软件项目

点击左侧菜单中的新建任务,然后在新的界面输入项目名字,选择构建一个自由风格的软件项目选项完成创建

填写工程相关介绍

-w960

源码管理

  源码管理,使用github选择git
  -w949

构建触发器

  • 选择Build periodically,输入:
    1
    H 2 * * *
    周期性的执行编译任务,强制每天凌晨两点构建一次
  • 选择Poll SCM,输入

    1
    H/5 * * * *

    表示的就是每5分钟检查一次源码变化。

    第一个参数代表的是分钟 minute,取值 0~59;
    第二个参数代表的是小时 hour,取值 0~23;
    第三个参数代表的是天 day,取值 1~31;
    第四个参数代表的是月 month,取值 1~12;
    最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
    

构建环境

  通过xcodebuild脚本的方式构建,这里不用做任何设置。

构建

重点来了。
点击“添加构建步骤”,选择Execute shell。
-w951

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh +x
xcodebuild clean -workspace /Users/vic/.jenkins/workspace/jike-iOS/Ruguo.xcworkspace \
-scheme Ruguo \

xcodebuild archive -workspace /Users/vic/.jenkins/workspace/jike-iOS/Ruguo.xcworkspace \
-scheme Ruguo \
-archivePath "$WORKSPACE/Ruguo.xcarchive" \
-configuration Debug \

xcodebuild -exportArchive -archivePath "$WORKSPACE/Ruguo.xcarchive" \
-exportPath "$WORKSPACE/Export/Ruguo" \
-exportOptionsPlist "$WORKSPACE/ExportOptions.plist" \
-configuration Debug \



export PATH=/usr/local/bin:$PATH

fir publish /Users/vic/.jenkins/workspace/jike-iOS/Export/Ruguo/Ruguo.ipa -T 4554bab16fc50b5b8ee20d9663fa64c7 --password=jikebeta

说明:
-archivePath:.xcarchive文件的存放路径。
-exportPath:导出文件的路径。Export文件夹是自己建的。
-ExportOptions.plist:这个文件的内容其实是ipa的打包信息。手动archive并export时,这个文件就包含在最终输出的文件夹内,可以copy一份出来使用。
-configuration :默认Debug或Release。
这里有个坑要说明一下。archive和ipa文件的导出目录最好位于Jenkins用户下的那个工程中,我之前选择的是导出到当前用户的桌面,结果一直报读写权限的问题。

上传到fir

要实现自动上传到fir,要先安装fir-cli
fir-cli由ruby实现,所以先安装ruby

  • 安装ruby,ruby官网安装文档(我使用了brew安装)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #直接在终端执行,未安装brew,先安装brew

    #安装最新的2.6.3
    brew install ruby

    #安装完根据提示执行
    echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

    #退出终端查看ruby版本
    ruby -v

    #检查安装路径
    which -a ruby
  • 安装fir-cli。要实现自动上传到fir,要先安装fir-cli。Github: fir-cli

    1
    gem install -n /usr/local/bin fir-cli 
  • fir token查看方法:
    -w459

  • 脚本

    1
    fir publish /Users/vic/.jenkins/workspace/jike-iOS/Export/Ruguo/Ruguo.ipa -T 4554bab16fc50b5b8ee20d9663fa64c7 --password=jikebeta