TIL 23) CI/CD

Hover·2023년 6월 5일
0

TIL

목록 보기
26/27
post-thumbnail

CI/CD에서 CI는 개발자를 위한 자동화 프로세스인 지속적인 통합

CD는 지속적인 서비스 제공 및 지속적인 배포를 의미한다.

CI를 성공적으로 구현할 경우, app에 대해 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 repo에 통합되므로, 여러 명의 개발에 대한 코드가 서로 충돌할 수 있는 문제를 해결할 수 있다.

1. CI(지속적 통합)

일반적인 개발의 단계는 다음과 같다.

Code - Build - Test 단계에서 CI를 고려해 볼 수 있다.

  • Code : 개발자가 코드를 원격 저장소에 PUSH 하는 단계
  • Build : 원격 저장소에서 코드를 가져와 테스트 후 빌드하는 단계
  • Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인하는 과정

이 과정에서 지속적으로 코드를 push하고 build하며 해당 build의 Test 결과를 통해 개선 방안을 찾는다.

이러한 과정을 통해 개발자는 버그를 일찍 발견할 수 있고 테스트가 완료된 코드에 빠른 전달이 가능해진다.

위와 같은 지속적 통합을 통해 보안 이슈, 에러 등을 빠르게 파악할 수 있으며 보다 더 훨씬 효율적인 개발이 가능하다.

2. CD(지속적 배포)

Release - Deploy - Operate 단계에서 지속적 배포를 고려해 볼 수 있다.

  • Release : 배포 가능한 소프트웨어 패키지 작성
  • Deploy : 프로비저닝을 실행하고 서비스를 사용자에게 노출, 실질적인 배포 부분
  • Operate : 서비스 현황을 파악하고 생길 수 있는 문제를 감지함.

지속적 배포의 경우, 코드 변경 사항의 병합부터 프로덕션에 적합한 빌드 제공에 이르는 모든 단계를 뜻한다.

이 프로세스를 완료하면, Repo에 자동으로 배포가 가능하므로 운영팀이 보다 빠르고 손쉽게 App을 배포할 수 있게 된다.

3. Github Action

Github Action은 Github 내에서 위와 같은 CI/CD의 자동화를 제공하는 플랫폼이다.

Repo에서 PR 이나 push 같은 트리거로 워크플로우를 구성할 수 있다.

이 때, 워크플로우는 자체 가상 머신에서 실행된다.

.yml 파일 내에서 워크플로우가 구성 되며 .github/workflows 디렉토리 아래에 위치된다.

# .github/workflows/client.yml
name: client // 현재 디렉토리 이름
on: // 트리거
  push: 
    branches:
      - main // 현재 branch
jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout source code.
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install // 실행하는 npm
        working-directory: ./my-agora-states-client-react
      - name: Build
        run: npm run build
        working-directory: ./my-agora-states-client-react
      - name: SHOW AWS CLI VERSION
        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://fe-99-limjaesub-s3 \
            --delete
        working-directory: ./my-agora-states-client-react

여기서 env 부분의 AWS key 부분은 직접적으로 입력하면 AWS에서 보안상의 이유로 접근을 거부할 수 있다.

따라서, Github Action에서 Secret Key를 설정해줘야한다.

S3에서 잘 보이는것을 확인할 수 있다.

profile
프론트엔드 개발자 지망생입니다

0개의 댓글