로컬 Docker를 이용해 Vue 테스트 프로젝트 빌드 후
EC2로 전송하여 Jenkins 파이프라인을 이용한 CI/CD를 실습
애자일 프로세스에서는 배포가 자주 일어난다. 한 텀마다 요구사항과 배포가 반복된다.
스프린트마다 배포를 하려면 일의 양이 만만치 않고, 자동화가 필수이다.
=> CI/CD
Java로 작성된 자동화 서버로 다양한 플러그인을 사용하여 CI/CD 파이프라인을 만들어 자동화 작업이 가능하다.
https://hub.docker.com/r/jenkins/jenkins
Vue 테스트 프로젝트를 Docker파일을 이용한 Docker 빌드 후 EC2에 전송할 것.
빌드 시 Node와 Python 을 설치해 사용할 것이다.
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
docker build -t jenkins:1.0 .
docker images
입력 시 해보면 결과를 확인할 수 있다.
Container 실행
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 jenkins:1.0
Jenkins 사용자 설정 및 플러그인 설정은 생략
아래 게시글 참고
gitlab 접속한 id와 password를 설정한다.
Global credentials -> add credentials 에서 gitlab username과 password를 입력한다.
이 때 ID는 사용할 ID를 입력
파이프라인 작성
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 서버 접속 후 빌드 파일을 배포 폴더 위치로 복사
}
}
}
}
}
sudo python3 -m http.server 8000
HTTP Server Module로 확인해본다.
Jenkins에 gitlab
플러그인을 설치해서 Trigger 설정도 할 수 있다.
Docker를 EC2에 설치해서 Jenkins 컨테이너에 올려야 Build Trigger가 가능하다.
현재는 PC에 Docker를 설치 한 상태이므로 해당 과정은 실습이 어려울 것 같다.