일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- c3 second
- c++ 정규식
- c3 step graph
- InfluxDB
- CentOS7
- semanage
- gcc regex
- subporcess path
- c3 초
- selinux port 등록
- telegraf
- g++ 업데이트
- 정규식 활용
- gcc 업데이트
- c3 축 가리기
- 백준
- snmp
- python popen
- c3 축 없애기
- linux시간으로 변경
- regex_search
- grafana dashboard
- 정규식 문자열 출력
- influxdb 설치
- 1697
- snmp test
- centos pyhon 설치
- python os
- 정규식 컴파일
- python subprocess
- Today
- Total
리셋 되지 말자
[Jenkins] Jenkins GitLab 연동(2) Jenkins 설치 및 Jenkins 설정 본문
참고 사이트
https://miiingo.tistory.com/170?category=670534
감사합니다!
Jenkins version : 2.281
시스템 구성
CentOS 7 서버의 Docker에 Jenkins를 설치하고 설정한다.
포트포워딩
Jenkins : iptime 공유기 -> 23003:8080, Jenkins 컨테이너 -> 8080:8080
Jenkins 설치
- jenkins 컨테이너 실행
[root@localhost ~]# docker run -v /var/run/docker.sock:/var/run/docker.sock -v /srv/jenkins/home:/var/jenkins_home -p 8080:8080 --
name=jenkins jenkins/jenkins
jenkins가 설치되는 호스트인 CentOS 7의 docker엔지의 소켓을 열어서 jenkins 컨테이너 내부에서도 도커가 사용 가능하도록 한다.
[error]
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions? touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
위처럼 Permission 에러가 발생하면, /srv/jenkins/home의 퍼미션을 jenkins 유저가 접근할 수 있도록 권한 설정을 잡아준다.
- /srv/jenkins/home 권한 설정
[root@localhost ~]# sudo chown -R 1000:1000 /srv/jenkins/home/
- 기존의 jenkins 컨테이너 삭제 후 재실행
[root@localhost ~]# docker rm jenkins
jenkins
[root@localhost ~]# docker run -v /var/run/docker.sock:/var/run/docker.sock -v /srv/jenkins/home:/var/jenkins_home -p 8080:8080 --name=jenkins jenkins/jenkins
젠킨스 설치가 되면 아래그림과 같은 로그가 출력되는 것을 확인할 수 있다.
'904135333e0e46beb885355b7a3c995c'로 확인되는 password를 복사 또는 저장해둔다.
- jenkins 페이지 접속
접속하면 위와같은 화면을 확인할 수 있고, 저장해 두었던 password를 입력하고 'Continue'버튼으로 진행한다.
좌측의 'Install suggested plugins'를 선택하여 플러그인 설치를 진행한다.
플러그인들이 설치되는걸 확인할 수 있다.
??? Git은 깔려야 되는데....;; -> 다행히 Retry 후에 다행이 전부 설치 되었음!
설치가 다 되면 Admin User 생성을 할 수 있다. 적당히 안까먹게 적어준다. 이메일 주소는 SMTP로 빌드알림을 메일로 받거나 할게 아니면 이상하게(admin@co.kr) 적어도 상관없다.
URL이 맞게 출력되는지 확인한다.
젠킨스를 본격적으로 실행한다.
젠킨스 대시보드를 확인할 수 있다.
원격 접속 터미널을 끄면, 젠킨스 컨테이너가 꺼질 수 있습니다. 그러면
docker start jenkins 명령어로 컨테이너를 재실행 해줍니다.
Jenkins 추가 설정 - 1. docker binary 설치
- jenkins 컨테이너에 root 계정으로 접속
[root@localhost ~]# docker exec -it -u 0 jenkins bash
root@61ad9260759a:/#
젠킨스는 -u 0 옵션 없이 접속하게 되면 기본적으로 생성되는 'jenkins' 계정으로 접속하게 된다.
- docker binary 설치
(download.docker.com/linux/static/stable/x86_64/)
위 링크에서 설치 가능한 버전을 확인한 뒤 wget으로 다운로드 한다.(여기서는 18.06.3-ce 버전을 설치
root@61ad9260759a:/# cd ~
root@61ad9260759a:~# wget https://download.docker.com/linux/static/stable/x86_64/docker-18.06.3-ce.tgz
- tar로 압축해제
root@61ad9260759a:~# tar xvfz docker-18.06.3-ce.tgz
docker/
docker/docker-containerd
docker/docker-proxy
docker/docker
docker/docker-runc
docker/dockerd
docker/docker-containerd-ctr
docker/docker-containerd-shim
docker/docker-init
- docker 파일을 /usr/bin/으로 복사 및 컨테이너 접속 종료
root@61ad9260759a:~# cp ./docker/docker /usr/bin/
root@61ad9260759a:~# exit
exit
접속 종료라고 해서 컨테이너 자체가 종료되는게 아니다.
- jenkins 계정으로 접속 후 권한 문제 확인
[root@localhost ~]# docker exec -it jenkins bash
jenkins@61ad9260759a:/$ docker --version
Docker version 18.06.3-ce, build d7080c1
jenkins@61ad9260759a:/$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.38/containers/json: dial unix /var/run/docker.sock: connect: permission denied
-u 0 옵션 없이 로그인하면 위와 같이 jenkins 계정으로 로그인이 된다. 이 상태에서 'docker ps' 등의 명령어를 사용하면 Permission denied가 된다. exit로 컨테이너 접속을 종료한다.
Jenkins 추가 설정 - 2. Permission 설정
- CentOS 7 서버(호스트)의 docker gid 확인
도커 컨테이너 내부에서 Jenkins는 jenkins 유저로 실행됩니다. 이제 jenkins 유저가 docker.sock에 접근할 수 있도록 퍼미션을 잡아줘야 합니다.
먼저 docker.sock파일은 host 에서 root유저와 docker 그룹으로 owner가 설정되어 있습니다. jenkins가 docker.sock파일에 접근하기 위해서는 docker group에 포함시켜 줘야 합니다.
우선 호스트에서 docker group의 gid를 확인해보겠습니다.
https://miiingo.tistory.com/170?category=670534
[root@localhost ~]# cat /etc/group | grep docker
docker:x:995:
그룹 아이디인 995를 확인한다.
- 그룹 생성 및 추가
# root 계정으로 jenkins 컨테이너에 접속
[root@localhost ~]# docker exec -it -u 0 jenkins bash
# 호스트의 docker 그룹의 아이디로 docker 그룹을 추가
root@61ad9260759a:/# groupadd -g 995 docker
# docker 그룹이 잘 추가되었는지 확인
root@61ad9260759a:/# cat /etc/group | grep docker
docker:x:995:
# docker 그룹에 jenkins 계정을 추가
root@61ad9260759a:/# usermod -aG docker jenkins
# 컨테이너 접속 종료
root@61ad9260759a:/# exit
exit
- jenkins 컨테이저 재실행
[root@localhost ~]# docker restart jenkins
- jenkins 계정으로 로그인 뒤 docker 명령어 실행 가능여부 확인
[root@localhost ~]# docker exec -it jenkins bash
jenkins@61ad9260759a:/$ docker ps
CONTAINER ID IMAGE COMMAND
CREATED STATUS PORTS
NAMES
61ad9260759a jenkins/jenkins "/sbin/tini -- /usr/…" About an hour ago Up 21 minutes 0.0.0.0:8080->8080/tcp, 50000/tcp jenkins
921b45822674 gitlab/gitlab-ce:latest "/assets/wrapper" 2 hours ago Up 2 hours (healthy) 0.0.0.0:22->22/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:9090->80/tcp gitla
# 컨테이너 접속 종료
jenkins@61ad9260759a:/$ exit
exit
Permission denied가 생기지 않는다.
'CI CD' 카테고리의 다른 글
[Jenkins] Jenkins GitLab 연동(5) Jenkins 설정 및 빌드 테스트 (0) | 2021.02.24 |
---|---|
[Jenkins] Jenkins GitLab 연동(4) Jenkins와 GitLab 연동-2 (0) | 2021.02.24 |
[Jenkins] Jenkins GitLab 연동(3) Jenkins와 GitLab 연동-1 (0) | 2021.02.24 |
[Jenkins] Jenkins GitLab 연동(1) Docker 설치, GitLab 설치 (0) | 2021.02.24 |
[Jenkins] 로컬 gitlab Jenkins 연동 (0) | 2021.02.24 |