본문 바로가기

Dev. Back-End/CI & CD

[JenKins] ① 젠킨스를 이용해서 node.js CI/CD 자동 배포하는 방법 (NestJS)

 

 

JenKins를 이용해서 node.js 배포하는 방법 (NestJS)에 대해 포스팅하겠습니다.






▼ Jenkins를 통해 자동배포 (NodeJS) 시리즈

▶ ① 젠킨스를 이용해서 node.js CI/CD 자동 배포하는 방법 - 바로가기
▶ ② 젠킨스를 이용해서 node.js CI/CD 자동 배포하는 방법 - 바로가기
▶ ③ 젠킨스를 이용해서 node.js CI/CD 자동 배포하는 방법 - 바로가기
▶ ④ 젠킨스를 이용해서 node.js CI/CD 자동 배포하는 방법 - 바로가기
▶ ⑤ 젠킨스를 이용해서 node.js CI/CD 자동 배포하는 방법 - 바로가기








최근에 CI/CD 관련해서 공부를 해보고싶어서 구글링을 통해 시작했습니다.
하지만 생각보다 NestJS 프레임워크를 배포하는 관련 글과 자료 찾기가 어려웠습니다.
프로세스 관리도구인 pm2와 jenkins 등 여러 시행착오 끝에 간단하게 자동배포를 완료한 실습과정의 내용을 기록 및 공유하고자 글을 적게 되었습니다.


* 실습 스펙

Server : AWS EC2 2개(젠킨스 서버 , Node서버) / 우분투 20.14
Language : TypeScript
Framework : NestJS




시작에 앞서, EC2서버를 세팅해줍니다.
총 2개의 서버(우분투 20.14)를 구축해주시면 됩니다.
아래 블로그 글을 통해 AWS 서버 구축을 먼저 하시면 됩니다!
▶ [AWS] 간단하게 EC2 웹서버 만들기 (우분투 20.14) - 바로가기


1. EC2 인스턴스를 2개 구축해주시면 위와 같은 이미지처럼 보이게 됩니다.
(보안그룹은 22포트만 모두 열어주시고, 아래 진행하면서 수정하도록 하겠습니다.)


 

● 젠킨스 설치 전, 자바 설치

$ sudo apt update
2. 젠킨스 서버에 SSH로 접속한 뒤에 위 명령어를 입력해서 설치전에 패키지를 업데이트 해줍니다.
( sudo는 리눅스에서 관리자 권한으로 실행하는 것이며, apt는 우분투 패키지 관리 툴입니다. )



$ java -version
3. jenkins설치 전에 자바가 설치가 되어있어야 하므로, 서버에 자바가 설치되어있는지 확인해줍니다.
저는 설치 되어있지 않습니다. 이제부터 설치를 하겠습니다.



$ sudo apt install default-jre
4. 자바기반의 소프트웨어인 젠킨스를 컴파일하고 실행하는데는 JDK 필요하기 때문에 설치해줍니다.



$ java -version
5. 다시 확인하면 자바가 정상적으로 설치된것을 확인할 수 있습니다.


 



 


 

● 젠킨스 설치



$ cd /tmp && wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
6. tmp디렉토리로 이동한 뒤에 젠킨스 레포지토리 키를 등록해줍니다.
( wget는 (World Wide Web Get) 웹 서버로 부터 원하는 웹 사이트의 정보를 가져오는 역할 입니다. )




$ echo 'deb https://pkg.jenkins.io/debian-stable binary/' | sudo tee -a /etc/apt/sources.list.d/jenkins.list
7. 레포지터리를 등록하기 위해 다음 명령어를 입력해줍니다.





$ cd
$ sudo apt update
$ sudo apt install jenkins
8. 위 3개를 하나씩 입력해서 젠킨스를 설치해줍니다.
( 스크린샷을 준비하지 못해 텍스트로 대체합니다. )





 






$ sudo systemctl stop jenkins.service
$ sudo systemctl start jenkins.service
$ sudo systemctl enable jenkins.service
9. 젠킨스를 설치한 뒤에 젠킨스를 시작, 정지, 서버 부팅시에 항상 시작되도록 설정 하기 위해 위와 같이 입력합니다.



$ sudo systemctl status jenkins
10. 젠킨스가 성공적으로 시작되었는지 확인하기 위해 위처럼 입력한 뒤, 사진과 같이 나온다면 정상입니다.


 

● 방화벽 설정

 

$ sudo ufw status
$ sudo ufw allow 8080
$ sudo ufw allow 22
$ sudo ufw status
11. 젠킨스는 디폴트로 8080포트 위에서 실행됩니다.
8080포트와 22번 포트의 SSH access를 허용하도록 합니다
sudo ufw status을 통해 방화벽 상태를 확인해줍니다.
지금 inactive가 되어있기에 가능(active)로 변경해줍니다.





 






$ sudo ufw enable
$ sudo ufw status
12. 젠킨스를 가능상태로 변경해주고, 다시 상태를 확인했을때 위처럼 뜨면 정상입니다.



젠킨스로 CI/CD하는 방법에 대해 다음에 이어서 진행하겠습니다.



Ref : https://justinadpark.tistory.com/16?category=739024
https://12340zszs.tistory.com/33
https://cheese10yun.github.io/PM2/