본문 바로가기

DevOps와 CI CD

Jenkins를 이용한 CI/CD Pipeline 구축 (2) Jenkins 소개 및 설치 그리고 환경설정

1. Jenkins 소개

jenkins는 CI/CD 작업을 파이프 라인 (자동화) 또는 워크 플로우를 설계하는데 사용되는 도구

보통 CI 작업들을 위주로 jenkins을 사용하지만 CD쪽도 사용 가능!

- 장점 : 많이 사용되어 수많은 PlugIn들이 많아 연동 옵션이 많음!

  - Build Plugins : Maven, Ant, Gradle ...

  - VCS Plugins : Git, SVN ...

  - Languages Plugins : Java, Python, Node.js...

- 단점 :

(1) JiRa, 레드마인 과 같은 이슈 트래킹을 해주는 SW와의 연동성은 떨어짐

(2) Jenkins만의 고유한 문법 체계인 DSL (Domain Specific Language)을 이용해서 파이프라인 스크립트를 작성해야함

 

 

추후 도커에다가 Jenkins를 배포하려함

 

2. Jenkins 설치 및 설정

(0) Jenkins 다운로드 (https://www.jenkins.io/download/)

 

Jenkins는 Java 웹 어플리케이션으로 구성이 되어 있어 war 파일확장자로도 지원이 됨

우리는 docker 컨테이너에서 Jenkins를 실행 시킬 것이기 때문에 Docker를 클릭하여 cmd 창에 도커 설치 명령어를 실행

- 설정

- 참고 : 볼륨 옵션 (-v) : 도커가 설치 되어있는 pc의 디렉토리와 도커 내부의 디렉토리를 연결하는 (마운트) 설정 옵션

이걸 해줘야 도커 내부에서 실행되면서 생성되는 파일들을 외부에서 보관할 수 있음, 그래야 도커가 삭제되어도 파일들을 보관 할 수있음 

 

 

(1) jenkins 이미지 생성 (이 이미지에는 jdk가 포함되어 있음)

docker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --restart=on-failure --name jenkins-server jenkins/jenkins:lts-jdk11


docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11

(2) 잘 생성 되었나 확인

 

 

 

(3) 초기 패스워드 확인

cmd에 아래 명령어 입력

docker logs 도커ID 또는 컨테이너ID

 

도커 Jenkins를 컨테이너 형태로 기동을 시켰으니 한번 이제 설정 작업을 하면 됨

Jenkins를 도커 형태로 실행을 했을 때 콘솔 로그에서는 초기 패스워드를 확인 할 수 있음

(4) Jenkins를 도커 형태로 실행하기 (Jenkins 이미지를 실행하여 Jenkins 관리자 모드 접속하기)

http://나의IP주소:포트번호 (jenkins 이미지 파일을 생성할 때, 8080으로 포트 번호를 설정함)

Ex) http://localhost:8080/

 

 

(5) 플러그인 설치

 

(6) 관리자 로그인 (처음 jenkins 접속 하면 admin 계정 생성해야함)

 

(7) Jenkins에서 환경 설정 - jenkins 관리

jdk 설치 또는 경로 설정 (jenkins는 자바 어플리케이션이여서 jdk를 설치해줘야함)을 해야함

하지만 내가 실행하는 jenkins 이미지는 jdk가 포함되어 있기 때문에 따로 설정을 안해도 됨 

여기까지 jenkins 이미지를 실행시키고 환경 설정까지 끝!

아래부터는 프로젝트를 생성하는 과정

(8) item 생성과 설정

소스코드는 어디서 가져올지, 빌드는 어떤 이벤트 조건에서 진행하는지, 빌드 후 조치는 어떻게 할지에 대한 설정 가능

지금은 여기서 빌드 스탭 설정에서 Execute shell 선택

(우리가 현재 사용하고 있는 Jenkins는 Linux에 설치가 되어 있다라고 볼 수 있음, 그러므로 설정한 Shell 스크립트를 실행하는 환경은 Linux의 Shell 스크립트임)

 

 

 

※ 참고 : Official Jenkins Docker image 메뉴얼 https://github.com/jenkinsci/docker/blob/master/README.md

 

 

(9) 빌드 실행

생성한 프로젝트를 클릭하면 아래 왼쪽 그림과 같은 UI 가 있음

지금 빌드를 클릭해서 (8)에서 입력한 문장이 출력되나 확인할 수 있음

 

 

(10) CLI에서 jenkins 이미지 실행해보기 (도커 터널링)

docker exec -it 컨테이너ID 또는 컨테이너 이름 bash

//사용할 shell 스크립트로 bash를 선택함

도커 터널링을 이용해서 프로젝트의 워크 스페이스 디렉토리에 들어가면

빌드, 테스트, 패키지 후 나오는 로그와 같은 산출물 파일들이 있음!

 

 

 


3. 연관 tool 설치 및 환경설정

 

(1) Docker Desktop 설치

- 가상화 사용여부 설정을 사용으로 해야함

