[INFRA] 젠킨스를 이용해 CI/CD 구축하기 (1)

오잉·2023년 8월 26일
0

INFRA

목록 보기
3/5

구축하고자 하는 최종 CI/CD 플로우는 다음과 같다.

0. intro

image

본격적인 cicd 구축에 앞서 이러한 구조의 infra 서버를 세팅한다.

먼저 infra 서버에 접속한다.

ssh -i {pem키} ubuntu@{infra서버 ip}

가끔 WARNING: UNPROTECTED PRIVATE KEY FILE! 이라는 에러가 뜨는데
chmod 600 {pem키}를 통해 pem키 파일의 권한을 바꿔주면 된다.

1. swap memory 설정

우리팀의 EC2는 메모리가 2GB여서 jenkins가 실행중에 메모리 부족으로 멈출 수 있다.

이를 방지하기 위해 swap 메모리를 설정하고 시작하자.

free -h라는 명령어를 통해 현재 메모리 상태를 확인할 수 있다.

image

(현재 메모리는 2G, swap 메모리는 0B)

swap memory를 할당 하는 것은 하드디스크를 이용하기 때문에

df -h라는 명령어를 통해 현재 하드디스크의 용량도 확인해본다.

하드디스크의 용량을 확인했다면, 그 중 얼마를 swap 메모리로 사용할지 정하고 아래 명령어를 입력한다.

sudo fallocate -l {N}G /swapfile

N에 본인이 생성할 swap 메모리를 지정한다.

(펀잇팀은 일단 2G만큼을 swap 메모리로 사용하기로 했다)

chmod 600 /swapfile

만들어진 swapfile에 대한 권한을 수정한다.

sudo mkswap /swapfile
sudo swapon /swapfile

생성된 swapfile을 이용하여 swap 메모리를 활성화시킨다.

시스템이 재부팅 되어도 swap 세팅이 적용될 수 있도록 설정 파일을 수정하자.

vi /etc/fstab명령어를 이용해 에디터를 열고,

해당 파일의 마지막 라인에 /swapfile none swap sw 0 0

명령어를 입력한 후 wq!로 저장하고 나온다.

위의 과정이 귀찮다면 이 명령어 한줄로도 가능하다
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

swap 메모리 설정 후의 메모리 상태

image

2. docker 설치

우리의 ubuntu machine에 jenkins를 직접 설치하려면 많은 과정을 거쳐야한다.

하지만 docker를 사용한다면 매우 간단하게 jenkins 컨테이너를 받아와 실행가능하다.

그러므로 펀잇은 docker를 사용해 jenkins를 설치하기로 했다!

먼저 apt package의 index를 최신으로 업데이트하고, apt가 HTTPS를 통해 패키지를 설치할 수 있도록 설정한다.

$ sudo apt-get update
$ sudo apt-get install \
   ca-certificates \
   curl \
   gnupg \
   lsb-release

Docker의 공식 GPG키를 추가한다.

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

저장소를 설정해준다.

$ echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

마지막으로, Docker Engine을 설치하면 끝!

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo docker run hello-world

라는 명령어를 입력했을 때 이미지가 정상적으로 작동된다면, 설치가 된 것이다!

image

3. jenkins 컨테이너 설치

아래 명령을 통해 젠킨스 이미지를 컨테이너로 띄울 수 있다.

sudo docker run -d --name jenkins -p {호스트 포트}:{컨테이너 포트} jenkins/jenkins:jdk11

  • -name: 컨테이너의 이름을 jenkins로 설정한다
  • -p {호스트 포트}:{컨테이너 포트}: 컨테이너의 외부와 통신할 포트(앞의 값)를 내부적으로 사용할 포트(뒤의 값)로 포워딩해준다. (펀잇의 ec2는 8080이 막혀있기 때문에 80으로 받아온 후 jenkins 포트인 8080으로 포트포워딩했다.)
image

sudo docker ps라는 명령어를 통해 현재 가동적인 컨테이너를 확인할 수 있다.

여기까지 진행하면 infra 서버 안에서 해야하는 설정은 끝이난다!

이제 나머지는 jenkins의 웹 인터페이스에서 진행하면 된다.

4. jenkins 초기 설정

{infra서버 ip}:80를 웹에 입력하면 jenkins의 웹 인터페이스에 접근할 수 있다.

image

초기 접속을 하기 위해서는 Administrator password를 등록해야 한다.

해당 키를 확인하기 위해서 infra 서버에 접속해 다음 명령어를 입력하자.

$ sudo docker exec -it jenkins bash
$ cat /var/jenkins_home/secrets/initialAdminPassword

이를 통해 찾은 키를 입력하고 continue 버튼을 누른다.

image

위와같이 jenkins 초기 플러그인 설정 페이지가 나온다.

우리는 install suggested plugins를 눌러 추천 플러그인들을 설치하고 넘어가자.

image

플러그인이 설치되는 중~

image

플러그인 설치가 끝나면 위와 같이 유저 설정 페이지가 나온다.

image

유저 설정이 끝나면 앞으로 jenkins에 접속할 url을 설정할 수 있다.

이왕이면 기본값을 권장한다.

여기까지 했으면 초기 설정은 끝이난다!👏👏👏

5. jenkins 추가 설정

jenkins관리 > script console에 들어가서 time zone 설정

image

jenkins관리 > tools > gradle installation에 들어가서 gradle 설정

image
profile
오잉이라네 오잉이라네 오잉이라네 ~

0개의 댓글