@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • sagemaker unified studio
  • 심폴릭링크
  • java
  • Python
  • knowledge bases
  • SageMaker
  • AWS CodeArtifact
  • AWS CodeStar
  • Agent
  • 티스토리챌린지
  • AWS CodeCatalyst
  • CLASS
  • converse api
  • 인터페이스
  • flink
  • bedrock agent
  • 오블완
  • bedrock api
  • invokemodel api
  • bedrock

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

기타

CI / CD 에 대해서..

2023. 6. 4. 17:41
반응형

오늘은 CI / CD가 무엇을 의미하고 tool은 어떤 것들이 있는지 알아보고자 한다!!

일단 CI / CD란 일련의 소스 코드 빌드부터 배포까지의 자동화 과정을 통틀어서 말한다.

CI(Continuos Integration)은 지속적 통합을 의미하며 build의 자동화, 유닛 및 통합 테스트의 과정을 말하고 

CD(Continuos Delivery)는 지속적 배포를 의미하며 build된 코드를 release하고 production으로 deploy하는 과정을 말한다. 현재 CNCF에 등록된 CI/CD를 위한 tool들이 jenkins, github actions, argoCD등 여러 종류의 도구들이 존재한다.

그 중에서 오늘은 github action이랑 aws의 code series에 대해 알아보고자 한다!

먼저 github actions은 github를 이용해서 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼으로 github에서 사용할 수 있어서 편리하다는 장점이 있다.

github actions의 workflow는 yaml파일로 작성이 되고 구성 요소는 다음과 같다.

  • Workflows – 하나 이상의 작업을 실행하는 구성 가능한 자동화 프로세스
  • Events – workflow 실행을 트리거하는 repository의 특정 활동
  • Jobs – workflow에서 하나의 처리 단위
  • Steps – 작업의 구성 단위로, Job은 하나 이상의 step으로 구성
  • Actions – 자주 반복되는 작업을 용이하도록 하기 위한 작업 공유 메커니즘
  • Runners – 트리거될 때 workflow를 실행하는 서버

github actions을 이용해서 ecr에 build하는 것 부터 ecs에 deploy까지 하는 예제가 docs에 존재하고 오늘은 간단히 build까지 진행해봤다.


name: Image push Amazon ECR

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

  workflow_dispatch:
  
env:
  AWS_REGION: us-east-1
jobs:
  build:
    name: Build image
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3
        
      - name: Config AWS credentials
        uses: aws-actions/configure-aws-credentials@v2
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: ${{ env.AWS_REGION }}
          
      - name: Login to Amazon ECR
        id: login-ecr-public
        uses: aws-actions/amazon-ecr-login@v1
        with:
          registry-type: public
          
      - name: Build, tag, and push image to Amazon ECR
        id: build-image
        env:
          REGISTRY: ${{ steps.login-ecr-public.outputs.registry }}
          REGISTRY_ALIAS: your ecr repo alias
          REPOSITORY: your ecr repo name
          IMAGE_TAG: ${{ github.sha }}
        run: |
          docker build -t $REGISTRY/$REGISTRY_ALIAS/$REPOSITORY:$IMAGE_TAG .
          docker push $REGISTRY/$REGISTRY_ALIAS/$REPOSITORY:$IMAGE_TAG
          echo "::set-output name=image::$REGISTRY/$REGISTRY_ALIAS/$REPOSITORY:$IMAGE_TAG"

위의 과정은 aws public ECR에 현재 나의 github repository에 있는 dockerfile을 가지고 이미지를 build해서 올리는 과정이다.

ECR은 private과 public이 존재하는데 private으로 하고자 하는 경우는 여기를 참고해서 작성하면 된다!(https://github.com/aws-actions/amazon-ecr-login)

aws ECR 같은 경우 이미지를 올릴때는 이미지의 tag를 반드시 꼭 지켜서 upload해야하고 처음에 on 같은 경우는 어떤 event에 대해서 이 workflow를 실행시킬지 정의하는 부분이다. 나같은 경우엔 on에 main에 pr이나 push가 있을 경우 동작하도록 했고 여기서 workflow_dispatch 옵션은 내가 push나 pr 이벤트 없이 강제로 workflow를 실행시킬 수 있도록 하기 위한 옵션이다.

이런식으로 github를 이용하면 쉽게 CI/CD를 구성할 수 있다.

aws에서도 이러한 CI/CD를 제공해준다. aws code series 종류로는 4개 정도가 있고 각각을 한번 간단히 정리해보면 다음과 같다.

  • aws CodeCommit - git처럼 소스 코드의 버전을 관리할 수 있도록 하는 서비스
  • aws CodeBuild - CI부분으로 소스 코드를 build하고 테스트 하는 서비스
  • aws CodeDeploy - CD부분으로 EC2, (ECS), Lambda 및 온프레미스 서버와 같은 다양한 컴퓨팅 서비스에 배포해주는 서비스
  • aws CodePipeline - 위의 과정을 전체적으로 해주는 서비스

오늘은 이렇게 github actions을 이용해서 CI/CD를 구성하는 방법과 aws code series에 대해 알아보았다. 이 두가지 말고도 다른 유용한 CI/CD 툴들도 많고 기업마다 사용하는 CI/CD 툴들도 달라서 관심이 있다면 한번씩 찾아봐도 좋을 것 같다 :)

반응형
저작자표시 (새창열림)

'기타' 카테고리의 다른 글

tcpdump와 wireshark를 이용한 패킷 분석하기  (0) 2024.05.18
리눅스에서 ln과 ln -s의 차이  (0) 2024.05.13
QUIC HTTP/3 내용 정리  (0) 2022.12.08
WebRTC 내용 정리  (0) 2022.12.08
HTTP2 정리 내용  (0) 2022.12.08
    '기타' 카테고리의 다른 글
    • tcpdump와 wireshark를 이용한 패킷 분석하기
    • 리눅스에서 ln과 ln -s의 차이
    • QUIC HTTP/3 내용 정리
    • WebRTC 내용 정리
    @Eeap
    @Eeap

    티스토리툴바