如何将arc diff与fastlane结合使用,解决fastlane运行时无法输入提交信息的问题
arcanist phabricator 与 fastlane 整合方案
核心原理
arc diff 本身支持全量参数化配置,无需手动交互输入内容,直接在fastlane脚本中通过参数传入所需信息即可完成调用。
具体实现方案
方案1:直接使用 arc diff 原生参数跳过所有交互步骤
你可以通过以下几个核心参数直接覆盖所有需要手动输入的场景:
-m/--message:直接传入提交描述内容,完全跳过编辑器唤起步骤--no-browser:禁止命令执行完成后自动打开浏览器页面,适配脚本运行环境--yes:对命令执行过程中所有确认类提示默认回复“是”,无需手动确认--field:可以传入Phabricator revision的自定义字段内容,比如测试计划、关联任务等,格式为--field '字段名=字段值'--reviewers/--cc:可选参数,提前指定审核人、抄送人账号,无需后续补充
fastlane 中调用示例:
lane :publish_arc_diff do # 可以直接从最近一条git commit中提取提交信息,也可以自定义传入 latest_commit_msg = sh("git log -1 --pretty=%B").strip # 无交互执行arc diff,对比目标分支为origin/main sh "arc diff origin/main --message '#{latest_commit_msg}' --no-browser --yes --field 'testPlan=本地测试、CI自动化测试全部通过'" end
方案2:提前配置arcanist默认规则规避交互
如果存在参数无法覆盖的提示场景,可以提前修改arcanist配置:
- 在项目的
.arcconfig文件中配置editor: "cat",默认跳过编辑器唤起 - 提前将Phabricator认证token存入运行环境的
PHABRICATOR_TOKEN环境变量,无需手动登录认证
常见踩坑说明
- 要确保fastlane运行的环境中已经正确安装arcanist,且arc命令在当前用户的PATH路径下可正常访问
- 如果提交信息中包含单引号等特殊字符,需要提前做转义处理,避免shell命令解析错误
- 如果需要获取生成的diff链接,可以在
arc diff命令后追加--json参数,解析返回的json结构体即可拿到revision ID、diff链接等信息,存入fastlane变量后可用于后续通知等场景
内容的提问来源于stack exchange,提问作者Олег Герман
相关产品推荐
相关产品推荐

