Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 스테이지어스
- 메뉴바 한번에
- .env
- route 53
- JWT 쓰는이유
- 게시글 이미지
- 네비게이션 한번에
- 3계층구조
- 알림생성모듈
- 토큰
- unnest
- 메뉴바
- Winston
- JSON Web Token
- JWT
- 레포지토리
- element.style
- JWT 쓰는 방법
- 패스파라미터
- 부트캠프
- 게시글 이미지 업로드
- 이미지가 포함된 게시글
- N+1
- secret코드
- 포트번호
- getComputedStyle
- 알림생성
- 쿼리스트링
- N+1문제
- 환경변수
Archives
- Today
- Total
기주
[CI/CD] Github-Actions로 CI/CD 구축하기-1 본문
Github-Actions로 CI/CD 구축하기-1
프로젝트 적용해보기
1. Nest JS 프로젝스 세팅
nest new [프로젝트명]
nest new github-practice-server
2. Github에 프로젝트 올리기
2-1) 깃허브 프라이빗 레포지토리 생성
2-2) 레포지토리에 프로젝트 올리기
cd github-action-practice
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin [레포지토리 URI]
git push -u origin main
3. EC2 세팅
3-1) EC2 보안그룹 3000포트열기
NestJS는 기본적으로 3000포트에서 실행된다.
3-2) node 설치
sudo apt-get update && /
sudo apt-get install -y ca-certificates curl gnupg && /
mkdir -p /etc/apt/keyrings && /
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && /
NODE_MAJOR=20 && /
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list && /
sudo apt-get update && /
sudo apt-get install nodejs -y
# 노드버전확인
node -v
3-3) git clone을 이용해 프로젝트 다운받기
git clone [레포지토리 uri]
3-4 clone한 서버동작 확인
cd [프로젝트 명]
npm i
npm run build
npm run start:prod
4. 실제 배포 환경처럼 pm2 활용해서 서버 실행시키기
sudo npm i -g pm2
pm2 start dist/main.js --name "backend-server"
pm2 list # 서버 잘 실행되고 있는 지 확인
pm2 logs # 서버 잘 실행됐는 지 로그 확인
4. 배포 서버 설정
깃허브 인증정보가 저장되도록 하여 git pull을 할때마다 인증정보를 입력할 필요가 없도록 한다.
git config --global credential.helper store // 다음 깃허브 인증정보 입력시 이를 저장
git pull origin main
+ 인증정보입력...
//그 이후
git pull origin main // 저장된 인증정보 이용하므로 입력할필요X
*깃허브 인증정보 저장시 주의할점
보안이슈
ls -a
cat .git-credentials
깃허브 인증정보를 서버에 저장해놓았기 떄문에
해당 서버 프로젝트폴더에서 이를 실행하면 깃허브 계정과 토큰을 볼 수 있다.
때문에 개인프로젝트나 신뢰할 수 있는 팀원과 함께할때만 github-actions를 쓰는게 좋다
github-acitons 라이브러리 살펴보기
https://github.com/marketplace
github actions marketplace 에 접속
ssh 검색
ssh Reomte Commands 라이브러리 이용 (사용법 참고)
deploy.yml
name: nestJS CI/CD 적용하기
on:
push:
branches:
- main
jobs:
my-deploy:
runs-on: ubuntu-latest
steps:
- name: Github Repository 불러오기
uses: actions/checkout@v4
- name: node js 설치
uses: actions/setup-node@v4
with:
node-version: '20'
- name: 의존성 설치
run: npm ci
- name: .env 파일 만들기
run: |
echo '${{ secrets.ENV }}' > .env
- name: 테스트 코드 실행
run: npm run test
- name: SSH로 EC2에 접속하기
uses: appleboy/ssh-action@v1.2.0
env:
ENV: ${{ secrets.ENV }} # ENV변수에 ENV할당
with:
host: ${{ secrets.EC2_HOST }} # EC2 주소
username: ${{ secrets.EC2_USERNAME }} # EC2 사용자명
key: ${{ secrets.EC2_PRIVATE_KEY }} # EC2 keypair
envs: ENV
script_stop: true # 아래 스크립트 하나라도 실패하면 실패처리
script: |
cd /home/ubuntu/githubAction-practice-server
rm -rf .env
git pull origin main
echo "$ENV" > .env
npm i
npm run build
pm2 kill
pm2 start dist/main.js --name "backend-server"
'devops > CICD' 카테고리의 다른 글
[CI/CD] 컨테이너 환경에서 CI/CD 구축하기(+code deploy 적용) (0) | 2024.12.14 |
---|---|
[CI/CD] 컨테이너 환경에서 CI/CD 구축하기 (0) | 2024.12.13 |
[CI/CD] github-actions를 이용한 CI/CD구축-3 (+AWS code deploy) (0) | 2024.12.04 |
[CI/CD] Github-Actions로 CI/CD 구축하기-2 개선 (0) | 2024.12.04 |
[Github-Actions] Github-Actions와 CI/CD 알아보기 (0) | 2024.12.04 |