iOS 模块组件化的自动化实现

作者: 敲代码的树懒 | 来源:发表于2017-04-05 17:23 被阅读1339次
上一篇文章,介绍了怎么开发一个私有的模块供他人使用,这一篇讲一下怎么自动化的实现一个模块的更新。
先来看一下,手动更新一个模块都需要做哪些工作。
  • pod install 然后修改代码
  • 修改podspec,升级版本号
  • git add .
  • git commit -m 'xx'
  • git push origin
  • git tag -a xx -m 'xxx'
  • git push --tags
  • pod repo push XXXSpecs XXX.spec 对spec文件进行验证&提交
有没有可能,一行代码就实现上面所有的步奏呢,答案是可以的,我们可以通过fastlane,创建一个自动化的ruby的脚本来实现上面的步奏。下面的一篇简单的介绍
http://icyleaf.com/2016/07/fastlane-in-action/?utm_source=tuicool&utm_medium=referral
1,首先,安装fastlane
 brew update
 brew install ruby 要求ruby版本最新
 sudo gem install fastlane 
安装成功后,可以通过在终端输入fastlane查看相关信息
图片.png
2,cd 进入项目的根目录
 fastlane init
3,进入fastlane文件夹,编写Fastfie
进入这里,可以查看官方已经编写好的action。https://docs.fastlane.tools/actions/Actions/
图片.png
 # 定义很多个航道
 # 一个航道: 快速的升级维护pod私有库
 # 描述航道是做什么用的
   desc "快速的升级维护pod私有库"
   lane :ManagerPodLib do |options|
   targetName = options[:targetName]
   tagName = options[:tagName]
# 这里面, 只能写已有action
# 1. pod install
# 这里的路径, 统统是相对于根路径
cocoapods(
 clean: true,
 podfile: "./Example/Podfile"
)

# 2. podspec升级版本号
version_bump_podspec(path: "#{targetName}.podspec", version_number: tagName)

 # 3. 提交代码到远程代码仓库
 #   1. git add .
git_add(path: ".")
 #   2. git commit -m ‘xx’
git_commit(path: ".", message: "升级版本")
#   3. git push origin master
push_to_git_remote
 # 判断标签是否已经存在
 # 如果存在, 删除 不存 (自定义)

 # 4. 打标签提交
 #   1. git tag 0.2.0
 add_git_tag(
  tag: tagName
  )
#   2. git push —tags
push_git_tags

# 5. 提交podspecs
# pod repo push XMGFMSpecs XMGFMBase.podspec
pod_push(path: "#{targetName}.podspec", repo: "SKFFMPrivate")
end
repo 就是你的定义的私有Spec名称。
编写好上面的fastlane以后,试着修改一下代码
然后cd 进入根目录,
  fastlane ManagerPodLib targetName:SKFDownLoadLib tagName:0.2.0
targetName 后面是代码库的名字,tagName是要升级的版本号。
图片.png 图片.png
一行代码就实现了自动化的更新模块
使用中,有任何问题,欢迎留言。

相关文章

网友评论

  • 邦Ben:如果只是为了执行这些git操作,都没必要用 fastlane,直接shell脚本,就可以了吧
    邦Ben:@敲代码的树懒 pod install 然后修改代码
    修改podspec,升级版本号
    git add .
    git commit -m 'xx'
    git push origin
    git tag -a xx -m 'xxx'
    git push --tags
    pod repo push XXXSpecs XXX.spec 对


    这些都是 cli命令,就直接放到 .sh 逐条执行就行了啊,有什么需要特殊处理的,就根据shell的基本语法,去写一点读取输入变量之类的操作就可以了...
    敲代码的树懒:@邦Ben shell脚本怎么做呢,求大神分享攻略
  • 哈哈大笑呼呼呼呼:不错哦 必须mark

本文标题:iOS 模块组件化的自动化实现

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