Docker 101 (3) - CI/CD와 GitHub Actions

My_oyster_house·2024년 4월 9일

CI/CD란?

지속적 통합(Continuous Integration): build, test, merge

  • 개발자들이 작업한 코드 주기적으로 공유 레포지토리에 병합하는 걸 자동화하는 과정. 공유 레포에 병합하면서 자동으로 build, test 거치는 것. merge란?
  • merge의 날: 같은 부분 여러 사람이 고쳐서 conflict 날 때, 주로 PR(pull request)하는 날에 merge 함. pull request는 코드 반영해달라고 요청하는 거고, 코드 리뷰 후 merge. merge하면 다른 작업자들도 쓸 수 있음.
  • A버전 받아서 B C D 업데이트 중인데 A버전 잘못됐다고 하면 안되니까, merge 전에 test 과정 거침.
  • CI/CD는 소프트웨어 개발 과정에서 효율성, 신속성 극대화하는 자동화된 프레임워크 제공. 도커 이미지 만들어서 도커 허브에 올리고 개발서버에 pull해서 코드 ready 상태 만듦.

지속적 전달 (CD - Continuous Delivery)

  • 릴리즈 준비 ready 상태로, CI 과정을 한 단계 더 발전시켜 코드 변경사항 자동으로 빌드 및 테스트 거쳐 실제 운영 환경에 배포 준비됨.

지속적 배포 (CD - Continuous Deployment)

  • 사용자가 자동으로 업데이트된 최신 정보 받아볼 수 있고, 문제 있을 때 버전 롤백할 수 있음.

CI/CD 파이프라인 도입

  • 로그로 다 확인 가능. 유지 보수 아니라 테스팅, 통합 과정에서 구축.

Jenkins

GitHub Actions

  • 공식문서, 네이버, 카카오, 배민 개발블로그에서 배포, ci/cd 정보 얻으라고. 진짜 사례, 경험에서 배우는 게 좋음. 개발자 컨퍼런스에서도 그렇게함.
  • GitHub Actions을 꼭 쓸 필요는 없다. 프로젝트에 따라서 필요한 걸 찾아보자.

GitHub Actions 독스, 가이드

tool managed service

  • AWS나 다른 클라우드 서비스 이용하는 게 낫다고.

큐앤에이

비용

  • 개발자 몇 명 필요한지, 리소스 자원, 유지 보수 비용, 사용자 경험 등 비용 고려해야 함.

로그 보관, 에러 관리

  • 에러 나면 자동으로 기록되고, slack으로 notify하는 걸 파이프라인에 설정해두면 좋다.

Docker와 CI/CD

  • Docker는 CD 단계에서 docker run으로 바로 앱 실행하는 방법으로 사용됨.

GitHub Action

깃허브 액션 공식문서 가이드

https://docs.github.com/ko/actions/learn-github-actions

심플 워크플로우 따라하기

https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions#create-an-example-workflow

이거하고

Docker와 Github Action 함께 사용하기

시나리오1. GitHub Actions과 Docker를 함께 사용하여 간단한 flask 애플리케이션을 빌드하고 테스트

시나리오2. GitHub Actions과 Docker를 함께 사용하여 간단한 Node.js 애플리케이션을 빌드하고 테스트

  • docker login 시도해보기 -> secrets 설정
    DOCKER_PASSWORD, DOCKER_USERNAME

깃헙 레포에서 - 세팅 - secrets에 도커허브 아이디 입력해놓으면 이제 깃허브에서 푸시하면 도커허브에도 자동 푸시 된다.

시나리오3. Github Action 을 사용해 push 가 되면 docker hub 에 새 이미지가 업데이트 되기

profile
kwonhs.alice@gmail.com

0개의 댓글