美文网首页iOS架构
IOS打包测试发布环境配置-附加篇

IOS打包测试发布环境配置-附加篇

作者: 天堂宝宝_V | 来源:发表于2017-04-15 18:57 被阅读62次
注:本附加篇紧接上一篇IOS打包测试发布环境配置-下篇,是对上一篇脚本文件的改进并添加了新的功能,主要是iOS自动定时打包功能的实现。
对于原有脚本的改进:在任意目录均可执行打包脚本。
Paste_Image.png
关于crontab

crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序
cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

  • /sbin/service crond start //启动服务
  • /sbin/service crond stop //关闭服务
  • /sbin/service crond restart //重启服务
  • service crond status //查看crontab服务状态:
  • service crond start //启动crontab服务:
crontab服务是否已设置为开机启动

# ntsysv
设置crond开机自动启动:
# chkconfig --level 35 crond on
MAC 下默认开启,不用配置。

管理cron计划任务

(a) 编辑计划任务:crontab -e [-u 用户名]
(b) 查看计划任务:crontab -l [-u 用户名]
(c) 删除计划任务:crontab -r [-u 用户名]

编辑添加定时任务

1 打开终端 输入 crontab -e 进入vim编辑器
2 输入i 进入编辑模式,复制粘贴如下命令,(你的脚本路径)
3 esc 退出编辑模式 输入:wq 保存退出
4 crontab -l 查看定时任务
5 crontab -r 删除定时任务


12 15 * * * sh /Users/marvis/Desktop/GitWorkSpace/AutoBuildConfigSet-Demo/AutoBuildConfigSet-Demo/fir_abs_Debug.sh
17 15 * * * sh /Users/marvis/Desktop/GitWorkSpace/AutoBuildConfigSet-Demo/AutoBuildConfigSet-Demo/fir_abs_Enterprise.sh  
18 15 * * * sh /Users/marvis/Desktop/GitWorkSpace/AutoBuildConfigSet-Demo/AutoBuildConfigSet-Demo/fir_abs_Release.sh
上面三行命令分别表示
  • 每天的 15:12分执行 fir_abs_Debug.sh 脚本
  • 每天的 15:17分执行 fir_abs_Enterprise.sh 脚本
  • 每天的 15:18分执行 fir_abs_Release.sh 脚本

编辑完成后就等待脚本的执行。


一般执行crontab -r 删除自动任务时你会收到一个邮件,这里面是具体执行脚本的编译提示

查看定时编译报错日志位置.png

具体要根据每个用户的用户名,确定位置;

Zhifei-de-MacBook-Pro:mail marvis$ crontab -r
You have mail in /var/mail/marvis

可能出现的问题如下截图
自动编译编译失败了.png
查阅了各种资料来回折腾,最后在这篇帖子找到了解决方案,原来是默认情况下钥匙串放在登录用户账户中的root账户下,普通的登录用户在终端环境下没有运行没有问题,但是在cron命令执行环境与终端不一致所以需要修改证书的位置。由登录用户改成系统用户即可。
还用一种方案是创建系统的cron任务 不过该方案我试验没有成功,具体原因没有找到。也可以启动root账户 移动证书位置.png 无法编辑crontab.png

此时需要在进入vim编辑器后首先输入shift+,保存退出后即可创建任务


如下几种错误


fir commond命令找不到.png ruby 环境确实报错.png gem 环境找不到.png

以上几种错误都是由于cron命令环境与终端环境不一致造成的
可以再脚本中添加PATH解决,
或者是使用ruby version manage 即rvm cron setup 终端命令在创建任务上面添加PATH路径解决
可以先查看一下ruby的位置

查看ruby bin 位置.png 编辑crontab.png crontab 命令.png
缺少readme报错.png

README: No such file or directory

那是因为你的脚本目录下没有README的文件,只需要建一个README的文件就行了,打开终端,cd到当前位置,然后执行下面的命令:

touch README

编译打包文件成功后,可以看到时间与我们任务定义的打包时间一致

系统自动定时打包的文件.png
未解决的问题

上传fir时一直报错,找不到bundle ,升级了ruby还是没有解决,看来cron还是有许多坑。如果哪位大神解决了,烦请贴出来,大家相互学习!


gem bundle 缺失报错.png

如果添加 &> /dev/null 到xcodebuild 命令后面,则xcodebuild 编译产生的信息豆浆杯扔进无底洞,不会输出到 /var/mail/marvis 文件中

清空编译垃圾输出信息.png 没有删除xcodebuild 编译信息的显示.png 删除xcodebuild编译过程中的垃圾文件.png
参考链接

