^_^嗨一下
文章目录
  1. 什么是持续集成
  2. 持续集成工具
  3. Jenkins
  4. 平台搭建
  • Jenkins的安装和启动
    1. 完整的持续集成流程
    2. 鸡汤来一发
  • 什么是持续集成

    持续集成(Continuous Integration)持续是指开发阶段,对项目进行持续性自动化编译、测试,以达到控制代码质量的手段。持续集成是一种软件开发实践。
    — MBALab

    持续集成工具

    Jenkins、Travis、Gitlab、buddybuild等都是常见的持续集成工具,虽然他们都可以用于持续集成,但是不乏有各自的优缺点。综合考虑,Jenkins目前是其中使用最广泛,最主流的持续集成工具,这篇文章也是主要围绕Jenkins进行展开来讲。
    Jenkins作为传统的工具,前身是Hudson,从04年到现在已经有十几年的发展历史。因为这个 工具比较常用,大家也比较认可,软件开发的各种实践也可以通过大量的插件组合来实现,可定制性也比较好。

    Jenkins

    1、那么Jenkins 有哪些功能呢?
    (1)定时拉取代码并编译
    (2)静态代码分析
    (3)定时打包发布测试版
    (4)自定义额外的操作,如跑单元测试等
    (5)出错提醒
    基本上都是持续集成实践中的要求和周边的一些实现措施,如提醒功能等,出错后及时提醒开发者修复,Jenkins 中通过配置 SMTP 配置信息(这个一般的邮件服务提供商都有提供),邮件模板等,创建事件触发器,在事件(如编译失败)发生时,及时发送邮件通知开发者,挺方便的。
    2、Jenkins流程
    如图

    平台搭建

    Jenkins的安装和启动

    Jenkins是基于Java开发的一套持续集成系统,所以在安装的时候需要依赖系统的Java环境。(这里的安装是基于homebrew的)
    (1)java 环境准备

    1
    brew cask install java

    (2)Jenkins安装

    1
    brew install Jenkins

    (3)Jenkins启动和停止
    因为homebrew已经集成了服务的暂停和启动功能,所以直接使用homebrew的服务暂停和启动命令

    1
    2
    启动:brew services start Jenkins
    暂停:brew services stop Jenkins

    (4)Jenkins访问
    经过上面的步骤,我们就可以输入http://localhost:8080进行本地访问了,不出意外,我们就可以进行首次的Jenkins访问了
    如图
    首次访问会首先进入初始访问界面,这里需要我们输入初始密码,当然在我们安装Jenkins的时候系统为我们创建了一个初始密码,在~/.jenkins/secrets/initialAdminPassword这个文件目录下,我们可以通过vim命令进行查看然后copy到这里

    1
    vim ~/.jenkins/secrets/initialAdminPassword

    到这里我们就可以进入下一步操作了,点击Continue
    如图
    这里会有两个选项,第一个的大概意思就是Jenkins建议安装的插件组合,第二个就是根据自己的需要自己定制选择插件组合,这里我们选择第一项。接下来就是等待安装的过程。
    如图
    如图
    上一步安装完了后浏览器会显示下面的界面
    如图
    如图
    如图
    到这一步,输入用户名密码等相关信息,就算大功告成了,此后我们还需要安装一些辅助插件。选择系统管理->插件管理
    如图
    如图
    这里我们可以选择安装我们需要的插件,这里我们是用于iOS持续集成构建,所以我们要安装一些iOS相关的插件。
    (1)iOS专用:Xcode integration
    (2)Gitlab插件:GitLab Plugin
    (3)Git插件: Git plugin
    (4)签名证书管理插件: Credentials Plugin 和Keychains and Provisioning Profiles Management
    (5)脚本插件: Post-Build Script Plug-in
    (6)获取仓库提交的commit log: Git Changelog Plugin
    等等其它: GIT plugin / SSH Credentials Plugin

    (5)iOS项目构建
    经过前面的步骤和配置,我们就可以开始构建一个iOS项目了。点击创建一个新任务->输入构建项目名称
    如图
    如图
    接下来我们就可以开始对项目进行配置了
    1) General
    这里主要是输入一些项目名称和项目描述之类的东西,一般没什么特殊的要求
    如图
    2)源码管理
    这里主要是配置项目仓库访问路径和公钥,首先我们配置公钥,选择 Credentials进行项目公钥配置,这里的公钥配置和其它Git配置都差不多,所以不用多说,因为我们的本地一般已经配置好项目仓库的公钥,所以进入~/.ssh,找到相应的公钥,复制过来就好,如图
    如图
    我们的项目是托管在给gitlab上面的,所以我们选择Git,在Repository URL这里输入项目访问路径,Credentials选择我们刚刚配置好的公钥就好,然后我们可以在Branch Specifier (blank for ‘any’)这里输入我们需要构建的项目分支,如图所示
    如图
    3)构建触发器
    构建触发器,其实就是配置项目的构建自动构建周期,他的格式如下,如果有不懂的,点击后面的问好,他有关于这个的详细说明
    如图
    如图是点击问号后展示的格式说明
    如图
    4)构建环境设置
    构建环境设置 iOS打包需要签名文件和证书,所以这部分我们勾选“Keychains and Code Signing Identities”和“Mobile Provisioning Profiles”。 这里我们又需要用到Jenkins的插件,在系统管理页面,选择“Keychains and Provisioning Profiles Management”
    如图
    如图
    进入Keychains and Provisioning Profiles Management页面,点击“选择文件”按钮,分别上传自己的keychain和证书。上传成功后,我们再为keychain指明签名文件的名称。点击“Add Code Signing Identity”,最后添加成功后如下图所示:
    如图
    这个Keychain其实在/Users/管理员用户名/Library/keychains/login.keychain,当把这个Keychain设置好了之后,Jenkins会把这个Keychain拷贝到/Users/Shared/Jenkins/Library/keychains这里,(Library是隐藏文件)。Provisioning Profiles文件也直接拷贝,
    Code Signing Identity 直接就是钥匙串里相应证书的名字
    如图
    好了现在我们回到项目配置的地方,选择刚刚配置好的东西就好,到此
    如图
    5)构建
    这是自动化设置的关键一步了,我们可以写一个配置脚本,也可以直接把配置写在这里,为了直观我直接把配置写在这里了:
    如图
    如图
    以下我把配置贴出来

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    # 工程名
    APP_NAME="ZUITool"
    # 证书
    CODE_SIGN_DISTRIBUTION="iPhone Developer: XXX (4QBP298QQK)"
    # info.plist路径
    project_infoplist_path="./${APP_NAME}/Info.plist"
    #取版本号
    bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
    #取build值
    bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
    #DATE="$(date +%Y%m%d)"
    IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
    #要上传的ipa文件路径
    IPA_PATH="$HOME/${IPANAME}"
    echo ${IPA_PATH}
    echo "${IPA_PATH}">> text.txt
    echo "=================clean================="
    #xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration 'Release' clean
    xcodebuild clean
    echo "+++++++++++++++++build+++++++++++++++++"
    #xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
    #xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration Release
    xcodebuild -workspace ZUITool.xcworkspace -scheme ZUITool -configuration Release
    #xcrun -sdk iphoneos PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/Desktop/ipaF/"${IPANAME}"
    #xcrun -sdk iphoneos -v PackageApplication "./Release-iphoneos/${APP_NAME}.app" -o ~/Desktop/ipaF/"${IPANAME}.ipa"
    xcrun -sdk iphoneos -v PackageApplication /Users/luobing/Library/Developer/Xcode/DerivedData/ZUITool-gaqncfkjsvbmadavdavhfdqdlupo/Build/Products/Release-iphoneos/ZUITool.app -o /Users/luobing/.jenkins/workspace/IosBuildingTest/build/Release-iphoneos/ZUITool.ipa

    值得一题的是,这里的自动编译和打包用的是 xcodebuild xcrun ,关于xcodebuild xcrun的使用这里不多讲,网上一大堆,要是有不明白的,自己自行谷歌。

    6)fir上传设置
    上传到fir需要用到一个插件,这里是插件下载地址
    http://7xju1s.com1.z0.glb.clouddn.com/fir-plugin(6).hpi,插件下载完成后,配置到Jenkins里边
    如图
    如图
    如图
    做完上面这一步,我们回到刚刚的项目,上传到fir其实有两种方法,一种是直接配置到脚本里边,一种是在是直接配置增加构建后操作步骤,这里主要介绍后一种,点击构建后操作步骤
    如图
    安装完fir的插件,这里会多一项选择,Upload to fir.im,选择这一项
    如图
    配置插件

    1. fir.im Token(必填)
      fir.im Token 查看方法:直接点击 API token 进行查看.
      如图
      其它的都是选填的,这里不做介绍。我们只要保证项目能上传到fir上就行。
      做完这一步我们就大功告成了,然后我们可以进行测试构建了,保存后回到刚果创建的项目,点击立即构建
      如图
      构建一次,各个颜色代表的意义如下:
      如图
      如果构建完后是蓝色的球,恭喜你,就构建成功了。如果构建失败了,可以查看构建日志,找到错误原因。
      如图

    完整的持续集成流程

    经过上面的持续化集成,现在我们就拥有了如下完整持续集成的流程
    如图

    鸡汤来一发

    要么忙着活,要么忙着死 —— 《肖生克的救赎》

    文章目录
    1. 什么是持续集成
    2. 持续集成工具
    3. Jenkins
    4. 平台搭建
  • Jenkins的安装和启动
    1. 完整的持续集成流程
    2. 鸡汤来一发