美文网首页工作生活
Jenkins部署理解及问题分析

Jenkins部署理解及问题分析

作者: 民谣里不是故事就是诗丶 | 来源:发表于2019-07-23 15:36 被阅读0次

    惯例吹水,新到的16GB定制Mac mini,虽然是mini,毕竟i5六核,专为打包而生。
    我们经常听到自动化打包,持续化打包,一键打包,到底是个什么东西?知其然更要知其所以然。

    【概念】

    Package:打包
    就是把代码源文件(.h/.c/.m);
    预编译/编译:生成汇编代码文件(.o);
    汇编:将汇编代码转换成机器可以执行的指令;
    链接:模块拼装,生成可执行文件(.exe/.ipa./apk);
    可能还要签名加配置搭载平台等,最后完成用户使用的软件的过程。

    CD?Continuous Delivery:持续部署
    通过自动化的构建、测试和部署循环来快速交付高质量的产品;
    换句话说,就是写完代码就打包,一直写代码一直打包;
    只要你代码不报错,我发布频率就能更快。

    CI?Continuous Integration:持续集成
    通过自动化的构建实现持续化组装;
    换句话说,就是一键启动,只要你写完代码点击了开始编译,我就一直给你干到输出可执行产物;
    只要你配置的好,我就让你不用点点点。

    Jenkins:金啃丝

    [https://jenkins.io/zh/](https://jenkins.io/zh/)
    

    是一款开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化。

    Fastlane:法斯特蓝

    [https://fastlane.tools/](https://fastlane.tools/)
    

    是一套使用Ruby写的自动化工具集,旨在简化Android和iOS的部署过程,自动化你的工作流;
    它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。

    Cocoapods:扣扣破的丝

    [https://cocoapods.org/](https://cocoapods.org/)
    

    Swift和Objective-C Cocoa项目的依赖管理器。它拥有超过63,000个库,并在超过300万个应用程序中使用。CocoaPods可以帮助您优雅地扩展项目。

    Git:鸡特

    [https://git-scm.com/](https://git-scm.com/)
    

    Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务;和SVN一样是管理代码源文件版本的。

    Fir:发儿

    [https://fir.im/](https://fir.im/)
    

    Fir就是一个自动分发平台,主要功能就是将你打好的包生成二维码,供用户直接下载安装的好管家。

    【半自动化脚本】
    众所周知,我们iOS的开发打包流程,主要有以下几个步骤:
    1.通过SourceTree等git管理工具拉取代码到本地
    2.通过Cocoapods导入三方库
    3.然后打开Xcode编写代码
    4.配置Develope/Distribution证书
    5.通过xcbuild完成编译后
    6.再通过Archive完成打包.app
    7.接着在Organizer中导出成.ipa文件
    8.打开xxxxx网站,上传文件生成下载链接提供给测试

    即使每一步都比较顺利,也需要开发童鞋周而复始的点点点,
    每天开发完成第一句,先给自己打个气
    那么这些重复的工作怎么让机器代劳呢

    我们分析一下是否可以采用shell脚本,当然python脚本同理
    1.可以通过git指令实现clone及checkout
    2.有pod install指令
    3.未来可能有AI
    4~7.有fastlane指令(集成llvm等)
    8.有fir-cl指令

    #示例
    #更新 cocoapods
    #pod install --no-repo-update --verbose
    
    #通过Fastlane打包
    echo '开始Fastlane打包'
    fastlane gym --workspace "XXProject.xcworkspace" --scheme "XXProject" --export_method 'development' --clean
    
    #查找fastlane打包ipa路径
    relative_path=`find . -name "*.ipa"`
    relative_path=${relative_path:1}
    ipa_path=`pwd`$relative_path
    echo 'IPA路径:'$ipa_path
    
    #通过Fir-cli上传张指定目录的ipa
    echo '开始上传至fir.im'
    fir publish $ipa_path -c='测试Jenkins发包,请忽略这个包' --verbose
    
    

    【全自动】
    1.相对于手动拉代码Jenkins有git插件


    Git插件.png

    2.相对手动打包和证书管理Jenkins有Xcodeplugin
    3.后续上传操作,Jenkins支持shell脚本

    相关文章

      网友评论

        本文标题:Jenkins部署理解及问题分析

        本文链接:https://www.haomeiwen.com/subject/dqkzcctx.html