持续集成

平日在公司开发,测试阶段或会频繁地给测试人员安装应用,或是上传到蒲公英让客户试用。大公司里开发或许没有这些琐碎的事情,把代码推上代码库就完事了,剩下的有专人完成。

这段时间试用了Fastlane,用Github上的开源搭建了一个类似了蒲公英的分发平台,配合着使用,基本免去了直接和测试打交道。

那么现在进一步尝试,简单搭建一个CI流水线,像大公司里的开发一样,push了就完事。

代码库

首先需要一个代码库,能设置触发器,调起编译打包等一系列操作,SVN 不熟悉,GitHub 是能设置 webhook 的,号称 GitHub的开源版本的 Gitlab 当然也可以。

Gitlab 以前有个汉化版,8.x后就不维护了,近几年 Docker 兴起,热心群众重启汉化,并发布到镜像到Docker Hub,且版本一直跟上官方版本。一键部署,瞬间拥有自己代码库。

Docker Hub 地址 https://store.docker.com/community/images/twang2218/gitlab-ce-zh

先创建三个文件夹 configdatalogs,docker-compose.yml 文件如下,需要邮件功能自行查找配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '2'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:latest'
restart: unless-stopped
hostname: 'git.sephilex.com'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://git.sephilex.com'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
# 比如下面的电子邮件的配置:
ports:
- '31001:80'
- '31002:443'
- '31003:22'
volumes:
- ./config:/etc/gitlab
- ./data:/var/opt/gitlab
- ./logs:/var/log/gitlab

运行

1
docker-compose up -d

跑完了访问 localhost:31001

接下来在Gitlab上创建一个项目,给测试持续集成的项目添加这个remote upstream

jenkins

这玩意是什么呢?本人也不熟悉,大概就是一个带 web面板的持续集成工具集,使用homebrew 安装

1
brew install jenkins

运行

1
brew services start jenkins

第一次运行会提示到指定文件拿密码,按提示操作即可

接着安装推荐的插件,其它的待会装

758f28133958ce6c

接着创建一个管理员用户

到如下页面新建一个任务

63fc81e343a36973

  • 到系统管理->管理插件->可选插件中安装gitlab和gitlab hook两款插件,勾选安装完重启Jenkins

  • 新建任务

    • 选择 构建一个自由风格的软件项目

9c549d4c14a317f6

- 下一个页面主要填写源码管理,如URL、认证(密码或ssh公钥)

217260a297f6616a

a5792b4ba00a5411

  • 还有触发器

27e468608173818b

点开高级配置 Filter branches by name,分支包含指定字段就触发集成,这里配置了master

流程如下

1
2
3
4
5
6
7
st=>start: 提交代码
e=>end: 结束
op1=>operation: Gitlab:发送请求给 Jenkins
op2=>operation: Jenkins:根据触发器设定编译打包发布
op3=>operation: Fastlane:编译打包发布

st->op1->op2->op3->e