组件21:自动化-自定义action

自定义action主要是编写Fastfile。
编写好的Fastfile可以放在多个组件中使用。

原因:有些action, 并没有人提供; 那么我们可以自己自定来满足我们的需求

示例:在制作私有库的过程中, 如果上一个标签已经存在, 再次创建则会报错;

解决方案: 先判断标签是否存在, 如果存在, 则删除标签(本地/远程)。

自动化流程:

  1. 安装pod库
    cocoapods
  2. 提交代码到远程代码仓库
    git_addgit_commitpush_to_git_remote
  3. 如果标签存在, 则删除本地/远程标签(重要步骤)
  4. 打标签, 并提交
    add_git_tagpush_git_tags
  5. 对spec文件进行验证&提交
    pod_lib_lintpod_push

自定义action及使用

  1. cd进入本地库根目录
  2. fastlane new_action定义新的航道action
  3. 输入remove_tag,会生成actions文件夹和remove_tag.rb,即action对应的ruby文件。
  4. 打开remove.rb编辑,如果不会可在这里找:https://github.com/fastlane/fastlane/tree/master/fastlane/lib/fastlane/actions,比如在这个页面找git_add。
  5. 进入根目录,验证定义的action,fastlane action remove_tag,成功后会列出该action的相关信息。
    组件21:自动化-自定义action_第1张图片
    罗列action信息.png
  6. 完善fastlane,把刚才自定义的action用上去。


    组件21:自动化-自定义action_第2张图片
    Ruby判断句使用自定义action
  7. 执行航道,fastlane ManagerLib tag:0.1.0 target:LFRemotePlayer,报了错找不到tag。是Ruby文件中前后的参数写的不一致导致的。
    组件21:自动化-自定义action_第3张图片
    前后参数要一样.png
  8. 查看远程是否存在提交的文件,pod搜索。
  9. 宿主工程使用。

遇到的坑

1.当你想查看某个action的描述的时候,如果是在本地私有库的根目录下,则查不到,需退出到该根目录, cd .. 。
2.验证action遇到的错:


组件21:自动化-自定义action_第4张图片
Snip20170712_139.png

3.Ruby文件中前后参数不一致,导致找不到参数错误。
4.封装的sqlite组件安装,要在spec文件中写:s.library = "sqlite3"

自定义action的Ruby文件——文件图

组件21:自动化-自定义action_第5张图片
自定义action的Ruby文件--删除本地和远程标签.png

你可能感兴趣的:(组件21:自动化-自定义action)