CI/CD 란?
CI 는 지속적인 통합(Continuous Integration)을 의미한다. 개발자들이 어플리케이션에 코드를 merge 하기 위해서는 변경 사항들이 어플리케이션에 에러를 발생시키지 않도록 반복적인 작업을 통해 확인을 해야 한다. 이는 시간을 소모하게 되면서 여러 개발자들이 같이 일을 하면서 코드 상의 conflict 이 발생할 가능성이 생기는데, 변경사항에 대해 테스트할 것들을 자동화 함으로써 신규 코드의 버그를 빠르게 발견하고 효율적으로 수정할 수 있게 도와 주는 툴을 CI 툴 이라고 표현한다.
CD 는 지속적인 서비스 제공(Continuous Delivery)와 지속적인 배포(Continuous Deployment)를 의미한다. Continuous Delivery은 배포팀에게 코드 릴리즈가 자동화 되는 것을 의미하며, Continuous Deployment은 변경사항을 반영한 후 자동으로 어플리케이션을 실행할 수 있는 것을 의미한다.
JenKin? (젠킨스란?)
젠킨스는 개발 작업을 지원하기 위해 1400가지의 플러그인을 가지고 있는 오픈소스 자동화 서버이다. 자동화 테스트, 프로파일링 툴을 이용한 성능 변화 감시 등 여러가지 기능들을 제공하고, 여러 모듈을 사용하여 참조관계가 있는 layer들을 빌드할 때 파이프라인을 사용하여 구성을 간단히 할 수 있다. 모든 언어의 지속적인 통합과 지속적인 전달 환경을 구축하기 위한 방법을 제공한다.
Task 설명
1. 젠킨스 도커 컨테이너 설치
2. github 프로젝트 연결
3. shell 실행
1. 젠킨스 도커 컨테이너 설치
Kitematic을 실행해주면 컨테이너들이 보이는데 jenkins 컨테이너의 CREATE 버튼을 눌러 설치해 준다.
설치가 다 되면 아래의 그림처럼 RUNNING 중인 것을 확인 할 수 있다.
> docker ps -a
위의 명령어를 터미널에 실행시켜보면 실행중인 컨테이너를 볼 수 있는데 아래와 같이 컨테이너의 8080 포트가 32769 포트로 연결된 것을 확인 할 수 있다. ( 참고로 나같은 경우에는 window home edition 이라 Docker ToolBox 를 사용해서 컨테이너를 실행하기 때문에 Vmware 의 localhost ip 인 http://192.168.99.100/ 로 jenkins 가 시작되엇다.)
오른쪽 위의 WEB Preview 를 클릭해보면 젠킨스 웹 브라우져로 바로 접근할 수 있다.
웹브라우져로 가면 아래와 같이 Admin Password 를 입력하라는 화면을 만나게 된다. 친절하게 위치가 써져 있는데 젠킨스 컨테이너의 터미널를 실행 해서 비밀번호를 복사해서 붙여 넣어주면된다.
jenkins의 터미널에 접속하기 위해서는 아래의 명령어를 실행시켜 주면 되는데 -it 옵션은 STDIN 표준 입출력을 열고 가상으로 접속하겠다는 의미 이다.
> docker exec -it jenkins /bin/bash
터미널을 실행한 후 cat 명령어를 통해 Password 를 출력해보자.
> cat /var/jenkins_home/secrets/initialAdminPassword
위와 같이 key 값이 나오는데 복사해서 붙여 넣고 continue 를 누르면 jenkin에 접속하면서 아래의 화면을 만날 수 있다. 기본적인 플러그인을 설치해주는 왼쪽 옵션을 선택해서 기본적인 것들을 설치해준다. 나는 모두 실
이제 젠킨스 설치가 끝났다.
참고 : Jenkins 업데이트
현재 Jenkins 컨테이너는 2.60.3 으로 더이상 업데이트가 없다. 그래서 아래와 같이 버전이 낮아 Plugin 들이 받아지지 않아서 난장판인 것을 볼 수 있다. 이를 해결해 주기 위해서 Jenkins를 업데이트 해주어야 한다.
1. root 권한으로 컨테이너 진입
> docker exec -it -u 0 jenkins /bin/bash
docker 컨테이너에 root 권한으로 터미널을 실행 시킨다 -u 0 옵션은 루트 권환을 획득 한다.
> cd /tmp
> wget ${jenkins download url}
tmp folder 에 wget 명령어를 통해 jenkins war 파일을 다운 받는다. 난 현재 최신버젼인 2.222.3 을 받았다.
> mv ./jenkins.war /usr/share/jenkins
> chown jenkins:jenkins /usr/share/jenkins/jenkins.war
다운받은 jenkins.war 로 교체를 해주고 권한을 바꿔 준다.
>exit
docker restart "jenkins"
컨테이너에서 나온 후 컨테이너를 재실행 시켜준다.
About Jenkins 에 들어가면 Jenkins 가 업데이트 된 것을 볼 수 있다.
생각보다 여러가지에서 막혀서 힘들었다.
다음 포스팅에는 git 과 연동 하여 배포 후 자동으로 작업을 하고 release 까지 하는 내용을 작성하겠다.
다음 포스팅 - git, jenkins 연동
출처 : https://www.redhat.com/ko/topics/devops/what-is-ci-cd
'유용한 팁' 카테고리의 다른 글
Docker를 활용한 Jenkins github CI/CD 파이프라인 구축 예제 ~ 2 (file 압축 및 github push) (0) | 2020.05.25 |
---|---|
티스토리 코드 입력 방법, 코드블럭, 코드 highlight, LineNumber 추가 (2) | 2019.09.18 |