도커를 실행했을 때, WSL 2 인스톨이 안되어있다는 에러가 뜬다면 이를 설치해야함

그리고

 

참고 사항!

윈도우즈 사용자가 윈도우즈 도커 컨테이너를 실행하고 싶다면 아래 설정을 하면 됨

아래 그림처럼 switch to windows containers 설정 클릭 → 윈도우즈에서 윈도우즈로 만들어져 있는 도커 컨테이너를 실행 할 수 있음

(현재 윈도우즈에서 우리가 사용하고 있는 도커 컨테이너가 리눅스 컨테이너를 실행할 수 있는 환경

즉 윈도우즈 위에 도커 컨테이너로서 윈도우를 띄우겠다는 이야기 그러려면 우리 도커 컨테이너가 윈도우즈 기반의 컨테이너가 되어야함

)

도커 설정 중 switch to windows containers 클릭

 

(2) git 설치

 

(3) Tomcat 서버 설치

https://tomcat.apache.org/download-90.cgi

9버전을 다운로드, 그리고 윈도우 설치 파일이 아닌 압축 파일을 다운로드 (리눅스 또는 MAC OS에서는 압축 파일을 풀어서 커맨드를 이용하여 설치해야함)

압축 해제하고 따로 디렉토리를 만들어서

cmd를 통해서 접속 후 아래 명령어로 톰캣 실행!

.\bin\startup.bat //톰캣 실행

.\bin\shutdown.bat //톰캣 종료

톰캣이 자바 기반으로 만들어진 어플리케이션이여서 실행하려면 JDK를 설치해야함

 

톰캣 서버를 설치 후, 어플리케이션을 스크립트 형태로 실행할 수 있도록 하려면 톰캣의 사용자 계정 및 권한을 수정해야함

이작업은 conf (각종 설정하는 폴더, ex 포트 번호), webapps (톰캣이 관리하는 웹어플리케이션이 있는 폴더 ex ) 에서 진행

 

그리고 톰캣을 사용하기 전에 추가로 (1) 접속 포트, (2) 유저, (3) 접근 엑세스 관련 설정을해줘야함

Tomcat 설정 변경
포트 변경 : %TOMCAT_HOME%\conf\server.xml

 


접근 엑세스 변경 - 2개의 폴더 안에 있는 context.xml 파일 모두 수정해야함
%TOMCAT_HOME%\webapps\manager\META-INF\context.xml

%TOMCAT_HOME%\webapps\host-manager\META-INF\context.xml 

빨간색 부분이 원래 주석 처리 안되었는데 주석처리하면 모든 ip주소에서 접속 가능하게 설정한것

유저 추가
%TOMCAT_HOME%\conf\tomcat-users.xml

왼쪽 - 기본설정 / 오른쪽 - 유저와 권한을 설정함, jenkins에서 만든 계정 관련된 설정을 추가함

 

 

 

 

 

(4) SSH 서버 설치 (도커를 이용해서 사용할 수 있는 몇가지 컨테이너중 하나로 설치)

도커 hub에 등록된 공유 ssh 서버 이미지를 (edowon0623/docker)  다운로드, 다운로드 방법은 cmd에서 pull 명령어 실행

다운받은 이미지는 docker images 로 확인 가능

그다음 도커 이미지 실행 명령어 실행

docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup edowon0623/docker:latest /usr/sbin/init

//이미지 이름은 docker-server
//포트 정보는 10022:22 , 8081:8080

 

그 뒤 컨테이너에 SSH로 접속

ssh root@localhost -p 10022
// 비밀번호는 : P@ssw0rd

접속 후, 컨테이너 상태를 보면 (systemctl status docker) 아직 inactive

그래서 enable 후, start 

systemctl status docker
systemctl enable docker
systemctl start docker

근데 권한 문제 때문에 아래처럼 에러가 떴음

권한 설정을 해줘야하는데

지금 이 이미지는 도커 위 리눅스 환경에서 실행되므로

vi 편집기를 이용해서 권한 설정 부분을 편집해줘야함

 

 

도커 실행을 위한 설정 변경

$ vi /etc/sysconfig/docker
$ yum install -y iptables net-tools
$ sed -i -e 's/overlay2/vfs/g' /etc/sysconfig/docker-storage
$ systemctl start docker

 

 

 

클라우드 타입? ()

 

 

(5) 자바 설치

open jdk 18버전 설치 후,

jdk 폴더가 있는 위치를 복사하여 환경변수에 추가하고

환경 변수의 PATH에 JAVA_HOME 항목을 추가

 

 

참고

https://github.com/joneconsulting/cicd-web-project

 

GitHub - joneconsulting/cicd-web-project: Hello World project for CI/CD demo

Hello World project for CI/CD demo. Contribute to joneconsulting/cicd-web-project development by creating an account on GitHub.

github.com

https://github.com/joneconsulting/jenkins_pipeline_script

 

GitHub - joneconsulting/jenkins_pipeline_script

Contribute to joneconsulting/jenkins_pipeline_script development by creating an account on GitHub.

github.com