[배포자동화] CI/CD

노호준·2023년 4월 3일
0

🚩 개발 프로세스

  • 문제분석 > 설계(figma등) > 구현(화면구현) >
  • 워터폴 모델

    장점 : 단순, 프로젝트 실행 수월
    단점 : 앞단계 안끝나면 다음단계로 넘어갈 수 없음
  • 애자일 모델

    특징 : 스프린트라 불리는 짧은 주기의 개발사이클을 반복함
    장점 : 빠르면서 유연한 개발과정
    단점 : 고객이 변경사항을 검토해야함

🚩 DevOps

  • IT조직문화
  • Dev : 개발팀, 배포랑 업데이트, 리소스제공
  • Ops : 인프라관리, 모니터링 및 제어

🚩 CI/CD

  • CI : 지속적인 통합, 개발자를 위한 자동화 프로세스 푸시, 머지, 풀을 자주해서 버그를 일찍 찾고 지속적인 배포가 가능
  • CD : 지속적인 배포, 깃헙 페이지 배포처럼 코드병합과 빌드제공사이 모든단계
  • CI/CD 파이프라인 : 배포과정을 자동화하는 방법

🚩 Github Action

  • push만 해도 build랑 s3 버킷에 알아서 업로드됨
# 기존 나만의 아고라 스테이츠 서버 레퍼런스 클론
git clone git@github.com:codestates-seb/fe-sprint-my-agora-states-server-reference.git
# 디렉터리 이동
cd fe-sprint-my-agora-states-server-reference
# 새로운 리포지토리를 원격 리포지토리로 등록
git remote add myRepo git@github.com:{여러분의 아이디}/{새로운 리포지토리 이름}.git
# 기존 레퍼런스 코드를 새로운 리포지토리로 push
git push myRepo reference
  • git remote add 새로운리모트주소별명 껍데기레포지토리 주소 (origin을 훼손하지 않기 위해 remote add로 레퍼지토리를 만들어서 거는것)
  • git remote -v로 리모트주소들이 나옴
  • settings > Actions로 이동하여 활성화되었는지 확인함
name: client
on:
  push:
    branches:
      - reference
jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout source code.
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
        working-directory: ./my-agora-states-client
      - name: Build
        run: npm run build
        working-directory: ./my-agora-states-client
      - 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-26-bammuriosu-s3 \
            --delete
        working-directory: ./my-agora-states-client
  • yaml은 자동화 프로세스 생성하는데 자주 사용됨
  • branch 깃허브 브랜치 설정해주고
  • 버전지정해주고
  • push했을때 npm install, npm run build, sync bucket까지
  • secret은 깃허브 페이지 시크릿 설정에서 이름(AWS_ACCESS_KEY_ID) 값(비밀값) 입력해주면 저 코드 그대로 사용가능
  • aws s3 sync에 build는 aws버킷 페이지 안에서 쓰는 이름, aws 닉네임 아님

0개의 댓글