프로젝트/서버관리

ubuntu에 도커와 젠킨스로 ci cd 구축하기(3편) + ec2서버 스왑메모리 추가 + ec2 서버가 자꾸 죽을 때 해결 방법

쿠키담임선생님 2024. 1. 14. 18:44

이제 젠킨스에 도커 연동을 하는 과정을 진행 하겠다.

 

젠킨스에 Docker Hub를 연동 시켜서 이미지를 다운 받기 위해서는 Docker 연동을 해야한다.

 

해당 연동하는 방법이 젠킨스의 Credential이라는 부분이다.

 

해당 설정을 위한 경로는 다음과 같다.

 

중간에 서버가 죽어서 인스턴스 중지를 누른뒤 시작을 눌러 서버를 껏다 켯다.

 

그 이후 죽어버린 젠킨스를 살리기 위해 사용한 아래 명령어.

 

이미지 목록에 있다고 바로 실행되어있는 것은 아니다.

 

run 명령어로 실행하면 이미지가 없을 경우 이미지 다운 + 이미지 실행 이지만

start 명령어로 실행하면 해당하는 이미지 실행만 한다.

 

 

 

그런데 위 처럼 프리티어 모드에서 자꾸 서버가 죽는다면 이에 대한 해결 방법은 뭘까?

 

 

일단 원인은 Swap메모리가 프리티어 버전이라 0으로 세팅되어있음에 있다.

 

해당 스왑 메모리를 향상 시키기 위해 아래 명령어를 차례차례 입력한다.

1. sudo dd if=/dev/zero of=/swapfile bs=128M count=16

 

위 명령어 같은 경우 128메가 X 16을 곱하여 총 2기가의 스왑메모리를 할당 시키겠다는 뜻이다. 만약 용량이 부족하다고 하여 오류메세지가 노출된다면 128 X 8로 하여 1기가로 낮춰보는 것을 추천한다.

 

2. sudo chmod 600 /swapfile

 

3. sudo mkswap /swapfile

 

4. sudo swapon /swapfile

 

5. sudo swapon -s

 

6. sudo vi /etc/fstab

위 명령어 이후 파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료한다.

 

7. /swapfile swap swap defaults 0 0 이라고 추가하고 종료한다.

 

이제 젠킨스에 파이프라인 구축하는 내용

 

젠킨스에서 Dashboard -> 젠킨스 관리 -> Credential

 

위 위치는 이걸 클릭하면 된다.

 

 

위에서 중간에 있는 Credentials을 클릭한다.

 

 

여기서 (global) 파란 글씨를 클릭해준다.

 

 

그러면 오른쪽 위에 + Add Credials 버튼을 클릭한다.

 

 

위 사진처럼 정보를 입력한다.

 

여기서 password는 도커허브에 들어가서 account setting을 클릭한다.

 

 

그 뒤 

 

 

New Access Token을 통해 토큰 키를 발급 받고 받은 토큰 키를 password에 입력해주는 것이다.

 

 

Docker pipeline 생성

 

이제 파이프 라인을 생성해보겠다.

 

 

젠킨스 메인페이지에서 Create a job을 클릭한다. 그리고 파이프라인 이름은 spaceship_pipeline 으로 입력한다.

 

 

이런 창에서 Pipeline을 선택 후 확인 버튼 클릭.

 

파이프라인 설정

 

 

위 사진처럼 체크해주고 설정값 입력해준다.

 

그리고 아래로 조금 더 내리면 파이프라인이 있는데 여기는 이렇게 설정해준다.

 

 

위 설정값에 대해서 하나하나 설명하자면

  • GitHub Project  : 해당 링크로 이동하는 배너 생성
  • Github hook trigger for GITscm polling : git push 시에 pipeLine 자동 빌드
  • Branches to build : 해당 브랜치로 변경이 일어났을 때 Jenkins 빌드

Git hub 웹 훅 설정

  1. 이제 젠킨스가 아니라 깃허브 쪽에서 설정해주는 부분들이 있다.
  2. 깃허브 해당 프로젝트 레파지토리에 들어가서 setting -> webhook 클릭 -> add webhook
  3. 페이로드URL : http://<Server IP>:<Jenkins Port>/github-webhook/
    나같은 경우 그럼 http://3.36.121.160:9090/github-webhook/
    만약 다시 아이피가 재 할당되어 아이피가 바뀐다면 이부분을 필수로 수정해야한다.
  4. 어플리케이션 타입 : json

 

위 사진과 같다.

 

Jenkinsfile 작성

 

젠킨스 파일은 어디에 위치해있는가...?