iOS 开发iOS调试技巧iOS开发成长之路

iOS 持续集成与持续分发(jenkins+fastlane+p

2017-09-05  本文已影响340人  Lxyang

摘要

手动打包、手动上传是一件非常烦琐的事件,通常会浪费开发者大量的时间,这时候自动打包与分发就起到的重要的角色。本文主要分为4个部分


一、mac环境下jenkins的安装与配置

1.1 手动下载安装
1.2 通过终端安装
1.3 启动jenkins与配置

1.34 jenkins钥匙串插件,访问地址与端口号更改等

1.4 jenkins插件安装

上面我们选择推荐安装,对于ios开发,其实大部分已经默认安装,这里我们以keychain为例安装一个(后续fastlane用到match匹配同步开发证书时,会访问钥匙串)

1.5 jenkins任务创建与任务配置

建议把jenkins页面右上角的允许自动刷新打开


二、fastlane安装与配置

fastlane是一个完全开源的项目,包含一组 Ruby 实现的工具集,能完成 iOS 和 Android 工程 的自动化构建\测试和发布,用来执行某一特定的任务,可以通过配置文件将不同的工具灵活的结合在一起,从而形成一个完整的自动化流程,实现一键上传 ITC,从而缩短用于构建发布的时间,其主要工具集如下:

查看所有的工具集:fastlane actions
单独查看某一个action的功能: fastlane action [action_name]

2.1 fastlane的安装
xcode-select --install // 若未安装则会自动安装,若已经安装,则提示:xcode-select: error: command line tools are already installed, use "Software Update" to install updates
sudo gem install -n /usr/local/bin fastlane
fastlane --version
2.2 为项目配置的fastlane
cd 工程目录
fastlane init 

上述过程中,会要求你填写开发者帐号密码等信息。完成后,会在你的工程目录在创建一个fastlane文件夹

项目工程中,Edit Scheme打开的页面,Shared前的勾选框,应该打上勾。不然jenkins打包过程中,可能报错。
接下来主要讲述Fastfile文件配置

2.3 fastfile文件编写

下面用到的工具match、gym、deliver、gpyer等,均可以通过:fastlane 工具名 --help查看里面的参数如何写等

desc "添加新设备UUID"
desc "This will also make sure the profile is up to date"
lane :registerDev do
    register_device(
      name: "名字",
      udid: "227a4********1349e27***c211e**69")
end
--------------这样,在匹配证书时,就要用到:force_for_new_devices属性---------------
desc "匹配生成证书"
desc "This will also make sure the profile is up to date"
lane :matchAppstore do
    match(type: "appstore",keychain_password: ENV['PASSWORD'],force_for_new_devices:true) # 匹配开发证书
end
desc "打包测试"
  lane :dev do
    match(git_url:"https://git.oschina.net/yang***/cer.git",type: "development",keychain_password:"123",app_identifier:"cn.com.**") # 匹配开发证书
   
     # 打包,具体参数可fastlane gym -h查看
     gym(clean: true,scheme:"GC",configuration:"Debug",output_name:"GC_Test",export_method:"development")
  
    # 上传到薄公英,可以去薄公英官网查看插件安装方法
     pgyer(api_key: "6ef35de7a3c4c60***dd48825eac3a", user_key: "ce1e4c***c27232fcde878db3",password: "a**23", install_type: "2")
    # 发布
     # deliver(force: true,skip_screenshots:true,skip_metadata: true)    # 不上传截屏文件和元数据。
  end

上面有用到上传蒲公英,接下来第三部分讲述pgyer的用法。


三、pgyer插件安装与配置

pgyer安装与使用官方文档:使用 Fastlane 上传 App 到蒲公英
在工程目录在,用终端键入:

fastlane add_plugin pgyer
lane :uploadPgyer do
  pgyer(api_key: "7f15xxxxxxxxxxxxxxxxxx141", user_key: "4a5bcxxxxxxxxxxxxxxx3a9e", password: "123456", install_type: "2")
end

四、xcode打包原理

xcode打包,用的就是xcodebuild命令完成的。可以通过man xcodebuild命令查看文档
此部分参考了两位同事的文章:xcodebuild自动打包,发布应用xcodebuild 自动化构建

xcodebuild archive -workspace 项目名称.xcworkspace 
                       -scheme 项目名称 
                       -configuration 构建配置 
                       -archivePath archive包存储路径 
                       CODE_SIGN_IDENTITY=证书 
                       PROVISIONING_PROFILE=描述文件UUID
/Users/用户名/Library/MobileDevice/Provisioning Profiles 
找到对应的provisioning Profiles
如果文件较多,可在命令终端输入
security cms -D -i xxxx.mobileprovision // 解析描述文件,可以得到里面所有的信息(TeamId,ProvisionedDevices,TeamName,UUID,Version,AppIDName等等)。以确定哪一个是此项目所用到的

注意要 在CODE_SIGN_IDENTITY,PROVISIONING_PROFILE赋值时要加""号

xcodebuild -exportArchive -archivePath archive文件的地址.xcarchive 
                          -exportPath 导出的文件夹地址 
                          -exportOptionsPlist exprotOptionsPlist.plist 
                          CODE_SIGN_IDENTITY=证书 
                          PROVISIONING_PROFILE=描述文件UUID
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool

命令设置别名:

在~/.bash_profile 中设置别名
alias altool='/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool'

设置别名后在终端
输入 source ~/.bash_profile 以使其生效。
再输入 altool  就会有它的一些用法提示,否则就是设置别名失败了

同理,别的工具也可以用此方法实现别名处理,以快速在终端打开工具。

altool 用法:

验证 ipa
altool --validate-app -f file -u username [-p password] [--output- format xml]
上传 ipa
altool --upload-app -f file -u username [-p password] [--output- format xml]

具体参数说明:
--validate-app
您要验证的应用程序。
--upload-app
您要上传的应用程序。
-f file
您正在验证或上传的应用程序的路径和文件名。
-u username
您的用户名。
-p password
您的用户密码。
--output-format [xml | normal]
您要 Application Loader 以结构化的 XML 格式还是非结构化的文本格式返回输出信息。Application Loader 默认以文本格式返回输出信息。

altool官方文档

上一篇下一篇

猜你喜欢

热点阅读