以下是使用GitLab CI(docker)使用CentOS镜像的示例(GitLab CI入门)

以下是介绍如何在GitLab CI(docker)中使用CentOS镜像的.gitlab-ci.yml。对于已经在Circle CI(circle.yml)或Travis CI(.travis.yml)中使用Docker容器进行构建的人来说,这几乎没有什么不适之处。

子: “嗨,你怎么样?”
母: “我很好,谢谢。你呢?”
子: “我也很好,谢谢。今天天气怎么样?”
母: “天气很好,阳光明媚。你有什么计划吗?”
子: “我想出去跟朋友一起玩。你呢?”
母: “我打算去购物。享受你的时光吧!”
子: “谢谢,你也享受购物吧!”

before_script:
  - /bin/echo Testing... CentOS 6.6 x MySQL 5.6.17
  - /bin/echo Testing... CentOS 7 latest x MySQL 5.7 latest
variables:
  MYSQL_ROOT_PASSWORD: "1iEkou9luj4Etrie"

test:centos6xmysql56:
  image: centos:6.6
  services:
  - mysql:5.6.17
  script:
  - rpm -q centos-release
  - yum install -y mysql
  - mysql --version
  - mysql -h mysql -u root -p${MYSQL_ROOT_PASSWORD} -e 'SELECT VERSION()'

test:centos7xmysql57:
  image: centos:7
  services:
  - mysql:5.7
  script:
  - rpm -q centos-release
  - yum install -y mysql
  - mysql --version
  - mysql -h mysql -u root -p${MYSQL_ROOT_PASSWORD} -e 'SELECT VERSION()'

詳細說明

虽然基本上不需要解释,但让不了解Docker链接的人容易陷入困境的一点是。

从本体容器连接到数据库容器

  - mysql -h mysql -u root -p${MYSQL_ROOT_PASSWORD} -e 'SELECT VERSION()'

-h mysql 的 mysql 是主机名。GitLab CI runner 通过Docker的功能进行链接,因此需要指定此主机名。

主机名的规则将根据在services中指定的镜像名称确定。但是,需要(1)之后的部分被移除,(2) 将 /(斜线)替换为 __(两个下划线)。这意味着无法同时使用 mysql:5.6 和 mysql:5.7 的服务。可以通过编写多个job来解决这个问题。

  services:
  - mysql:5.7

服务的别名主机名是根据以下规则从图像名称生成的:

冒号后的所有内容被去掉
斜杠(/)被替换为双下划线(__)

通过使用Docker镜像- GitLab文档

变量

虽然在CI中,使用MYSQL_ALLOW_EMPTY_PASSWORD(允许无密码登录)就足够了,但这次我选择了指定一个随机密码。

variables:
  MYSQL_ROOT_PASSWORD: "1iEkou9luj4Etrie"

结果 (jié guǒ)

根据CentOS官方Docker Hub仓库提供的信息,最新版本的CentOS是CentOS 7 (1511)。我们将使用从2016-02-17构建的映像。尽管它被标记为CentOS 7.2 (1511)的发布版本,但实际上可能包含了一些软件包的更新。

$ rpm -q centos-release
centos-release-7-2.1511.el7.centos.2.10.x86_64
$ yum install -y mysql
[...]
$ mysql --version
mysql  Ver 15.1 Distrib 5.5.44-MariaDB, for Linux (x86_64) using readline 5.1
$ mysql -h mysql -u root -p${MYSQL_ROOT_PASSWORD} -e 'SELECT VERSION()'
VERSION()
5.6.29

如果不使用缓存,构建所需时间为27秒。

建设进展(2017年6月21日更新)

因为我们正在GitLab.com上执行每晚的tnir/centos-for-ci构建,所以您可以查看情况。

总结

我认为使用Circle CI或wercker也可以,但是考虑到每增加一个新成员都需要麻烦的协同注册过程,选择GitLab CI (docker)更便捷方便,因为它是默认功能,可以更轻松地开始使用CI。

另外,相对于商用产品而言,UI/UX还有很大的提升空间,我对即将发布的GitLab 8.6 CI Features有所期待(发布日期为2016年3月22日)。

bannerAds