美文网首页
Mac os上为iOS项目搭建Jenkins自动化构建

Mac os上为iOS项目搭建Jenkins自动化构建

作者: S_Lyu | 来源:发表于2022-06-21 11:35 被阅读0次

    前置工作

    • 安装Homebrew

    使用如下命令安装Homebrew,如果已经安装过,则跳过:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 
    

    失败的话选择使用国内镜像安装,命令如下(参考:https://zhuanlan.zhihu.com/p/111014448 ):

    /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
    
    • 安装JDK8

    使用如下命令安装JDK8,如果已经安装过,则跳过:

    brew cask install homebrew/cask-versions/adoptopenjdk8
    

    安装jenkins

    • 安装

    使用如下命令安装jenkins:

    brew install jenkins
    

    报错【fatal: not in a git directory】的解决办法:

    执行brew -v,可以看到git会提示homebrew-core和homebrew-cask目录被认为不是一个安全的目录,需要手动添加,依照提示的命令执行即可,命令如下:

    • git config --global --add safe.directory 你的homebrew-core路径
    • git config --global --add safe.directory 你的homebrew-cask路径
    • 运行

    使用如下命令开启、关闭、 重启jenkins服务:

    # 启动jenkins
    brew services start jenkins
    # 停止jenkins 
    brew services stop jenkins
    # 重启jenkins
    brew services restart jenkins
    
    • 初始化jenkins配置:

    打开浏览器,输入如下地址,可进入jenkins可视化界面:

    localhost:8080
    
    • 配置局域网ip地址访问:

    通常刚刚初始化的jenkins无法通过局域网ip地址访问,需要我们更改homebrew.mxcl.jenkins.plist配置参数中的httpListenAddress为0.0.0.0;端口号默认为8080,可按需要修改。
    homebrew.mxcl.jenkins.plist文件可能存放在如下路径中,找到他(参考:https://www.csdn.net/tags/MtTaMg4sNjM1Njk4LWJsb2cO0O0O.html ):

    /Library/LaunchAgents/homebrew.mxcl.jenkins.plist
    /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
    /opt/homebrew/opt/jenkins/homebrew.mxcl.jenkins.plist

    配置完成后,执行如下命令,重启jenkins服务:
    brew services restart jenkins
    重启完成后,在浏览器中输入【ip地址:端口号】测试是否可以打开jenkins可视化界面。

    在jenkins上搭建iOS项目

    • 必要插件

      • 安装插件:Git Parameter Plug-In

      分支选择器,git参数化构建流程需要

    • 可选插件

      • 安装插件:AnsiColor

      控制台颜色输出,此插件需要在后续的项目中配置中,勾选Color ANSI Console Output,下拉选项默认为xterm即可


      AnsiColor.png
    • 配置项目

      • 选择构建一个多配置项目


        构建一个多配置项目.png
      • General中首先配置丢弃旧的构建的规则

      使用5 20策略,如图:


      image.png
      • General中的参数化构建过程中,首先添加git参数
        此参数用于获取git仓库指定分支、标签的代码,如下图(此项为之前安装的Git Parameter Plug-In插件的功能):

      注:此处所有的参数皆为当前Shell脚本的环境变量,可使用$参数名${参数名}获取,例如图示中的参数可通过$SELECTED_BRANCH来获取

      Git参数.png
      • General中的参数化构建过程中,根据自己的需要,添加其他类型的参数

      这里简单举一个例子,例如打包环境,添加参数如下:


      打包环境参数配置.png

      在参数化构建过程中添加的构建参数,会在开发者构建时展示在jenkins构建界面上(提前展示一下):


      构建时看到的输入界面.png
      • 源码管理中输入代码仓库信息
        如下图图配置git相关参数:

      【关于多仓库项目】:这里配置多仓库项目的清单仓库,所有组件仓库的分支名建议相同,后续构建流程有说明

      • 通常持续化集成构建流程中,我们会直接指定一个确定的分支,例如:【origin/Develop】
      • 手动构建流程中,我们会将指定分支指向开发人员选择的git参数


        Git仓库配置.png
      • 在构建中添加Shell脚本,来灵活的控制项目整体构建流程
      • jenkins自动拉取的代码库存放在如下路径
      /Users/用户名/.jenkins/workspace/项目名
      
      • 这里可以通过shell主控脚本,来控制本地代码仓库中的其他脚本,来实现编译、导出ipa、上传第三方分发平台、上传appstore、发送打包完成邮件、发送打包信息到钉钉或飞书等移动办公软件、上传dsym至bugly、导出git指定时间段的提交记录等功能
      • 【关于多仓库项目】:这里提供给一个思路,可先获取git参数变量,据此来拉取各个仓库代码到jenkins的workspace,后续构建流程使用脚本中拉取的代码库来构建


        Shell主控脚本.png
    • 构建脚本相关

    iOS的自动打包脚本,网络上有很多(自动签名、手动配置证书无论那种都可以在百度搜一下),这里就不提供详细脚本了,简单指一条传送门:iOS Xcode 自动打包,一键上传AppStore脚本

    不过还是有一些编写多流程构建脚本的相关技巧提供给大家:

    • Shell子脚本使用主脚本中定义的参数:

      可在主脚本中奖变量用export修饰到环境变量,后续子脚本中即可捕获此变量值
      例如:
      export CATCH_SMB_ARCHIVE_NAME=" " export SETTED_LOG_START_DATE

    • Python脚本中获取shell脚本定义的环境变量:

      使用os库中的environ方法:【os.environ[变量名]】
      例如:
      # Shell export SETTED_LOG_START_DATE # Python settedLogStartDate = os.environ['SETTED_LOG_START_DATE']

    • Shell子脚本修改主脚本变量值

      shell自脚本是无法修改主脚本变量值的(修改无效),这里可以将自脚本拉倒与主脚本相同进程下执行,同一进程下的脚本是可以相互修改其变量值的
      # 以子进程的方式执行脚本: sh shell.sh # 同进程下执行脚本: . shell.sh

    相关文章

      网友评论

          本文标题:Mac os上为iOS项目搭建Jenkins自动化构建

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