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

由于cddn对markdown 语法支持比较栏,因此建议到简书上浏览,
IOS打包测试发布环境配置-附加篇

注:本附加篇紧接上一篇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](http://upload-images.jianshu.io/upload_images/4919697-bb94b0180c42ab1c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
具体要根据每个用户的用户名,确定位置;

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

___
#####可能出现的问题如下截图


![自动编译编译失败了.png](http://upload-images.jianshu.io/upload_images/4919697-af903990e08117e7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
查阅了各种资料来回折腾,最后在[这篇帖子](https://github.com/appium/appium/issues/7254)找到了解决方案,原来是默认情况下钥匙串放在登录用户账户中的root账户下,普通的登录用户在终端环境下没有运行没有问题,但是在cron命令执行环境与终端不一致所以需要修改证书的位置。由登录用户改成系统用户即可。
还用一种方案是[创建系统的cron任务](https://askubuntu.com/questions/173924/how-to-run-a-cron-job-using-the-sudo-command) 不过该方案我试验没有成功,具体原因没有找到。也可以启动[root账户](https://support.apple.com/zh-cn/HT204012)

![移动证书位置.png](http://upload-images.jianshu.io/upload_images/4919697-94416456604d2f98.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![无法编辑crontab.png](http://upload-images.jianshu.io/upload_images/4919697-3c5f5dc1b6909513.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
此时需要在进入vim编辑器后首先输入shift+,保存退出后即可创建任务
___
如下几种错误
![fir commond命令找不到.png](http://upload-images.jianshu.io/upload_images/4919697-f9465a7847cb85ba.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![ruby 环境确实报错.png](http://upload-images.jianshu.io/upload_images/4919697-523a08006d25224f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![gem 环境找不到.png](http://upload-images.jianshu.io/upload_images/4919697-ec991a9f76b06e47.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

![查看ruby bin 位置.png](http://upload-images.jianshu.io/upload_images/4919697-dbaf22f1549b90fd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![编辑crontab.png](http://upload-images.jianshu.io/upload_images/4919697-77afe0c2a67cfeac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![crontab 命令.png](http://upload-images.jianshu.io/upload_images/4919697-caad72aa04cdfc80.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

___

![缺少readme报错.png](http://upload-images.jianshu.io/upload_images/4919697-bc50f48ee026456d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
README: No such file or directory

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

touch README

___

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

![系统自动定时打包的文件.png](http://upload-images.jianshu.io/upload_images/4919697-784990c28fd22a6d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

___
#####未解决的问题
上传fir时一直报错,找不到bundle ,升级了ruby还是没有解决,看来cron还是有许多坑。如果哪位大神解决了,烦请贴出来,大家相互学习!
![gem bundle 缺失报错.png](http://upload-images.jianshu.io/upload_images/4919697-c9744a7d9aac9e18.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
___
如果添加 &> /dev/null 到xcodebuild 命令后面,则xcodebuild 编译产生的信息豆浆杯扔进无底洞,不会输出到 /var/mail/marvis 文件中

![清空编译垃圾输出信息.png](http://upload-images.jianshu.io/upload_images/4919697-816d595e512c497a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



![没有删除xcodebuild 编译信息的显示.png](http://upload-images.jianshu.io/upload_images/4919697-ea1f47e0eda6387a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


![删除xcodebuild编译过程中的垃圾文件.png](http://upload-images.jianshu.io/upload_images/4919697-6f99bb8f67d2a515.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#####参考链接
[Shell中获取脚本所在目录绝对路径的方法](http://www.jb51.net/article/60289.htm)
[关于RVM](https://ruby-china.org/wiki/rvm-guide)
[Gem bundler is not installed, run `gem install bundler` first.](https://github.com/rvm/rvm/issues/1860)
[Where is ruby stored on mac?](http://stackoverflow.com/questions/25313033/where-is-ruby-stored-on-mac)
[Fix Rubygems binary error: undefined method `activate_bin_path' for Gem:Module (NoMethodError)](
https://makandracards.com/makandra/43353-fix-rubygems-binary-error-undefined-method-activate_bin_path-for-gem-module-nomethoderror)
[Getting Ruby scripts working with bundler, rvm and cron](https://coderwall.com/p/vhv8aw/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 `’

___
######解决方案
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值