[AWS] 젠킨스(Jenkins) - 2

JANG WOOHYUK·2023년 1월 24일
0

젠킨스(Jenkins) CI/CD

목록 보기
3/3
post-thumbnail

설날에 Jenkins 작업하느라 보내지 못했다..🤣
그래도 살이 안 쪄서 다행이다. 😁
서론은 됐고, 오늘은 Jenkins + Node.js + GitHub를 이용한 자동배포 구축에 대해 정리하겠다.

1.Jenkins NodeJS 설치

Jenkins 관리 👉 플러그인 관리에 들어간다.

2. Plugins

NodeJS 검색을 한 뒤, Download now and install after restart 설치를 진행한다.

3. Global Tool Configuration

Jenkins 관리 👉 Global Tool Configuration 에 들어간다.

NodeJS 플러그인을 찾아 Name과 버전을 입력한다. Nodejs 최신 버전도 있으니 걱정마라!! 필자는 16.4.21으로 진행하겠다.

저번 포스트에 Github 연동하면서 만들었던 프로젝트 👉 Configure 👉 빌드 Steps 👉 NodeJS 플러그인 설정

📍 사전 필수
반드시 GitHub 연동과 git Webhook 설정이 되어야 한다.

링크를 참조하자.
👉 https://velog.io/@dev_96/AWS-%EC%A0%A0%ED%82%A8%EC%8A%A4Jenkins-1

사전 준비가 되었으면, 다음으로는 젠킨스에서 노드 서버로 전송하기 위해서는 ssh를 이용해야 하는데, 젠킨스에서는 플러그인으로 제공한다. Publish Over SSH 플러그인을 설치해야 한다.

필자는 Publish Over SSH를 설치하였다.
👉 https://dbjh.tistory.com/68?category=839984

Node.js 서버를 배포하는 방식은 여러가지이지만, 그 중 하나인 PM2를 이용할 것이다.

npm install -g pm2
pm2 -v ✔ 버전 확인

이렇게 큰 PM2 로고가 나오면 성공 ‼

PM2를 설치 한 뒤, EC2에 Node.js 설치를 해야 한다.
Node.js 설치는 간단하다.

이렇게 친절하게 Amazon 에서 설명을 해준다. 역시 GOD 아마존 🌟
👉 https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

4. 자동 스크립트 구성

이제 중요한 자동 업데이트 스크립트 구성을 해야한다.
자동배포를 구성하기 전에 젠킨스에 의해 실행될 스크립트를 작성하자.
스크립트 파일은 깃허브에서 클론한 폴더 내부에 작성하자.

git clone 내 허브 주소

#!/bin/bash
git pull
npm install
npm start

필자는 start.sh 이름으로 저장했고, 권한을 주자‼

chmod 755 start.sh 

start.sh가 실행이 잘 된다. 기분이 좋구만!!

이제 젠킨스 서버에서 쉘 스크립트를 작성하자.

5.배포 서버 설정

1.이제 젠킨스 서버로 SSH 접속해서 젠킨스 사용자로 유저를 변경

ssh-keygen -t rsa 

ssh 키를 발행하고 엔터 누르고 진행

ssh키를 복사한 것을 붙여넣기 한다.

vi ~/.ssh/authorized_keys

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
✔ ssh 권한을 준다.

✔ ssh 접속 성공

ssh 사용자명@node.server ip
✔ ssh 접속 성공

🔥 마지막으로 테스트

연동된 리포지토리에 소스코드를 push 해보고 젠킨스 서버에 문제없이 작동되는지 확인하자

1. 기존에 있던 글을 지우고, dev, dev.96블로그입니다. 작성

2. 깃 허브에 push

3. 깃 허브 push 완료!!

4. 연동된 리포지토리에서 git pull

5. 젠킨스에서 Buildnow ✔

6. 서버 ip 입력👉 자동배포 서버 구축 완료✔

이로써 Jenkins + Node.js + GitHub 를 이용한 자동배포 구축이 완료되었다.
서버에서 SSH 접속 후, Bulid된 파일을 서버로 모두 전송했다.
다시 Jenkins를 실행함으로써 수정한 파일이 배포가 마무리 되었다.

기회가 된다면, GitLab 을 통해 배포를 해보고 싶다는 생각이 들었다.
아니면 AWS 서비스에서 파이프라인과 배포 서비스를 이용해보고 싶다.
다음 포스트가 기대된다.

⭕ 예외:

git pull 오류가 났다.

또 구글 박사님한테 물어보던 중, 참고할만한 글이 있어 링크를 남긴다.
👉 https://insapporo2016.tistory.com/53

profile
공부일기 -> 내일도 공부하는 내가 되자🔥🔥🔥

0개의 댓글