오늘은 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 |