TY_Daily

Jenkins를 이용한 CI/CD 구축하기 -1 본문

SSAFY프로젝트

Jenkins를 이용한 CI/CD 구축하기 -1

TY_TaeYeon 2024. 7. 30. 03:10

 

- 이런방식으로 진행됨!

 

- 젠킨스를 프로젝트에서 사용할 예정ㅊ!Java 기반 JDK, Gradle, Meaven

 

+ 상황에 따라 Swap 메모리 설정하기

 -EC2,AWS 제공하는  경우 가끔씩 메모리 부족으로 에러가 발생할수도 있음! 그래서 free -h 명령어를 통해 Memory 가 부족할경우 진행! (2기가추천!)

 

- 도커설치 (공식문서)

 

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

- apt update를 통핸 최신 업데이트, (Tip apt가 HTTPS를 통해 저장소를 사용할 수 있도록 패키지 설치!)

 

 

- Docer의 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

 

(Tip. 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

 

- 도커 엔진 설치

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

 

- 도커 설치 확인

$ sudo docker run hello-world

 

--> 해당 이미지가 전상적으로 실행된다면 설치가 잘된것!

 

 

- Jenkins 컨테이너 설치!

$  sudo docker run -d -p 8080:8080 -v /home/ubuntu/jenkins-data:/var/jenkins_home --name jenkins jenkins/jenkins:jdk21

 

여기서 --name이나 -p(포트번호 : 을 기준으로 앞에는 내 로컬에서 사용할 포트번호 뒤에 번호는 도커에서 연결할 포트번호이다!) jenkins버전은 자기가 원하는걸로 설치하면 된다! (나는 jdk21, 포트번호 8080으로 설정 연결 폴더)

 

sudo docker ps 명령어를 통해 도커가 실행되는것을 보면 컨테이너가 실행되고 있음을 확인할수 있을것이다.

 

컨테이너가 실행되고 있다면 {IP주소}:포트번호 이렇게 주소창에 들어가면 다음과 같은 페이지가 있을 것이다. 패스워드는 젠킨스 실행했다면 cmd 창에서 확인할수 있을것이다.

 

// jenkins 컨테이너에 접속
$ sudo docker exec -it jenkins bash
// 초기 관리자 키 확인
$ cat /var/jenkins_home/secrets/initialAdminPassword

 

docer exec 명령어나 여러가지를 통해 확인할수 도커안에서 파일을 확인할수 있을것이다.

(웬만하면 다설치되어야함!)

 

다음과 같이 설치가 완료!! 

 

- 새로운 아이템가면 Free Style 과 Pipeline이 보일꺼야!

 

  장점 단점
Freestyle 방식  1. 웹 기반의 GUI를 통해 플러그인 쉽게 가능! 1. CI 파이프라인 변경 사항을 위해서는 젠킨스에 로그인해 각각의 프리스타일 설정 변경해야함
2. CI/CD 과정을 콘솔을 통해서만 확인 가능
3. 전체 과정에 대한 확인 및 피드백 힘듬!
Pipeline 방식 1. 파이프라인은 코드로 프로젝트 설정을 할수 있어 프리스타일과 다르게 젠킨스 웹에 직접 접근없이 변경 가능(물론 웹을 통한 변경도 가능!)
2. CI/CD 파이프라인 설정을 하나의 스크립트 파일(Jenkinsfile)을 통한 프로그래밍 제어 및 흐름제어 가능!
3. 버전 관리 가능!
4. GUI를 통한 과정 실행및 시간 확인 가능!
1. 스크립트 코딩이 쉽지 않음!

 

 

 

 

* 아래 General 부분의 추가적 설명은 필요함 (24.07.30)

 

+

 

 

 

 

 

아래 파이프라인 스크립트 설정하는 방법은 2가지가 있어!

첫번째(Pipeline script)는 젠킨스 웹 내에서 스크립트를 작성하여 관리하는 방식이고

두번째 (Pipeline script from SCM) 는 프로젝트 내에서 Jenkinsfile에 스크립트를 작성하여 관리하는거야!

 

그리고 이 스크립트를 작성할수 있는 타입은 2가지야! Declative Pipeline 과 Scripted Pipeline [공식문서]

 

일단 Pipline script를 다음과 같이 작성하고 저장을 누르면 오류가 생겨!

pipeline{
	agent any
   
    stages{
    	stage('Checkout'){
        	steps{
            	git branch: 'master',
            	url: "https://lab.ssafy.com/s11-webmobile3-sub2/S11P12D101.git"
            }
        }
    }
}

 

<오류> Git 리포지 토리 에러야 즉 Git 에서 내가 접근하기 위한 권한이 필요한데 그게 없다는거야!

 

 

이렇게 토큰을 만들고! (아래 api, read_api 등 상세정보에 대한 정보는 정리 필요!! 2024.07.30)

 

 

 

 

 

 

 

 

'SSAFY프로젝트' 카테고리의 다른 글

Jenkins를 이용한 CI/CD 구축하기 -3  (0) 2024.07.31
Jenkins를 이용한 CI/CD 구축하기 -2  (0) 2024.07.30
Spring Boot MySQL DB 연결  (0) 2024.07.23
JENKINS 세팅  (0) 2024.07.23
CI/CD, 도커, 컨테이너, 쿠버네티  (0) 2024.07.22