기록/CI&CD

[AWS] 같은 브랜치에 있는 프론트엔드, 백엔드 자동배포하기 (4) Jenkins 설치 및 설정

5월._. 2022. 8. 13.
728x90

1. Docker로 Jenkins 설치

1) jenkins 이미지 파일 내려받기

docker pull jenkins/jenkins:lts

2) jenkins 이미지 컨테이너로 실행

ubuntu와 젠킨스 컨테이너 볼륨을 연결한다.

  • ubuntu의 /jenkins 와 컨테이너의 /var/jenkins
  • ubuntu의 /home/ubuntu/.ssh 와 컨테이너의 /root/.ssh
  • ubuntu의 /var/run/docker.sock 와 컨테이너의 /var/run/docker.sock (바깥에 설치된 docker를 jenkins 속 도커에서도 사용할 수 있도록 한다.)

이름은 jenkins, 계정은 root로 한다.

docker run -d -p 8080:8080 -p 50000:50000 -v /jenkins:/var/jenkins -v /home/ubuntu/.ssh:/root/.ssh -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -u root jenkins/jenkins:lts

 

2. jenkins 접속

1) http://도메인주소:8080 로 접속한다.

2) 암호입력

# 방법 1 - 로그로 암호를 알아낸다.
docker logs jenkins
# 방법 2 - 젠킨스 컨테이너에 접속해 암호파일을 확인한다.
docker exec -it jenkins bash
sudo cat /var/lib/jenkins/secrets/initialAdminPassword

3) 플러그인 설치

Install suggested plugins을 선택한다.

4) 계정 생성

원하는 아이디, 비밀번호로 계정을 생성한다.

 

3. GitLab과 연동

1) ssh 키 생성

전부 enter를 입력해서 default로 설정한다.

ssh-keygen

2) GitLab Deploy key 등록

id_rsa.pub에 있는 public key 값을 복사한다. ‘ssh-rsa’로 시작해서 이메일주소로 끝나는 모든 것을 복사해야 한다.

cat /home/ubuntu/.ssh/id_rsa.pub

Preferences → SSH Keys에서 새 SSH key를 등록한다. key에 복사한 값을 붙여넣고, Expiration date를 설정한다. title은 아무거나 해도 된다.

3) jenkins credential 등록

id_rsa에 있는 private key 값을 복사한다. -----BEGIN OPENSSH PRIVATE KEY----- 부터 -----END OPENSSH PRIVATE KEY-----까지 전부 복사해야 한다.

cat /home/ubuntu/.ssh/id_rsa

http://도메인:8080/credentials/store/system/domain/_/ 에 접속해서 Add Credentials를 클릭한다.

Kind는 SSH Username with private key로 설정한다.

ID는 파이프라인 스크립트 작성 시 credentialsId로 사용될 이름을 쓴다.

Username은 root, Private Key는 위에서 복사한 값을 전부 붙여넣는다.

 

4. 플러그인 추가 설치

젠킨스 관리 > Plugin Manager > 설치가능 목록에서 gitlab을 검색해 GitLab, Generic Webhook Trigger, Gitlab API, GitLab Authentication을 설치한다.

docker를 검색해서 Docker, Docker Commons, Docker Pipeline, Docker API 를 설치한다.

Generic Webhook Trigger Plugin을 설치한다.

 

5. maven 설정

백엔드 프로젝트는 maven을 사용해 빌드하기 때문에 설정이 필요하다. 

젠킨스 관리 > Global Tool Configuration에서 Maven을 찾는다.

이름은 M3으로 했고, install automatically를 클릭한다. 

댓글