自从进入现在的公司,托管代码的仓库就开始采用 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 的简要框架,更具体和详细的配置,还需要细细阅读官方文档,加油吧。
网友评论