gitlab 实现 CI/CD

作者: uniapp | 来源:发表于2019-07-19 23:42 被阅读9次

    自从进入现在的公司,托管代码的仓库就开始采用 gitlab , 前期通过配合使用 git 的,实现了对工程代码随心所欲般地操作。 和 git 行云般的命令相匹配, gitlab 托管工具上面,也能实现各种贴心的自定义配置,上周我对工程进行了 CI/CD 的配置,具体操作流程如下。

    首先了解一下 gitlab 的来历:

    GitLab是由GitLab Inc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。GitLab 由乌克兰程序员 Dmitriy Zaporozhets 和 Valery Sizov 开发,它由 Ruby 写成。后来,一些部分用 Go 语言重写。

    怎么理解 MIT 协议呢?简单来说就是允许任何人以任何方式使用该软件。 大神之所以称为大神,不仅仅是惊叹的编程能力,更是施爱众生的风险品格。所以,现在公司无论大小,只要是拥有接受互联网的开放心态,基本都在使用 gitlab 。掌握 gitlab ,在一定程度上已经成为当下一个程序员的必备技能,话题扯远了,让我们回到正题。

    配置 gitlab 的 CI 很简单,步骤大神都已经写的明明白白,按照下图点击,就能看到官方配置说明(不同 gitlab 版本位置可能不同):

    CI配置.png

    由于文档采用英文,需要不断通过实践调整理解的方向。简单来说分为 3 部:

    1 在工程目下下创建 .gitlab-ci.yml 文件;
    2 采用 ruby 语法,通过 .gitlab-ci.yml 文件配置项目自动打包流程,以iOS App 应用来说,比如可以依次运行单元测试、UI测试、build 和 archieve, 当然也可以选择仅仅执行一个 job(gitlab 的名称,可以理解成动作或者流程);
    3 注册运行 runner ;

    以我实际运行通过的 yml 文件配置为例,简要介绍下具体配置详情:

    stages: 
      # - test 
      # - build 
      - release 
    
    # test_job: 
    #     stage: test 
    #     script: 
    #       - fastlane test 
    #     tags: 
    #       - ios 
    
    # build_job: 
    #     stage: build 
    #     script: 
    #       - fastlane build 
    #     tags: 
    #       - ios  
    
    release_job: 
        stage: release 
        script: 
          - fastlane archive_app 
        tags: 
          - ios  
        only: 
          - tags    
    

    在 release_job 中,运行的脚本为fastlane archive_app(所以要求 runner 设备安装 fastlane 命令), 指定的 runner (后面介绍配置) 名称为 ios , 最后出发的条件是在分支上打 tags 时。以上配置,用一句话解释就是当我在 git 分支上打 tag 并提交至 gitlab 时,gitlab 就会自动在 runner 上运行脚本 fastlane archive_app。

    通过前面的描述,应该能够大概理解 runner 的含义,简单来说就是运行 runner 的设备,实际操作中就是运行的计算机或者服务器。runner 在运行脚本时,要求依赖一定的操作环境。比如,以前运行 Excel、Word 时要求 Windows 操作系统,在 Mac 上是不支持的。假如在
    iOS 项目运行 fastlane 命令,就要求计算机安装 MacOS 系统(安装虚拟机也行),然后安装 Xcode 应用软件。

    当一台机器安装好具体的操作环境和软件后,它就具备了成为 runner 的资格,想要成为 runner ,需要按照 gitlab 的规定进行配置:


    runner配置

    在命令行使用gitlab-runner status 命令,能够看到该 runner 服务的运行状态。之所以使用 token ,个人推测底层应该是使用 ssh 的命令,实现了 gitlab 服务器和 runner 间的通信。

    关于 iOS 项目中 fastlane 的配置和使用,可以参考我的上一篇文章 https://www.jianshu.com/p/f4e76fa22f77 以上就是 gilab + fastlane 实现 iOS 项目 CI/CD 的简要框架,更具体和详细的配置,还需要细细阅读官方文档,加油吧。

    喜欢和关注都是对我的鼓励和支持~

    相关文章

      网友评论

        本文标题:gitlab 实现 CI/CD

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