[Jenkins] Jenkins 파이프라인을 이용한 CI/CD

DAUN JO·2021년 9월 24일
0

TIL

목록 보기
13/17

로컬 Docker를 이용해 Vue 테스트 프로젝트 빌드 후
EC2로 전송하여 Jenkins 파이프라인을 이용한 CI/CD를 실습

💡 CI/CD ?

애자일 프로세스에서는 배포가 자주 일어난다. 한 텀마다 요구사항과 배포가 반복된다.
스프린트마다 배포를 하려면 일의 양이 만만치 않고, 자동화가 필수이다.
=> CI/CD



🚩 Jenkins

Java로 작성된 자동화 서버로 다양한 플러그인을 사용하여 CI/CD 파이프라인을 만들어 자동화 작업이 가능하다.


Installer를 이용해 서버에 설치하는 방법이 있고, 컨테이너를 이용해 설치하는 방법이 있다. 후자의 경우 Docker에 대한 이해가 필요하다.

https://hub.docker.com/r/jenkins/jenkins


1) Container 를 활용한 빌드

Vue 테스트 프로젝트를 Docker파일을 이용한 Docker 빌드 후 EC2에 전송할 것.
빌드 시 Node와 Python 을 설치해 사용할 것이다.

  1. Dockerfile
FROM jenkins/jenkins

COPY ec2접속키 /var/jenkins_home
USER root
RUN chmod 600 /var/jenkins_home/ec2접속키
RUN apt-get update
RUN apt-get install -y python
RUN apt-get install -y npm
  1. Docker build 하기
docker build -t jenkins:1.0 .
  1. docker images 입력 시 해보면 결과를 확인할 수 있다.

  2. Container 실행

docker run -d --name jenkins -p 8080:8080 -p 50000:50000 jenkins:1.0

Jenkins 사용자 설정 및 플러그인 설정은 생략
아래 게시글 참고



2) 파이프라인 작성

  1. gitlab 접속한 id와 password를 설정한다.
    Global credentials -> add credentials 에서 gitlab username과 password를 입력한다.
    이 때 ID는 사용할 ID를 입력

  2. 파이프라인 작성

pipeline{
	agent any
    
    stages{
    	stage('prepare'){
        	steps{
            	git credentialsId : '아이디', url: '깃랩주소' 
                //gitlab pull
                sh 'npm install'							
                //npm 설치
            }
        }
        
        stage('build'){
        	steps{
            	sh 'npm run build'
                //빌드
            }
            post{
            	success{									
                //빌드가 성공적으로 이루어지면
                	sh "scp -i 'pem키 위치' -q -o StrictHostKeyChecking=no -r ./dist/ 'ec2주소:home/ubuntu/test"
                    	echo "Success"
                    //scp를 이용해 pem키로 ec2 서버 접속 후 빌드 파일을 배포 폴더 위치로 복사
                }
            }
        }
    }
}
  1. build now
    EC2 접속 후 home/ubuntu/test 폴더로 이동하여
sudo python3 -m http.server 8000

HTTP Server Module로 확인해본다.


🔜 Trigger 설정

Jenkins에 gitlab 플러그인을 설치해서 Trigger 설정도 할 수 있다.
Docker를 EC2에 설치해서 Jenkins 컨테이너에 올려야 Build Trigger가 가능하다.
현재는 PC에 Docker를 설치 한 상태이므로 해당 과정은 실습이 어려울 것 같다.


profile
🍕

0개의 댓글