centos 7 환경으로
docker gitlab runner install 설치 방법
우선
# yum upgrade -y
재부팅
repo 다운
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-re
# service docker start
# chkconfig docker on
# service firewalld stop(나중에 방화벽 설정은 알아서..)
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
뜨면 정상적으로 docker 구동 완료
gitlab 다운
# docker pull gitlab/gitlab-ce
Using default tag: latest
latest: Pulling from gitlab/gitlab-ce
be8ec4e48d7f: Pull complete
33b8b485aff0: Pull complete
d887158cc58c: Pull complete
05895bb28c18: Pull complete
d087767c5809: Pull complete
c284fd34cd1f: Pull complete
014593a9c3e6: Pull complete
29e764d94999: Pull complete
5a49ddc0561a: Pull complete
3180f7b26cb7: Pull complete
Digest: sha256:043914aedb3c155a3d0743a85125fb1407022efd834ac6f2a97f27f9948b669e
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
이러면 끝
이미지 확인은
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce latest 033bcfa1b036 4 days ago 2.09GB
그럼 구동 시작을 해보자.
# docker run --detach \
> --hostname 192.168.0.11 \
> --publish 443:443 --publish 80:80 --publish 22:22 \
> --name gitlab \
> --restart always \
> --volume /work/gitlab/config:/etc/gitlab \
> --volume /work/gitlab/logs:/var/log/gitlab \
> --volume /work/gitlab/data:/var/opt/gitlab \
> gitlab/gitlab-ce:latest
0a262e497cfae1b960d5704b2909115864ca256a4676cfbb48710800fd5ac128
docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (089cbddabf459e0bddae447e8be9af4644f8e622e2edd6032e8abe3f5e7b200a): Err or starting userland proxy: listen tcp4 0.0.0.0:22: bind: address already in use.
포트 문제 발생 했다 22포트 변경해주자.
하지만 먼저 contatiner 가 생성 되었기 때문에 삭제 하고 다시 만들어야 한다.
우선 구동 멈추고.
# docker stop gitlab(생성때 이름
)
CONTAINER ID 를 알아야 함으로
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e41576646fec gitlab/gitlab-ce:latest "/assets/wrapper" 50 seconds ago Created gitlab
# docker rm e41576646fec
이제 다시 만들자.
# docker run --detach \
> --hostname 192.168.0.11 \
> --publish 443:443 --publish 80:80 --publish 222:22 \
> --name gitlab \
> --restart always \
> --volume /work/gitlab/config:/etc/gitlab \
> --volume /work/gitlab/logs:/var/log/gitlab \
> --volume /work/gitlab/data:/var/opt/gitlab \
> gitlab/gitlab-ce:latest
0a262e497cfae1b960d5704b2909115864ca256a4676cfbb48710800fd5ac128
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e40a00378698 gitlab/gitlab-ce:latest "/assets/wrapper" 6 seconds ago Up 5 seconds (health: starting) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:222->22/tcp gitlab
starting 하고 있다.
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e40a00378698 gitlab/gitlab-ce:latest "/assets/wrapper" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:222->22/tcp gitlab
2분후에 보면 healthy 상태다 이상태에서 브라우저 열고 접속 하면 gitlab 이 정상 구동 된다.
이미지 장비에 들어 가고 싶다면
# docker exec -it gitlab /bin/bash
장비로 들어가서 세부적으로 셋팅을 더 할 수 있다.
데이터 복사는
# docker cp /path/file gitlab:/tmp/
반대로 복사는
# docker gitlab:/tmp/file /tmp/
gitlab 환경 설정 수정은
# docker exec -it gitlab vi /etc/gitlab/gitlab.rb
에서 수정하고
# docker exec -it gitlab gitlab-ctl reconfigure
https://algo79.tistory.com/entry/gitlab-ssl-%EC%A0%81%EC%9A%A9
ssl 적용은 링크에 있는 파일 및 환경 수정 해주면 된다.
이렇게 하면 gitlab 이 정상 작동 된다.
http://localhost 로 접속 하면 gitlab 이 접속이 된다.
runner 테스트를 하기 위해서 new project 를 생성
import project 클릭
Repo by URL 클릭
URL 에다가
https://github.com/do-community/hello_hapi.git
입력 및 프로젝트 생성
예제 프로젝트가 생성 된다.
이제 테스트로 파일 하나 생성 해보자.
파일 생성 해서 올리자.
pipeline 에 가보면 pending 되어 있다 pending 을 눌러보자
install_dependencies - pending 을 눌러보자
pending 된 이유가 있다. runner 를 구동해주자.
우선 register 를 먼저 등록을 해주자.
runner 정보는
Project - setting - CI / CD 클릭
정보가 있다.
# docker run --rm -it -v /work/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
URL : 사이트 주소 입력
token : 위 사이트에 보이는 token 입력
description : 엔터 혹은 알아서 입력
tags : 엔터 혹은 알아서 입력
executor : docker
default docker image : alpine:latest
를 입력 하면
runner 생성 된다.
CI / CD pipelines 들어가보면
running 으로 변경 되어있고.
다 끝나면 passed 로 뜬다.
정상적으로 작동이 안될때는 SSL 미 적용 상태에서 테스트 해보자.