본문 바로가기
AyoProject/DevOps

[DevOps] 5. jenkins connect with GitHub (1)

by 청양호박이 2022. 4. 6.

이번에는 jenkins에 대해서 알아보고 설치를 해보겠습니다. 설치가 되면 앞에서 GitHub와 연동한 repository에 대해서 jenkins로 빌드 및 배포를 구현해 보겠습니다. 우선 jenkins란 무엇인지에 대해서 위키백과를 통해서 알아보겠습니다.

 

젠킨스는 소프트웨어 개발 시 지속적 통합 서비스를 제공하는 툴이다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유 영역에 있는 Git등의 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해 준다. MIT 라이선스를 따른다.
- 위키백과 -

 

여러사람이 공동으로 개발을 진행할때, 소스는 Git / GitHub / SVN등의 툴을 사용한다고 말씀드렸습니다. 이 소스들을 지속적으로 합쳐서 jar로 빌드하고 원하는 서버에 배포까지 하는 작업이 빈번하게 발생하는데 이때 도움을 주는 툴이 바로 jenkins입니다.

그렇다면 jenkins를 설치하는 방법에 대해서 알아보겠습니다. 우리는 최초에 서버에 docker를 구성했기 때문에 docker image를 통해서 jenkins를 구동해 보도록 하겠습니다. 

 

 

1. jenkins image download


wsl Ubuntu server에서 docker image를 pull 해줍니다. 현재 docker의 repository는 수정없이 global로 되어있기때문에 알아서 찾아서 다운로드 해줍니다.

$ sudo docker pull jenkins/jenkins:lts

모든 항목에 대해서 Pull complete이 되면 다운로드는 완료된 것 입니다. 이제 해당 image가 정상적으로 저장되었는지 확인해 보면... 정상적으로 보임을 확인할 수 있습니다.

$ sudo docker images

 

 

2. jenkins container 생성 후 시작


docker명령어 중 run을 통해서 컨테이너 생성 후 시작할 수 있습니다. 이때 jenkins에서 사용할 폴더를 하나 생성해 줍니다. 저는 /APP/pkgs 밑에 생성하여 모든 패키지는 이곳에 구성할 예정입니다. 최초에만 run을 사용하고 container가 생성이 됬다면 이후는 start로 실행해 주면 됩니다.

$ docker run -d --name jenkins -p 8081:8080 -v /APP/pkgs/jenkins:/var/jenkins_home jenkins/jenkins:lts

옵션은 -d : 백그라운드 실행 / --name 이미지 이름설정 / -p 바인딩 포트 설정 (host사용 : docker사용) 을 적용해 줍니다. 마지막으로 이번에 처음 적용하는 -v를 설정합니다.

-v 옵션에 대해서 자세히 알아보면, docker host와 docker container내 디렉토리를 매핑해 주는 역할을 합니다. 기존에 알아본 -p와 동일하다고 생각하면 되겠습니다. 만약 해당 옵션을 사용하지 않는다면, container의 재기동 시 기존 정보가 모두 사라지게 됩니다. 따라서 서버의 재기동 등으로 다시 jenkins container를 재시작 해야 한다면, 기존에 작업한 것들이 날아가게 됩니다.

-v [docker host dir]:[docker container dir]

docker ps를 통해서 현재 떠 있는 docker image를 확인해 보면 정상적으로 떠있음을 확인 할 수 있습니다. 그리고 매핑한 폴더로 들어가보면, 관련된 많은 파일이 보여짐을 역시나 확인 가능합니다.

마지막으로 해당 포트로 접근해 보겠습니다. localhost:8081 로 해보면 아래와 같이 정상적으로 접근됩니다.

 



 

3. jenkins 최초구성


우선 jenkins가 띄워졌으니 다시한번 접속해 보겠습니다. localhost:8081이며, 이전에 그림처럼 Getting Started화면이 뜹니다. 

Unlock Jenkins
To ensure Jenkins is securely set up by the administrator, a password has been written to the log (not sure where to find it?) and this file on the server:

/var/jenkins_home/secrets/initialAdminPassword

Please copy the password from either location and paste it below.

친절하게 해당 경로에 초기 패스워드가 있으니 복사해서 넣으라고 하네요~ 해당경로로 들어가면 initialAdminPassword 파일이 있고 열어보면 아래와 같이 패스워드가 들어있습니다. 

패스워드를 넣고 Continue를 하면 jenkins를 customize하기위한 plugins를 설치하라고 합니다. 당연히 jenkins에서 추천하는 plugins를 설치합니다. [Install suggested plugins]를 선택합니다.

아래항목들이 쭉쭉 설치가 됩니다. 완료된건 녹색 V표시가 되면서 진행됩니다.

설치가 완료되면 아래처럼 [Create First Admin User] 정보를 입력하라고 합니다. 적당히 입력해 주시면 됩니다.

Save and Finish로 종료합니다. Jenkins is almost ready! Your Jenkins setup is complete, but some plugins require Jenkins to be restarted. 라고 합니다. 뭐 다시 서버로 가서 jenkins docker image를 재시작해 줍니다. 그리고 다시 접속을 해보겠습니다.

아까 생성했던 admin 계정으로 로그인하면 정상적으로 위와 같이 Jenkins가 접속됨을 확인했습니다.

 

- Ayotera Lab -

댓글