| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 티스토리챌린지
- chrome
- nuxt
- 개발
- EC2
- 파이썬
- spring boots
- React
- JavaScript
- 광고 id
- 코테
- TypeScript
- Jenkins
- NanoHttpd
- kotlin
- toml
- docker
- Next
- Android
- 백준
- AWS
- it
- css
- python
- react-native
- nginx
- Express
- 오퍼월
- 오블완
- 코딩테스트
- Today
- Total
내맘대로 개발일지
[AWS] Jenkins 로 배포하기 [Node] 본문
[Jenkins] EC2 안에서 설치하고 실행하기
[EC2] 안에서 nginx 사용하기[AWS] 아무것도 모르는데 EC2 + Docker + MariaDB + nginx진짜 아무것도 모른다.개발만 해봤지 인프라 처음해본다.곁눈질도 안해봤고 해주는대로 떠먹어서 개발만 해봤다.근데
8735.tistory.com
이제 Jenkins 로 배포하는 연습을 해볼거다.
나는 Spring BackEnd 와 Vue FrontEnd 총 2개를 배포해야하는데
먼저 FrontEnd 먼저 배포하도록 하겠다!

오른쪽 상단에 있는 톱니바퀴의 Jenkins 설정 누르고
Security 에 Credentials 누르고 나면

다음과 같은 화면이 있는데 여기서 (global) 버튼마냥 파란색버튼 있는데 눌러주면된다

오른쪽 상단의 Add Credentials 버튼 클릭

Kind 에서 SSH Username with private key 누르고나서
Private Key > Enter directly 누르면 Add 버튼이 보인다 클릭
젠킨스 터미널로 돌아가서
ssh-keygen -t ed25519 -C "jenkins" -f ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
// 결과
ssh-ed25519 ...
cat ~/.ssh/id_ed25519
// 결과
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
첫번째 결과는 깃허브에 가서 SSH 등록해주고
두번째 나온 결과를 Add 누른 화면에 Key 에 입력해주면된다.
그다음 Create 버튼 클릭
ssh -T git@github.com
// 결과
Hi {깃헙닉네임}! You've successfully authenticated, but GitHub does not provide shell access.
이런 결과를 반환받았다면 정상적으로 연결된걸 확인할 수 있다.
그다음 Node 를 확인해야하는데,
node -v
yarn -v
했을때 결과가 나오지 않는다면 설치해주면된다.
sudo npm install -g yarn
나같은경우는 노드는 있어서 yarn 만 추가적으로 설치해줬다.
설정이 완료되었으니 다음으로 프로젝트를 등록해보도록 하겠다.

새로운 아이템 클릭

Enter an item name 에 이름 적고
Pipeline 선택하고 OK 버튼 클릭

여기에 이제 스크립트를 작성하면되는데
pipeline {
agent any
options { timestamps() }
environment {
PROJECT_NAME = '{PROJECT_NAME}' // 예: my-frontend
GIT_URL = '{GIT_REPOSITORY_SSH_URL}' // 예: git@github.com:ORG/REPO.git
GIT_BRANCH = '{BRANCH_NAME}' // 예: main, dev, release
CREDENTIALS = '{CREDENTIAL_ID}' // Jenkins Git Credential ID (SSH Key or PAT)
DEPLOY_PATH = '{DEPLOY_DIRECTORY}' // 예: /var/www/my-frontend
BUILD_CMD = '{BUILD_COMMAND}' // 예: yarn build or npm run build
}
stages {
stage('Clone Repository') {
steps {
sh "node -v"
sh "git --version"
sh "yarn -v || npm -v"
git branch: "${GIT_BRANCH}", credentialsId: "${CREDENTIALS}", url: "${GIT_URL}"
}
}
stage('Install Dependencies') {
steps {
sh 'yarn install || npm install'
}
}
stage('Build') {
steps {
sh "${BUILD_CMD}"
}
}
stage('Deploy') {
steps {
sh """
echo "📦 Deploying ${PROJECT_NAME} → ${DEPLOY_PATH}"
rm -rf ${DEPLOY_PATH}/*
cp -r dist/* ${DEPLOY_PATH}/ || cp -r build/* ${DEPLOY_PATH}/ || echo "⚠️ dist/build 폴더 없음"
# Optional: enable after visudo setup
# sudo systemctl reload nginx
echo "🎉 Deployment completed!"
"""
}
}
}
}
중괄호 처리한건 알아서 맞춰서 설정하면되고
여기서 중요한건 sudo systemctl reload nginx 인데
배포가 끝나면 자동으로 재시작 하기위함이다
이를 위해서 몇가지 설정이 필요한데
1. 권한추가
sudo chown -R jenkins:jenkins /var/www/{프로젝트명}
sudo chmod -R 755 /var/www/{프로젝트명}
2. visudo 열기
sudo visudo
3. 추가 후 저장
jenkins ALL=NOPASSWD: /usr/bin/systemctl reload nginx
이렇게해주면 이제 배포가끝나면 Nginx 가 재실행되면서 배포가 완료된다.
'IT' 카테고리의 다른 글
| [Docker] 기본 명령어 이건 알아야 한다 ( + 리눅스 ) (0) | 2026.03.18 |
|---|---|
| [AWS] Jenkins 로 배포하기 [Spring] (1) | 2025.11.25 |
| [AWS] 고정 IP 할당받기 (0) | 2025.11.19 |
| [Jenkins] EC2 안에서 설치하고 실행하기 (0) | 2025.11.12 |
| [EC2] 안에서 nginx 사용하기 (0) | 2025.11.12 |