近期入职一家新公司。主管要求实现自动化打包上传到蒲公英并且钉钉群内有机器人发消息进行提醒。
随后查阅了一些技术博客,发现fastlane工具可以快速实现相关功能。
接下来记录一下从0开始实现对应功能的步骤.
- 第一步。安装fastlane工具。
- 查看当前设备ruby版本号。因为官方文档说明。fastlane工具目前支持ruby2.5及以上。打开终端.输入
ruby -v
查看输出的版本号是否支持。
- 若版本号不支持。先进行ruby更新操作。同样是终端输入
brew update
更新完成后继续执行下面两步操作
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
最后输入 ruby -v 查看是否更新版本完成。
- ruby更新完毕后.终端输入
xcode-select --install
查看是否安装xcode命令行工具。如果没有安装,会弹出对话框,点击安装。如果提示xcode-select: error: command line tools are already installed, use "Software Update" to install updates表示已经安装
- 最后一步进行安装fastlane
brew install fastlane
- fastlane工具初始化以及相关插件安装。
同样是打开终端.进入到当前开发项目的目录中。(与workspace文件同层级) 然后输入
fastlane init
根据终端的相关提示输入对应内容。安装完成后。开发项目的目录中会多出三个内容。
第一个文件夹中存放的是后续打包时所需要编写的脚本文件。我们后续在进行操作
第二个文件可以用于配置所需要使用到的插件。双击打开,在文件内输入如下两行
gem 'fastlane-plugin-pgyer' #上传蒲公英的插件
gem 'fastlane-plugin-versioning' #打包时操作版本号时所需要的插件
保存文件后 在终端输入进行对应插件的安装
bundle update
- 准备工作前两步已经全部完成。接下来进行自动化脚本编写工作.
打开fastlane文件夹下的Fastfile文件。这边建议使用sublime text这类型的编辑工具进行操作。
default_platform(:ios)
platform :ios do
lane :beta do
build_app(scheme: "#{projectName}")
end
end
以上是一个最简单的lane..lane在fastlane文件中相当于oc中的method,swift中的func。代表的就是一个具体的操作。build_app是fastlane中的构建功能方法。(也称之为action).
那么下面是我在打包时所定义的几个需要使用到的lane,首先是包的版本号修改。
desc "updateTheBetaVersionNumber"
lane :updateTheBetaVersionNumber do
#get_version_number_from_xcodeproj 方法就是步骤2中,安装的fastlane-plugin-versioning插件所提供的方法。
#这个插件内部提供了大量的方法,需要其他功能的可以去github上查看相关文档.
currentVersionNumber = get_version_number_from_xcodeproj(xcodeproj:"xxxxx.xcodeproj",
scheme:"debug",
build_configuration_name:'Debug')
#beta号的判断逻辑
unless currentVersionNumber.include?('beta')
currentVersionNumber += '-beta1';
else
betaArr = currentVersionNumber.split('beta')
betaNumber = Integer(betaArr.at(1))
betaNumber += 1
currentVersionNumber = betaArr.at(0) + 'beta' + betaNumber.to_s
end
increment_version_number_in_xcodeproj(
version_number:currentVersionNumber
)
首先第一个是公司这边要求的,在每次构建beta包时,需要特别处理的版本号的逻辑。大概意思是在原始版本号后面加上'-beta1',后续每次更新都加1..
第二步进行打包操作.对应的lane如下
desc "build_betaApp"
lane :build_betaApp do
build_app(
clean:true,
workspace: "xxxxx.xcworkspace",
scheme: "debug",
export_method:"ad-hoc",
#打包后的文件存在路径,未指定会直接放置在项目目录下 注意这个文件夹要先新建出来!!!
output_directory:"./ipa",
#打包过程中如果发现fastlane工具完成正确使用对应的配置文件,可以使用下面的方式直接进行指定
export_options:{
provisioningProfiles:{
"com.bundle.id" => "ad"
}
},
configuration:"Debug",
)
end
打包完成后,进行上传蒲公英操作.lane如下,很简单:
desc "postToPgyer"
lane :postToPgyer do
#方法中对应的两个key,可以在蒲公英后台的API信息中找到.如果需要额外设置密码也可一并执行。方法内增加一个password参数即可。
pgyer(api_key:"xxxxxxxxxxxxx",user_key:"xxxxxxxxxxx")
end
那么上传蒲公英完毕后,最后一步就是推送信息到钉钉群机器人,发送通知信息了。
- 首先钉钉群-群设置-智能群助手-选择加入一个自定义的机器人。
- 然后在机器人信息里找到对应的webhook地址,用以后续的信息对接。
接下来是钉钉群推送消息的lane:
desc "dingdingTalk"
lane :dingdingTalk do
#url就是上方机器人信息中的webhook地址
curl = %Q{
curl 'url' \
-H 'Content-Type:application/json' \
-d '{
"msgtype":"markdown",
"markdown":{
"title":"测试包新版本来啦!🚀🚀🚀",
"text":"### 测试包新版本来啦!🚀🚀🚀
#### 下载地址:下载地址 ![](这里是对应的二维码图片地址)
##### @所有人"
},
"at":{
"isAtAll":true
}
}'
}
system curl
end
这边使用的是markdown的方式进行发送,这种方式可以直接把二维码图片发出来,如果不需要图片,只需要纯文本的形式进行发送。可以如下方式设置参数:
"msgtype":"text",
"text":{
"content":"xxxxxxxxx"
},
"at":{
"isAtAll":true
}
需要更多的玩法,可以去钉钉开发平台的文档中查阅。
最后再编写一个lane.用以依次调用上面4个我们准备好的lane,作为我们发起打包功能的执行入口
desc "upload to pgyer"
lane :uploadToPgyer do
updateTheBetaVersionNumber() #修改版本号
build_betaApp() #构建
postToPgyer() #发布到蒲公英
dingdingTalk() #钉钉机器人通知
end
至此就完成了整个功能的配置工作了。保存好fastfile文件。
再次打开终端,进入到对应的开发项目文件中,执行
#uploadToPgyer 就是上面定义的功能执行入口
fastlane uploadToPgyer
接下来就是等着打包完成,上传蒲公英,发送钉钉机器人消息三部曲了。
ok.~~ 到这里这篇记录内容就结束了。 希望对观看的您有所帮助。
网友评论