iOS自动打包脚本优化

随着业务的发展,原本轻量级的APP已经变成了超级APP,业务分支较多,逻辑较复杂,大量的开发人员加入到这个超级APP的开发过程中来,这时候需要划分业务模块、分配开发任务,落地到每个程序员的手头上。
目前使用cocoapods管理项目,原本的打包脚本是像下面这样设计的:
IPA.sh

  1. 从远端更新本地.cocoapods/repos 目录下组件库
  2. xcodebuild编译生成IPA包
  3. 上传IPA到服务器

可以看出IPA.sh这个脚本内部结构相当的复杂,得有几百行的脚本。。。所以我对IPA.sh做了拆分,将上面的三块业务分别使用单独的sh脚本来处理
repo_update.sh
ipa.sh
ipa_upload.sh
那么问题就来了,sh之间如何相互调用呢?看了shell的文档,找到了以下几种方式:

CommandExplanation
fork新开一个子Shell执行,子Shell可以从父Shell继承环境变量,但子Shell中的环境变量不会带回给父Shell
exec在同一个Shell内执行,但是父脚本中exec行之后的内容就不会再执行了
source在同一个Shell中执行,在被调用的脚本中声明的变量和环境变量,都可以在主脚本中进行获取和使用,相当于合并两个脚本在执行

repo_update.sh

#!/bin/sh

#  repo_update.sh
#  
#
#  Created by duwen on 2020/4/10.
#  
echo "执行中的PID = $$"
echo "进来啦"

ipa.sh调用其他sh方法

#!/bin/sh

#  ipa.sh
#  
#
#  Created by duwen on 2020/4/10.
#  

echo "当前的PID = $$"
REPO_UPDATE_SH="$(pwd)/repo_update.sh"
chmod +x ${REPO_UPDATE_SH}

case $1 in
        --exec)
                echo "当前选择的是exec模式\n"
                exec ${REPO_UPDATE_SH} ;;
        --source)
                echo "当前选择的是source模式\n"
                source ${REPO_UPDATE_SH} ;;
        *)
                echo "当前选择的是默认fork模式\n"
                ./repo_update.sh ;;
esac
 
echo "执行之后的PID = $$"

验证

fork

Mac-mini-3:xcode peter$ sh ipa.sh
当前的PID = 8363
当前选择的是默认fork模式

执行中的PID = 8366
进来啦
执行之后的PID = 8363

exec

Mac-mini-3:xcode peter$ sh ipa.sh --exec
当前的PID = 8374
当前选择的是exec模式

执行中的PID = 8374
进来啦

source

Mac-mini-3:xcode peter$ sh ipa.sh --source
当前的PID = 8377
当前选择的是source模式

执行中的PID = 8377
进来啦
执行之后的PID = 8377

至此,实现了sh之间的相互调用
shell脚本持续更新中…
https://github.com/DuWen/Shell

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值