• j9九游会登陆--首页直达

    Jenkins for iOS 搭建日志
    • 智网科技
    • ###
    • 分类: 履历之谈
    • 阅读量: 130

    不停以来被 iOS 项目打包狐疑,速率慢、操纵庞大,切齿腐心[qiē chǐ fǔ xīn]!于是开端寻求网络上的继续集成办事,前两天实验了下 buddybuild、bitrise,都不太快意(大概是姿态不太对),恰好公司有台空着的 Mac mini,恰好可以拿来尝尝搭个 Jenkins 办事器做继续集成,网络上有许多 Jenkins 安置教程,这里就不反复了,次要记载一下我在利用历程中遇到的题目息争决办法,盼望将来某一天能帮到异样被狐疑的人儿。

    再说点闲言碎语,关于 iOS 的打包的进阶进程,最早没打仗这些工具的时分是每次手动在 Xcode 上 Archive -> Organizer -> Export,必需守在电脑前,两头操纵步调也许多,分外是在 Organizer 内里署名,很容易就呈现证书大概 PP(Provisioning Profiles) 文件不准确之类的题目;厥后晓得了 fastlane,写好剧本用 gym 一键打包,觉得生存品格上了一个量级;厥后理解到继续集成,好比 Jenkins,项目丢办事器上去,推送代码主动打包、分发、推送提示,体验更上一层楼。

    遇到的题目

    Unable to unlock the keychain.

    大概遇到错误 User interaction is not allowed ,那么你大概必要在 script 里先实行一下这一行下令来给 keychain 解锁:

    1
    security unlock-keychain -p "YourPassword" ~/Library/Keychains/login.keychain

    然后可以用这行来验证能否解锁乐成:

    1
    security show-keychain-info ${HOME}/Library/Keychains/login.keychain

    由于在 Jenkins script 里没有输出交互,假如不在下令中跟上 -p 暗码的话是会失败的。

    Cocoapods 依赖更新失败

    通常必要在编译项现在实行 pod install 来安置依赖,假如你的 Podfile 里援用了公有 pod,假如经过 https 拜访的话,那么一样平常在终端中会主动提醒输出对应 git 拜访账号暗码,但是在 jenkins 里没有输出交互,以是这时分之后在 jenkins 和 git 里设置装备摆设准确的私钥-公钥才干准确拜访,而且 Podfile 里的地点改为 git 打头才行。

    假如照旧想用 https 拜访的话别的有个取巧的复杂,便是 ssh 出来 jenkins 用户,手动 pod install 一遍,手动输出账号信息,体系则会记载上去,下次就不会再提醒,从而在 jenkins 里也能正常。

    一些小本领

    编译乐成 iMessage 关照

    一样平常编译乐成后各人大概会设定发送邮件关照,实在也可以间接经过 AppleScript 发送一条 iMessage 信息,还挺好玩的。

    在构建步调的 script 里大概会是如许:

    1
    osascript -e 'tell application "Messages" to send "'"${scheme}(${BUILD_DISPLAY_NAME}) build complete."'" to buddy ">###" of (service 1 whose service type is iMessage)'

    这个地方被狐疑的是在 Shell 里挪用 osascript -e ,为了引入 jenkins 的 environment variables ,写的时分单双引号曾经将近把我整残废了。 终极就可以在你的 iPhone 上收到 iMessage 提示,结果如下图:

    1.png

    iMessage

    编译乐成 fir 上传

    可以在编译乐成后提交 .ipa 到 fir,经过 fir.im-cli 上传,大概安置 fir-jenkins 插件

    1
    fir publish ${ipa_path} -T YOUR_TOKEN