에서 CentOS 이미지 사용 예(GitLab CI 시작).png)
GitLab CI(docker)에서 CentOS 이미지 사용 예(GitLab CI 시작)
GitLab CI (docker)에서 CentOS 이미지를 사용하는
기본적으로 설명하는 곳은 없지만, Docker의 링크를 이해하고 있지 않는 사람이 맞을 것 같은 곳을 조금.
호스트명의 규칙은
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에서는
CentOS의 최신 버전은 CentOS 7 (1511) Docker Hub official repository for centos 에서 제공되는 대로 2016-02-17의 빌드 이미지에서 를 사용하게 됩니다. 릴리스 버전으로는
캐시를 사용하지 않는 경우의 빌드 소요 시간은 27초.
나이트리 빌드를 tnir/centos-for-ci on GitLab.com에서 실행하고 있으므로 상황을 확인할 수 있습니다.
Circle CI나 wercker에서도 좋다고 생각하지만, 새로운 멤버가 늘어날 때마다 제휴 등록이 귀찮은 것을 생각하면, GitLab CI(docker)는 디폴트 기능이기 때문에, 보다 간편하게 CI를 개시할 수 있어 편리.
그리고, UI/UX는 상용 제품과 비교하면 아직이므로, 2016/3/22에 릴리스되는 GitLab 8.6 CI Features 에 기대하고 있다.
.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 mysql
의 mysql
는 호스트 이름입니다. GitLab CI runner 측이 Docker 기능으로 링크되어 있으므로 이 호스트 이름을 지정합니다.호스트명의 규칙은
services
로 지정한 이미지명이 됩니다. 다만, (1) :
이후는 제거, (2) /
(슬래시)를 __
(즉, mysql:5.6
와 mysql: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 에 기대하고 있다.