Jenkins vs Github Actions
둘 다 강력한 자동화 도구로 지속적 통합(CI)과 지속적 배포(CD) 파이프라인을 구축하는 데 사용됨
- jenkins
- 서버에 직접 설치 필요
- 유지 관리 필요
- 대규모 시스템에 적합
- 가장 유연한 플러그인 시스템
- Github Actions
- 서버에 직접 설치 필요 X (깃허브에서 실행)
- 소, 중규모 시스템에 적합
- 푸시하거나 풀리퀘스트를 생성할 때 자동으로 작업 실행
Github Actions(Jekins와 )로 리액트앱 자동빌드 및 배포
npm run build, npm run deploy 했던 것을 자동화하겠다는 뜻!
- 자동화 시키고싶은 프로젝트에 가서
- setting - Secrets and variables - Actions
- Repository secrets에 4개를 생성
- ACCESS KEY, SECRET ACCESS KEY를 생성하고 내 REGION에 대한 코드 입력, 버킷의 이름을 입력해줌
- React로 넘어와서 .github 폴더, workflows폴더, deploy.yml 생성
- deploy.yml
name: Deploy React App to S3 # 배포 설정파일 이름
on:
push:
branches:
- main # main 브랜치에 푸시될 때 설정파일이 실행되게함
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # 리포지토리 코드 체크아웃
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20' # Node.js 버전 지정
- name: Install Dependencies
run: npm install # 의존성 설치
- name: Build React App
run: CI=false npm run build # 프로덕션 빌드 생성
- name: Deploy to AWS S3
uses: jakejarvis/s3-sync-action@master
with:
args: --delete # 불필요한 파일 삭제
env:
AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
SOURCE_DIR: 'build' # 빌드된 파일이 있는 디렉토리
- 이제 변경사항 코드와 yml을 푸시하게되면?
-> 푸시할 때 마다 자동 배포, 빌드 되는 것을 볼 수 있음
스프링 API EC2 배포 마무리
- putty에서
java -jar event.api-0.0.1-SNAPSHOT.jar
자동으로 서버가 꺼지는 실행의 문제를 해결하기 위해 백그라운드에서 실행
nohup java -jar event.api-0.0.1-SNAPSHOT.jar &
로 실행
ps -ef | grep java
를 실행하면 지금 돌아가고 있는 시스템이 보임
- 숫자 4개 떠있는게 프로세스 id인데
kill -9 2619
처럼 입력하게되면 톰캣이 종료됨