[Jenkins] Node.js - Jenkins - Slack 연동
1. AWS EC2 우분투 20.04 프리티어 생성
보안설정
서버 접속
$ sudo apt update
// 자바 설치 (Jenkins 구동을 위해)
$ sudo apt install default-jre
$ sudo apt install default-jdk
// Jenkins 설치
$ cd /tmp && wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
$ echo 'deb https://pkg.jenkins.io/debian-stable binary/' | sudo tee -a /etc/apt/sources.list.d/jenkins.list
$ cd
$ sudo apt update
$ sudo apt install jenkins
// Jenkins 시작
$ sudo systemctl start jenkins.service
$ sudo systemctl enable jenkins.service
// port enable
$ sudo ufw allow 8080
$ sudo ufw allow 22
$ sudo ufw enable
$ sudo ufw status
아래 화면처럼 표시되면 성공
2. http://AWS-IP:8080/ 접속 ( AWS-IP : 발급받은 AWS IP 주소)
아래 명령어로 접속한 Jenkins 서버에서 비밀번호 확인 후 위 Administrator password 란에 입력
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
3. Jenkins 설정 + 계정생성
Install suggested plugins
계정 생성
4. 개발중인 Node.js APP 에 test module 추가
npm install mocha --save-dev
npm install supertest --save-dev
// test/mock-test.js 파일 생성
const request = require("supertest");
const app = require("../app");
describe("GET /", () => {
it("Hello, Kangaroo라는 응답이 와야한다.", () => {
request(app).get("/").expect("Hello, Kangaroo");
});
});
// app.js 하단에 추가
module.exports = app;
// 명령어 창에 입력하여 테스트
./node_modules/.bin/mocha ./test/mock-test.js
테스트 응답이 출력되면 성공
script/test 파일 만들기 (확장자 없음)
#!/bin/sh
./node_modules/.bin/mocha ./test/mock-test.js --exit
test 파일 실행해보기 (windows는 git bash에서)
chmod +x script/test
./script/test
5. Node.js 서버에 적용
node.js 서버에서 ssh key gen
ssh-keygen -t rsa -b 4096 -C "깃허브@이메일"
엔터~y~엔터로 넘기면 아래 화면 출력
yours public key has been saved in /root/ ~~~ 경로로 가서 아래 구문 실행
cat /root/.ssh/id_rsa.pub
실행시 나온 내용 복사 후 아래 gitHub 아래 경로대로 접근
복사한 내용 붙여넣어 생성
6. Jenkins 설정
AWS-IP:8080 접속 후 로그인
Jenkins 관리 -> 플러그인 관리 클릭
설치가능 탭 -> NodeJS 검색 -> install 체크박스 체크 -> download now and install after restart 클릭
Jenkins 관리 -> Global Tool Configuration
Add NodeJs -> Name 작성 -> Save
새로운 Item 클릭
Freestyle project -> ok
소스 코드 관리 -> git 선택 -> git 주소 입력 -> Add 클릭
credintials에서 github 정보 입력 (private일 경우) & password : 깃에서 발급받은 로그인용 토큰
빌드 유발 & 빌드 환경 설정
Add build setp
Command 입력
아래 에러시 소스 코드 관리에서 브랜치 변경!
빌드 실패시? Jenkins 서버에서 npm install
7. github webhook 설정
Settings -> Webhooks -> Add webhook
Payload URL 설정 ( 젠킨스 AWS-IP:8080/github-webhook/ )
8. 다시 Jenkins 서버 접속 후 설정
명령어 입력
sudo su - jenkins
ssh-keygen -t rsa
//엔터로 쭉 넘긴 후 나오는
// your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub
// /var ~ 경로로 접속 후
// 아래 명령어 실행
cat ~/.ssh/id_rsa.pub
명령어 입력 후 출력되는 결과 복사
9. 다시 Node 서버 접속 후 설정
아래 명령어 입력하여 vi 편집기 실행하 + 위에서 복사한 결과 맨 아래에 붙여넣고 저
vi ~/.ssh/authorized_keys
아래 명령어로 권한 부여
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
10. 다시 Jenkins 서버 접속 후 설정
ssh ubuntu@AWS-IP ( node 서버 )
접속이 되었다면? 끝!
11. 내 프로젝트에 deploy shell script 추가 + git push
/script/deploy 파일 추가 (확장자 없음)
내 젠킨스 서버에서 -> 노드 서버로 ssh 접속 후에 git pull을 받아서 pm2를 restart해주는 과정을 담으면 된다.
#!/bin/sh
ssh ubuntu@node-server-ip<<EOF
cd ~/github-folder
sudo -s
git pull origin master
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
. ~/.nvm/nvm.sh
nvm install 16.3.0
npm install
npm install -g pm2
pm2 restart app.js
exit
EOF
12. Jenkins build script 변경
./script/deploy 추가
13. Slack 연동
workspace 에서 앱 추가 -> 토큰 발급
Jenkins 관리 -> 플러그인 관리 -> Slack Notification 설치
Jenkins 관리 -> 시스템 설정
slack workspace, chanel 입력
Credentials 입력 - Secret 란에 위에서 발급받은 slack 토큰 입력
빌드 후 조치 -> Slack Notifications -> 전부 선택 후 저장
추가되면 완료
14. 끝. 출처 - 눈부셔서 안 보이는 그분의 블로그
'개발 => 복습 후 재정리 대기 > Node.js' 카테고리의 다른 글
[Node.js] express HTTPS 설정 ( cerbot ) (3) | 2022.01.05 |
---|---|
[node-schedule][cron] 특정 시간에 동작하기 (0) | 2021.08.09 |
작성중... [Node.js] Swagger 설치, 적용 (0) | 2021.07.16 |
[Node.js] AWS - MySQL 설치 (0) | 2021.07.02 |
[Node.js][Express] 기본 틀 공부중 (5) | 2021.05.25 |
댓글