[Git] CI / CD

Logun·2023년 8월 26일

Git

목록 보기
4/4
post-thumbnail

✅ CI / CD


🤔 Continuous Integration

코드와 코드가 합쳐지고, 그 코드가 제대로 돌아가는지 확인 했을 때가 진정한 통합이 이루어진 것이다.

🤔 Continuous Delivery

유저가 사용할 수 있는 곳에 배포 하는 것이다.

🤔 CI / CD 플랫폼의 종류

CI / CD 파이프라인 구축을 해야하는데, 설치형과 클라우드 형으로 나눌 수가 있다.

  • 설치형
    구축하는 개발자가 직접 특정 컴퓨터에 CI/CD 플랫폼을 설치해서 활용하는 방법이다.
    => Jenkins
  • 클라우드 형
    CI/CD 플랫폼을 운영할 컴퓨터를 개발자가 직접 관리할 필요 없이 서비스 제공자가 클라우드에서 모두 운영해주는 형태이다.
    => Travis CI, GitHub Actions

👍 GitHub Actions


GitHub과의 연동도 쉽고, 레파지토리 안에서 CI/CD까지 함께 구축하고 관리할 수 있다.
public 레파지토리는 무료로 사용할 수 있어, 기업이 아닌 개인이 사용하기에 용이하다.

  • 윈도우 bash설정

    윈도우에서 bash를 사용하고 있어, AWS Command Line 설치하여도 vsCode 안에서 경로가 잡히지않아 경로를 따로 설정해준다.

    🤔 설정 방법1

    • touch .bashrc
    • alias aws='"C:\Program Files\Amazon\AWSCLIV2\aws.exe"'
    • source .bashrc

    🤔 설정 방법2

    • 시스템 환경 변수에 aws란 이름으로 경로를 추가
  • AWS Command Line 설치

    AWS Command Line Interface를 설치하여 명령어로 동작을 제어할 수 있게 된다.
    aws --version => 설칭 여부를 확인하자.

  • AWS Command Line 사용방법

    브라우저 우측 상단에서 나의 로그인 정보가 써있는 곳에 있는 보안자격증명에 들어가자.

    • 엑세스키와 비밀 엑세스키를 생성 할 수 있는데 누군가에게 보여주면 나의 aws를 조작할 수 있어 공유하지 않아야한다. 한번 확인하면 다시 확인 할 수 없기때문에, 어딘가에 저장을 하거나 다시 만들어 줘야한다.

    • aws configure --profile default
      => 따로 프로필키 안넣어도 되지만 여러개 이면 입력
      => 엑세스키와 비밀 엑세스키를 입력해준다.
      => region 서울로 설정하는 것이 좋다.
      => ap-northeast-2 (서울)
      => output format은 enter로 넘어 가도 된다.

    • aws s3 ls --profile default
      => 인증이 된 것을 확인할 수 있다.
      => aws s3 sync local_folder buketname --delete --profile
      => 삭제하고 업로드가 동시에 된다.
      =>aws s3 sync out/ s3://richcollector.shop --delete

    • 자동화
      deploy라는 명령어로 scripts에 넣어준다.
      build 다음 업로드할 코드를 실행시켜준다.
      build && aws s3 sync local_folder buketname --delete
  • GitHub Actions 사용방법

    • Workflow
      CI/CD 전체의 작업의 흐름을 말한다. YAML 형식의 파일을 통해서 설정 할 수 있다.
    • event
      레파지토리에서 발생하는 push, pull request open, issue open등의 특정한 활동을 의미한다.
    • jobs
      하나의 runner1에서 실행될 여러 step의 모음을 의미한다.
      job1 => 병렬로 시작도지만, 설정으로 바꿀 수도 있다.
      step1 => shell script 또는 sction을 의미
    • actions
      gitHub Marketplace에서 Action들을 검색하고 활용할 수 있다.
      자주 사용되는 기능들을 모아둔 일종의 커스텀 애플리케이션이다.
    • runner
      workflow를 실행할 서버를 의미하고, 현재 GitHub Actions의 Runner는 기본적으로 Node 16 version을 탑재하고 있다.
  • 설정 파일

    .github/ => workflows 폴더 => CICD.yaml 파일에 설정 코드 넣어주기

  • 예시 코드

    다른 컴퓨터에서는 configure를 하지 않은 상태라 해결을 해야한다.
    그 모든 것을 설정해줄 수 있는 actions 모음을 Marketplace에서 찾을 수 있다.

    name: CI/CD
    
    on:
      push:
        branches:
        - master
      workflow_dispatch:
    
    jobs:
      cicd:
        runs-on: ubuntu-latest
        steps:
        - uses: actions/checkout@v3
    			with:
    				ref: "master"
        - run: npm ci
        - run: npm run test
        - run: npm run build
        - name: deploy to s3
          uses: jakejarvis/s3-sync-action@master
          with:
            args: --delete
          env:
            AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
            AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
            AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
            AWS_REGION: 'ap-northeast-2'
            SOURCE_DIR: 'build'

    name으로 이름을 붙여줄 수 있다. github actions에서 확인 가능.

  • secrets (공개 되지 않아야 하는 정보)

    • GitHub Setting의 secrets and variables
      => new repository secret만들어주기
      => name에 키값을 넣어주고, secret에 value 넣어주기
      => 사용법: ${{secrets.키값}}
profile
로건의 개발이야기

0개의 댓글