[AWS] S3 버킷 Github Action으로 CI/CD

jwo0o0·2023년 3월 23일
0

AWS

목록 보기
3/4
post-custom-banner

CI/CD

CI/CD 파이프라인

CI(Continuous Intergration)

💡 개발자를 위한 자동화 프로세스인 지속적인 통합
Code - Build - Test 단계에서 적용

  • 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 repository에 통합되는 것
  • 여러 명의 개발자가 동시에 관련 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
  • 코드를 머지하기 전 빌드 오류나 테스트 오류를 확인할 수 있다.

CD(Continuous Delivery, Deployment)

💡 지속적인 서비스 제공 혹은 지속적인 배포
Relase - Delpoy - Operate 단계에서 적용

  • 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계를 포함 (테스트 자동화와 코드 배포 자동화 포함)
  • 빠르게 손쉽게 최신 버전의 애플리케이션 릴리즈 가능

Github Action

Github가 공식적으로 제공하는 CI/CD 플랫폼

  • 빌드, 테스트, 배포 파이프라인을 자동화할 수 있다.
  • github 레포지토리에서 pull requestpush 같은 이벤트를 트리거로 Github 작업 workflow를 구성할 수 있음

📌 Workflow: 하나 이상의 작업이 실행되는 자동화 프로세스
- .yml 이나 .yaml 파일에 이해 구성됨
- 생성한 workflow는 .github/workflows 디렉토리에 위치

레포지토리 생성

CI/CD를 적용할 애플리케이션이 있는 레포지토리를 만든다. 이 때 public으로 만들어야 제한없이 Github Action을 사용할 수 있다.

aws access key 발급

IAM 계정에 로그인해서 access key를 발급 받는다.

github action secret 등록

발급 받은 키를 레포지토리에서 다음과 같이 등록해준다.

github action workflow 작성

레포지토리의 Actions 탭에서 workflow를 생성한다.

name: client
#트리거: 여기서는 main 브랜치에 push되는 경우
on:
  push:
    branches:
      - main
jobs:
  build:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout source code.
        uses: actions/checkout@v3
      - name: Install dependencies
        run: npm install
        working-directory: <작업할 디렉토리>
      - name: Build
        run: npm run build
        working-directory: <작업할 디렉토리>
      - name: SHOW AWS CLI VERSION
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_EC2_METADATA_DISABLED: true
        run: |
          aws --version
      - name: Sync Bucket
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_EC2_METADATA_DISABLED: true
        run: |
          aws s3 sync \
            --region ap-northeast-2 \
            build s3://<버킷 이름> \
            --delete
        working-directory: <작업할 디렉토리>

CI/CD 확인

workflow에서 설정한 트리거(main 브랜치에 push)가 발생하면 workflow가 실행되어 aws s3 버킷이 새로 업로드 된다.

version 2.0으로 새로 빌드된 것이 반영된 s3 버킷

profile
개발로 밥벌이 하고 싶은 사람
post-custom-banner

0개의 댓글