-
[CI/CD] Github-Actions로 CI/CD 구축하기-1devops/CICD 2024. 12. 4. 17:05
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