Shell中获取脚本所在目录绝对路径的方法
关于RVM
Gem bundler is not installed, run gem install bundler first.
Where is ruby stored on mac?
Fix Rubygems binary error: undefined method `activate_bin_path' for Gem:Module (NoMethodError)
Getting Ruby scripts working with bundler, rvm and cron


我是一道华丽的分割线- 4.22更新


更新内容

  • 解决上传fir-im报错问题
  • 优化脚本添加配置参数,可在脚本后面添加执行参数
    参数:0 、1、2 分别代表编译Debug 、Enterprise、Release版本;
    也可直接使用参数:Debug 、Enterprise、Release

上传fir-im报错问题
报错内容
/Users/marvis/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/rubygems.rb:270:in `find_spec_for_exe': can't find gem fir-cli (>= 0.a) (Gem::GemNotFoundException)
    from /Users/marvis/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/rubygems.rb:298:in `activate_bin_path'
    from /usr/local/bin/fir:22:in `<main>'
    from /Users/marvis/.rvm/gems/ruby-2.4.1@global/bin/ruby_executable_hooks:15:in `eval'
    from /Users/marvis/.rvm/gems/ruby-2.4.1@global/bin/ruby_executable_hooks:15:in `<main>'

解决方案

1 将.gemrc重命名为.gemrc_backup(我也不知道为什么!)

2 将gem镜像换成ruby-china 确保只有 gems.ruby-china.org
之前来回折腾,换了淘宝源,还是不行

3 重新安装fri-cli。 后面发现pod命令也出错了,然后cocoapod也重新安装了

具体操作命令顺序如下
$ mv ~/.gemrc ~/.gemrc_backup

$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
$ gem sources -l https://gems.ruby-china.org

$sudo gem install fir-cli
$sudo gem install cocoapods


优化脚本添加配置参数
修改脚本内容
然后重新设计打包的脚本

source ~/.profile

###############设置需编译的项目配置名称
buildConfig=$1

case $buildConfig in

0)
    echo "当前编译模式为 Debug"
    buildConfig=Debug;;
Debug)
    echo "当前编译模式为 Debug";;

1)
    echo "当前编译模式为 Enterprise"
    buildConfig=Enterprise;;
Enterprise)
    echo "当前编译模式为 Enterprise";;

2)
    echo "当前编译模式为 Release"
    buildConfig=Release;;
Release)
    echo "当前编译模式为 Release";;

*)
    echo "编译模式报错"
    echo "编译模式必须为Debug 0,Enterprise 1,Release 2中的一种"
    exit
    ;;
esac
#编译的方式有,Debug,Release,自定义的 DebugOn,DebugOnlineArch,Enterprise等
重新编译配置crontab任务
#sm start rvm
PATH="/Users/marvis/.rvm/gems/ruby-2.4.1/bin:/Users/marvis/.rvm/gems/ruby-2.4.1@global/bin:/Users/marvis/.rvm/rubies/ruby-2.4.1/bin:/Users/marvis/.rvm/gems/ruby-2.4.1/bin:/Users/marvis/.rvm/gems/ruby-2.4.1@global/bin:/Users/marvis/.rvm/rubies/ruby-2.4.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/marvis/oracleclient_12_1:/usr/local/mysql/bin:/Users/marvis/Library/Android/sdk/platform-tools:/Users/marvis/.rvm/bin"
GEM_HOME='/Users/marvis/.rvm/gems/ruby-2.4.1'
GEM_PATH='/Users/marvis/.rvm/gems/ruby-2.4.1:/Users/marvis/.rvm/gems/ruby-2.4.1@global'
MY_RUBY_HOME='/Users/marvis/.rvm/rubies/ruby-2.4.1'
IRBRC='/Users/marvis/.rvm/rubies/ruby-2.4.1/.irbrc'
RUBY_VERSION='ruby-2.4.1'
#sm end rvm

23 9 * * * sh /Users/marvis/Desktop/GitWorkSpace/AutoBuildConfigSet-Demo/AutoBuildConfigSet-Demo/fir_abs_Debug.sh 0 

24 9 * * * sh /Users/marvis/Desktop/GitWorkSpace/AutoBuildConfigSet-Demo/AutoBuildConfigSet-Demo/fir_abs_Debug.sh 1 

25 9 * * * sh /Users/marvis/Desktop/GitWorkSpace/AutoBuildConfigSet-Demo/AutoBuildConfigSet-Demo/fir_abs_Debug.sh 2 

执行情况截图
自动打包的本地文件.png 自动打包Debug上传成功.png 自动打包Enterprise版本上传成功.png 自动打包Release版本上传成功.png 注意事项.png
相关链接

fir-cli 安装
ruby-china

相关文章

网友评论

    本文标题:IOS打包测试发布环境配置-附加篇

    本文链接:https://www.haomeiwen.com/subject/drugattx.html