GitLab CI(docker)에서 CentOS 이미지 사용 예(GitLab CI 시작)

GitLab CI(docker)에서 CentOS 이미지 사용 예(GitLab CI 시작)

2022-10-04 last update

5 minutes reading CentOS GitLab-CI GitLab
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의 링크를 이해하고 있지 않는 사람이 맞을 것 같은 곳을 조금.

본체 컨테이너에서 DB 컨테이너로 연결


  - mysql -h mysql -u root -p${MYSQL_ROOT_PASSWORD} -e 'SELECT VERSION()'
-h mysqlmysql는 호스트 이름입니다. GitLab CI runner 측이 Docker 기능으로 링크되어 있으므로 이 호스트 이름을 지정합니다.

호스트명의 규칙은 services 로 지정한 이미지명이 됩니다. 다만, (1) : 이후는 제거, (2) / (슬래시)를 __ (즉, mysql:5.6mysql:5.7 의 서비스를 동시에 사용할 수 없다는 것.job를 복수 쓰는 것으로 대응하면 좋을 것입니다.)
  services:
  - mysql:5.7

The alias hostname for the service is made from the image name following these rules:

Everything after : is stripped
슬래시 (/) is replaced with double underscores (__)

via Using Docker Images - GitLab Documentation

변수



CI에서는 MYSQL_ALLOW_EMPTY_PASSWORD (비밀번호 없음 로그인 가능)이면 충분하지만 이번에는 무작위 암호를 지정해 보았습니다.
variables:
  MYSQL_ROOT_PASSWORD: "1iEkou9luj4Etrie"

결과



CentOS의 최신 버전은 CentOS 7 (1511) Docker Hub official repository for centos 에서 제공되는 대로 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-06-21 추가)



나이트리 빌드를 tnir/centos-for-ci on GitLab.com에서 실행하고 있으므로 상황을 확인할 수 있습니다.

요약



Circle CI나 wercker에서도 좋다고 생각하지만, 새로운 멤버가 늘어날 때마다 제휴 등록이 귀찮은 것을 생각하면, GitLab CI(docker)는 디폴트 기능이기 때문에, 보다 간편하게 CI를 개시할 수 있어 편리.

그리고, UI/UX는 상용 제품과 비교하면 아직이므로, 2016/3/22에 릴리스되는 GitLab 8.6 CI Features 에 기대하고 있다.