-
7. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - 자동배포 (1)공부하기/node.js 2023. 2. 3. 20:44
[AWS EC2 배포] - 기본편에서 발생한 문제점 3번을 해결하는 글입니다
지금까지 저는 [ 작업 코드를 레파지토리에 푸쉬 -> ec2 인스턴스에 접근 -> pm2를 사용한 재배포 -> nginx 재실행 ]등의 작업들을 수동으로 진행했습니다.
이러한 귀찮고 반복적인 작업들을 자동화할 생각입니다.
이번 글에서는 git actions를 통해 s3 버킷에 build된 zip파일을 올리는것까지 자동으로 만들어보겠습니다.
준비물
1. s3 버킷 => build 된 애플리케이션.zip 파일을 업로드하기 위해서 필요합니다.
2. IAM 유저 (S3FullAccess 권한, CodeDeployFullAccess 권한) => git actions로 s3, codeDeploy를 컨트롤하기 위해서 필요합 니다.
3. CodeDeploy => 작업물을 자동배포하기 위해 필요합니다.
4.git actions => build , test, zip 파일 업로드, codeDeploy 컨트롤에 필요합니다.
s3 버킷 생성
1. aws s3 페이지로 이동한 후 버킷 만들기 버튼을 클릭합니다.
2. 버킷 이름, 리전, acl 비활성화, 모든 퍼블릭 엑세스 차단 등을 설정 후 버킷을 생성합니다.
IAM 유저 생성
1. IAM 페이지에 접속 -> 사이드바_사용자 클릭 -> 사용자 추가 버튼을 클릭
2. 사용자 이름을 입력 -> 다음 버튼 클릭
3. S3FullAccess, CodeDeployFullAccess 권한을 부여 -> 다음 버튼 클릭 -> 사용자 이름 및 권한 확인 -> 사용자 생성 버튼 클릭
IAM 유저 엑세스 키 생성
1. 생성된 유저를 클릭
2. 보안 자격 증명 탭 클릭 -> 엑세스 키 만들기 버튼 클릭
3. command line interface 클릭 -> 다음 버튼 클릭 -> 엑세스 키 만들기 클릭
4. csv 파일 다운로드
git repository secret 변수 등록
1. 레파지토리로 이동 -> Settings 버튼 클릭
2. Secrets and variables -> Actions 클릭
3. 생성한 IAM 유저의 엑세스 키, 시크릿 키를 하나씩 등록합니다.
-> 저는 모든 리전을 서울( ap-northeast-2 )로 설정했습니다.
.github/workflows/github-actions.yml 수정
name: New Nest Survey on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: env: # 생성한 s3 버킷 이름 S3_BUCKET_NAME: new-nest-survey-bucket # 자신의 프로젝트 이름 PROJECT_NAME: new-nest-survey # AWS_CODEDEPLOY_APPLICATION_NAME: # AWS_CODEDEPLOY_DEPLOYMENT_GROUP_NAME: jobs: # build test build: runs-on: ubuntu-latest steps: # 레파지토리 코드를 git actions 리눅스로 가져온다. - name: Checkout Repository uses: actions/checkout@v2.4.2 # 리눅스 node 설치, 나는 ec2에 설치된 node의 버전과 동일하게 설정 - name: Setup Node.js environment uses: actions/setup-node@v3.4.1 with: node-version: 16.19.0 - name: Install Dependencies run: npm install - name: Build a Nest Application run: npm run build shell: bash # build 테스트를 통과하면 배포 deploy: runs-on: ubuntu-latest needs: build steps: - name: Checkout Repository uses: actions/checkout@v2.4.2 - name: Setup Node.js environment uses: actions/setup-node@v3.4.1 with: node-version: 16.19.0 - name: Install Dependencies run: npm install - name: Build a Nest Application run: npm run build shell: bash # build 파일 압축 - name: Make a zip file run: zip -r ./$GITHUB_SHA.zip . -x "node_modules/*" "coverage/*" "src/*" "test/*" "README.md" "*.git*" shell: bash # aws cli - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} # s3 버킷에 압축된 build 파일 업로드 - name: Upload to S3 run: aws s3 cp --region ${{ secrets.AWS_REGION }} ./$GITHUB_SHA.zip s3://$S3_BUCKET_NAME/$PROJECT_NAME/$GITHUB_SHA.zip
git actions test
1. 레파지토리 Actions탭을 클릭 -> 통과하는지 체크하기
2. s3 버킷으로 이동 -> 자동 업로드 확인
'공부하기 > node.js' 카테고리의 다른 글
1. NestJs 설문조사 미니 프로젝트 - [ 엔티티 ] (0) 2023.02.12 9. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - https (0) 2023.02.05 6. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - 도메인&nginx (0) 2023.02.03 5. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] - pm2 (0) 2023.02.02 4. NestJs & Git Actions CI/CD - [ AWS EC2 배포 ] (0) 2023.02.01