iOSiOS之框架-类库iOS自动化

fastlane 实现自动化更新远程私库

2017-05-22  本文已影响453人  踩坑小分队

当我们的远程私有库集成完毕之后,后期可能需要不断的维护更新升级。
如果你对远程私有库不是很了解,建议先了解一下:
<a href="http://www.jianshu.com/p/db64c9a543a4">教你一步步用CocoaPods创建远程私有库</a>

远程私有库后期的相关维护升级的步骤是:
1、拉取远程仓库的代码

git pull

2、将相关封装的代码升级完毕后,更新到Example项目中,进行库验证
进入到Example路径下面

image.png
pod install

3、修改相应的.podspec文件
至少升级一个version版本,其他的相关参数,根据实际情况进行修改


image.png

4、提交本地代码到本地仓库

git add .
git commit -m 'updata'

5、将本地仓库的更新的代码更新到远程仓库

git push origin master

6、在本地仓库添加tag,添加的tag和.podspec文件中的version对应

git tag 0.1.5

7、将tag更新到远程仓库

git push --tags

8、检测当前的.podspec的文件格式

pod spec lint

9、将当前的.podspec文件更新到相关的私有spec仓库中

pod repo push XXX  xxxx.podspec

每次更新的时候都需要走这么多步骤,当然了上面的步骤仅供参考,有些步骤的顺序也是可以修改的,比如你可以在第5条之前更新第8条。或者说第8条可以不执行,等等。但是上面的步骤实现下来能保证完成升级远程私有库的工作。

但是,这么多的步骤执行下来实在是有点浪费时间,就像打包一样,难吗?不难,就是麻烦,而且你得一直盯着一步步的执行完。

下面我们尝试使用fastlane来实现上面的这些操作的步骤
fastlane是什么?懒人的福利,实现各种自动化操作的工具。fastlane可以干什么?fastlane是用Ruby语言编写的一套自动化工具集和框架,每一个工具实际都对应一个Ruby脚本,用来执行某一个特定的任务,而Fastlane核心框架则允许使用者通过类似配置文件的形式,将不同的工具有机而灵活的结合在一起,从而形成一个个完整的自动化流程。
首先看一下fastlane的安装步骤:跟着一步步走就好了
Fastlane入门:安装篇


简单大概的说一下fastlaneAction实现:

Fastlane本身包含两大模块,一个就是Action,另外一个就是内核部分了。Action是Fastlane自动化流程中的最小执行单元<也就是一条条的指令,比如下面用到的git_add ,pod_install等等>,这些命令背后都对应一个用Ruby编写的脚本。通过这些Action的自由的组合生成一条可以执行的lane,也就是对应下来一个个顺序排列的脚本。运行的时候会顺序进行执行,如果都通过的话,就会一条条的往下走。


安装完fastlane之后,具体的实现步骤如下:
1、给项目配置fastlane
1.1、到项目的主目录下面,然后运行

fastlane init

然后会让你输入你的
(1)、AppId
(2)、AppId 对应的密码
(3)、App Identifier (com.krausefx.app):
(4)、Would you like to create your app on iTunes Connect and the
Developer Portal? (y/n)

(5)、Optional: The scheme name of your app (If you don't need one, just
hit Enter):

这里说一下我怎么写的
(1)、(2)、(3)我这边是瞎写的,因为都用不到,这里不需要打包,不需要获取这三个信息.
(4)选择 n
(5)直接输入回车,不需要

执行完毕之后的效果


image.png

2、将刚开始上面列出的步骤翻译成相关的命令<Action>,方便执行
2.1、使用相关的文本编译器打开fastlane/Fastfile,我这边使用的是Xcode。
将下面的文本<是我提前写好的Action集合组成的一条可以执行的lane>粘贴到fastfile的最下面

image.png
#################################################################

desc "通过 upgradePrivateSpec 可以快速的对远程私有库完成升级工作"
lane :upgradePrivateSpec do |options|

#外界输入的tag标签的值
tagName = options[:tag]

# 输入的podspec的名字
specName = options[:specName]

# 输入的 repo name
repoName = options[:repo]

podspecPath = "#{specName}.podspec"

#具体在这个文件上执行哪些行为

# 1、git pull
git_pull

# 2、pod install
cocoapods(
clean: true,
podfile: "./Example/Podfile"
)

# 3、git add .

git_add(path: ".")

#  git commit -m 'message'

git_commit(path: ".", message: "Version Bump")

#  git push origin master

push_to_git_remote

# 4、git tag ...

add_git_tag(
tag: tagName
)

#    git push --tags

push_git_tags

# 5、pod spec lint 检测当前spec的格式

pod_lib_lint(allow_warnings: true)

#    pod repo push XXX  xxxx.podspec

pod_push(path: podspecPath, repo: repoName, allow_warnings:true)

end

3、分享下相关的格式的写法经验

3.1、主要了解的就是怎么把上面的一个个的git或者pod命令翻译成上面的Action格式
比如 git add . ==== git_add(path: ".")

具体的参考文档参考:https://docs.fastlane.tools/actions/
相关的替换方法如下:
比如现在想查找第一步的做法
git pull转化相关格式

image.png

当然了,也可以在终端看到相关的Action的详情信息

fastlane action 名称
image.png

3.2、上面第二步的pod install是更新Example中的pods,通过Podfile进行相关的更新,所以下面的podfile: "./Example/Podfile"必须对应Podfile的位置

cocoapods(
clean: true,
podfile: "./Example/Podfile"
)

3.3、动态输入参数,和变量的使用


image.png

剩下的命令就可以对照着原生的pod或者git操作进行去文档查询替换就好了,上手还是挺容易的。

4、将当前的目录切换到主项目<也就是.podSpec所在的目录>,校验一下我们刚刚写的命令格式是否有问题

fastlane lanes
image.png

如果没出什么错,万事大吉了,出错的话,根据相关的提示进行修改

5、运行我们自己写的lane,目录当然还是在主项目下

fastlane upgradePrivateSpec tag:0.1.7 specName:DownLoader repo:PrivateSpecsGather

upgradePrivateSpec是我们定义的lane的名称

image.png
tag:0.1.7 specName:DownLoader
tag、specName、repo是运行的时候输入的参数。输入参数的格式是tag:0.1.7多参数中间用空格分隔
这三个参数分别代表的是,当前tag值,.podspec文件的名称,远程保存spec列表的私有库名称

匹配图解释:


image.png

运行结果:

image.png

查看执行结果是不是正确:


image.png image.png

以后升级完毕了,配置好该lane,运行命令,一句话搞定。

6、自定义Action
有的时候官方提供的所有的Action并不能满足我们的需求,这个时候就需要我们自己自定义Action用来调用了,我感觉这也是fastlane一个很好的功能。
比如我们还是依据上面的示例来实现一个Action,我们在给项目打tag的时候,先判断一下当前的项目是不是已经存在了相同名称的tag,如果有的话,删除掉,然后再进行下一步操作。
自定义Action详情可以参考:
fastlane 实现自定义Action

扩展其他的自动化操作:
<a href="http://www.jianshu.com/p/6728917b4c91">fastlane实现自动化打包上传测试平台</a>

相关参考资料:
fastlane文档

上一篇下一篇

猜你喜欢

热点阅读