从Travis发布到CocoaPods

时间:2014-10-15 11:57:56

标签: git cocoapods travis-ci

你会如何从特拉维斯推销CocoaPods?我希望每个标记的提交都执行pod trunk push,但pod trunk register特拉维斯是个好主意吗? Trunk的文档说它注册了一台机器,而不是一个用户,所以无意中打开了Pod来推送其他使用Travis的人吗?

有没有人有一个已经这样做的回购的例子?

您可以使用Travis命令行工具推送的私有API密钥,使用RubyGems执行此操作,如RubyGems Deployment中所述。

2 个答案:

答案 0 :(得分:5)

Cocoapods 支持使用令牌进行身份验证。

首先,您需要从~/.netrc的密码字段中获取令牌。致电pod trunk register后,您会看到一个如下所示的部分:

machine trunk.cocoapods.org
   login user@example.com
   password 0000000011111111

然后您可以使用令牌(这是不安全的)更新CI上的podspec:

export COCOAPODS_TRUNK_TOKEN=0000000011111111
pod trunk push path/to.podspec

您还可以使用

加密Travis-CI中的令牌
travis encrypt COCOAPODS_TRUNK_TOKEN=0000000011111111 --add env

<强>更新

您现在可以直接在计划的设置中设置环境变量。如果您关闭构建日志中的显示值(默认情况下已禁用),则会将其视为安全变量。这样,您就不需要使用Travis命令行工具,或者将垃圾添加到您的yaml文件中,并且可以在不更改您的仓库的情况下进行更改。

Travis environment variables

答案 1 :(得分:1)

感谢@Quanlong有关可以在哪个文件中找到密码的信息。

您可以使用此命令从所述文件中提取密码

grep -s password ~/.netrc | awk '{print $2}'

因此,如果您使用的是fastlane或任何其他CI套件,则可以像这样设置令牌

ENV['COCOAPODS_TRUNK_TOKEN'] = sh "grep -s password ~/.netrc | awk '{print $2}'"

哪些适用于快速通道。否则,您可能希望以其他方式调用grep命令,可能是system("grep ... ")