[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/