Mac下使用Jenkins打包IOS和安卓APP

时间:2024-02-25 08:52:34

        在项目中,依赖开发手动打包效率低且版本控制不稳定。 测试人员需要掌握独立环境部署能力才是正途。

一、选择Mac系统的原因

      因为要打包IOS的APP, IOS的编译环境是Xcode,这个需要安装在Mac系统上。  所以如果要编译IOS并打包,则要使用Mac系统。

 

二、Jenkins分布式构建

  1、在使用jenkins自动构建时,我们可能包含服务端、前端、客户端APP(安卓和IOS)等编译构建。 服务端语言又分为java、.net、.net core 、C++等,每种编程语言的编译环境及方法均不一样。

    如果在一个服务器上搭建环境,就会很杂乱。需要编译构建的程序多了,构建服务器本身的资源使用也会成为瓶颈。  所以后期发展成熟,建议使用分布式构建。  jenkins支持Master/Slave的主从架构来实现。

  2、主从架构

    1、jenkins服务器为主节点,处理调度构建作业。

    2、主机进行构建任务分发,从机来具体执行

    3、监视从机节点,记录从机的构建结果

   主从最终实现的效果图:     (本期主要讲述APP打包,主从架构概过,感兴趣的同学可以自行百度实践)

 

三、APP打包环境准备

  1、jenkins环境 (有文件安装和命令行安装,推荐使用命令行安装)

    a、安装jenkins前需要安装jdk,版本1.8以上

    b、文件安装:官网下载 https://jenkins.io/zh/download/  (根据搭建服务器环境*选择,本次我们需要构建IOS的IPA包,选择 Mac os)

      

        命令安装:

            1、先需要安装软件包home brew,直接在终端对话框中敲    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

            2、查看brew是否安装成功:    brew -v

              能显示版本号即安装成功 

            3、直接命令行安装jenkins  : brew install jenkins    (因为我已安装,所以显示此提示)

         c、在浏览器中输入http://localhost:8080,首次安装应该会出现如下界面,这里需要你去找到Jenkins的初始密码。  密码在如下的 红色提示路径下

      

           d、后续都采用默认安装,即可完成安装 

 

  2、xcode下载安装  (xcode可以直接在appstore中下载及安装,此文件有点大  有接近10g)

    

  

  3、安卓打包工具 android-sdk安装:

    a、Android-sdk 资源站点 http://www.androiddevtools.cn  ,一直下一步安装

     

    b、android-sdk安装完成后,找到android-sdk/tools 安装路径,双击 android程序,唤出SDK Manager

     

    c、更新sdk组件  (由于谷歌被墙了,所以某些sdk无法更新,需要设置国内镜像站点)    

      Mac顶部菜单点击Android SDK Manager -> Preferences

      HTTP Proxy Server填写:mirrors.neusoft.edu.cn

      HTTP Proxy Port填写:80

      勾选Force https:// ,然后点击“Close”

    

      Mac顶部菜单点击Tools -> Manage Add-on Site,选择右侧“User Defined Sites”:    

        把下面这堆网址:

            http://mirrors.neusoft.edu.cn/android/repository/addon-6.xml 
            http://mirrors.neusoft.edu.cn/android/repository/addon.xml    
            http://mirrors.neusoft.edu.cn/android/repository/extras/intel/addon.xml    
            http://mirrors.neusoft.edu.cn/android/repository/sys-img/android-tv/sys-img.xml    
            http://mirrors.neusoft.edu.cn/android/repository/sys-img/android-wear/sys-img.xml    
            http://mirrors.neusoft.edu.cn/android/repository/sys-img/android/sys-img.xml    
            http://mirrors.neusoft.edu.cn/android/repository/sys-img/google_apis/sys-img.xml    
            http://mirrors.neusoft.edu.cn/android/repository/sys-img/x86/addon-x86.xml    
            http://mirrors.neusoft.edu.cn/android/repository/addons_list-2.xml    
            http://mirrors.neusoft.edu.cn/android/repository/repository-10.xml

         全手动New加进去,然后就可以下载了,点击

         

 

四、jenkins中环境变量配置

  1、Android环境变量配置 ,在 系统管理-系统设置中添加 Android_Home

      

 

    

  2、gradle配置

    在 系统管理-全局工具配置中 添加一个gradle版本。  我们编译使用的V4.6 

 

 

 

五、Android打包工程配置

  1、创建一个*风格的工程

    

  2、旧的构建数据丢弃 

       

  3、源码拉取,可以选择svn或者git,看项目使用的配置管理工具

          

  4、设置构建触发策略,我这里选择的定时触发(6点和12点自动构建打包)

        

  5、编译构建并将编译的包放到共享目录 

        1、测试环境或线上环境的编译任务assembleBetaDebug,可以咨询安卓开发。(如果开发没有设置打包渠道,可以手动在代码路径 app/build.gradle下加入此代码)

        

 

    

        2、添加一个Execute shell,将生成的apk包转移到共享目录下。  (大多人使用的windows的办公电脑,取包不方便,放到共享目录后 取包很方便了)

        

cp ./app/build/outputs/apk/beta/debug/app-beta-debug.apk /Users/mjb/Desktop/CI/android_new_trunk.apk
mv ./app/build/outputs/apk/beta/debug/app-beta-debug.apk /Users/mjb/Desktop/CI/android/trunk/xxx-${BUILD_ID}.apk

 

  

  

    放到共享目录后,取包方便很多 、    另外也可以考虑将包放到蒲公英平台或者生成固定二维码,直接下载。

 

 

六、IOS打包工程配置

  1、前面配置省略,跟安卓类似

    2、使用shell脚本编译  (jenkins对于xcode插件兼容性不好,所以建议调用shell执行xcodebuild脚本来编译)

     第一个的shell是编译xcodebuild,第二个shell是变换共享目录

    

 

    

#!/usr/bin/env bash
#xcodebuild clean -workspace /Users/mjb/.jenkins/workspace/mjd-app-ios/Sales.xcworkspace -sdk iphoneos -scheme "Sales" -configuration "Debug" archive #Release
xcodebuild -archivePath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales.xcarchive" -workspace /Users/mjb/.jenkins/workspace/mjd-app-ios/Sales.xcworkspace -sdk iphoneos -scheme "Sales" -configuration "Debug" archive
xcodebuild -exportArchive -archivePath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales.xcarchive" -exportPath "/Users/mjb/.jenkins/workspace/mjd-app-ios/build/Sales_debug" -exportOptionsPlist \'/Users/mjb/.jenkins/workspace/mjd-app-ios/build/ExportOptions.plist\' -allowProvisioningUpdates

 

注意,在编译前需要将这两个文件复制到对应目录 

 

最后实施完成的效果 :

安卓和IOS都能成功打包 apk和ipa了