GitLab CI/CD for Beginner

KANG·2023년 11월 16일
0

출처 : https://www.youtube.com/watch?v=qP8kir2GUgo

위 영상을 기반으로 GitLab에 대한 전반적인 내용을 정리했습니다.

GitLab이란?

  • 전반적인 DevOps 플랫폼으로 Manage, Plan, Create, Verify, Package, Secure, Release, Configure, Monitor, Protect 기능을 수행하는 것을 목표로 함
  • 새로운 feature를 지속적으로 추가함으로써, 완전한(complete) DevOps 플랫폼이 되는 것을 목표
  • 그 중 일부가 CI/CD 파이프라인

CI/CD란?

  • Continuous Integration
  • Continuous Deployment/Delivery
  • 자동으로 수정된 코드(Code Changes)에 대해 테스트(Test), 이미지 빌드(Build), 배포(Release)하는 것
  • 개발자가 GitLab repo에 대로운 코드를 커밋한다면, GitLab에서 자동으로 (해당 프로젝트를 위해 구성된) CI/CD 파이프라인을 수행. 최종적으로 end user가 사용할 수 있도록 배포.
  • 결국 지속적으로(continuously) 최종 환경(end env)에 코드 변경을 배포(release)하는 것

CI/CD 툴 종류

  • Jenkins (아직 가장 많이 사용)
  • Azure Pipelines, Travis CI, AWS CodePipeline, TeamCity (TC)
  • GitLab 장점 1: 이미 코드가 GitLab에 있기 때문에 (Source Code Management) 팀 내 SW 개발의 연장선상으로 같은 플랫폼 상에서 CI/CD 파이프라인 구축 가능
    - 예) 팀에서 GitLab에서 작업해서 코드를 업데이트한다면 별도 툴 없이 CI/CD 기능
  • GitLab 장점 2: Seamless한 CICD
  • GitLab 장점 3: 별도 CI/CD 세팅 불필요
  • GitLab 장점 4: 어플리케이션 코드의 파이프라인 구성
  • 반대로 Jenkin의 단점
    - 1. CI/CD 툴로서만 동작
    - 2. 젠킨스 서버를 별도로 구성, 파이프라인 구축, git 프로젝트에 연결해야 함

GitLab 아키텍처

  • GitLab Instance/GitLab Server
    - 어플리케이션 코드와 파이프라인을 호스트 (전체 구성)
    • 파이프라인 실행 관리(manage)
  • GitLab Runners
    - GitLab Server 머신과는 별도의 머신으로 파이프라인을 수행(execute)하는 역할
    - GitLab에서 이미 복수의 Runners 제공
  • 위 내용은 gitlab.com에서 기본으로 제공하나 조직에 따라 Self-Managed도 가능 (www.gitlab.mycompany.com)

데모 프로젝트

  • Python APP 출처 : https://github.com/benc-uk/python-demoapp
  • GitLab 출처 : https://gitlab.com/nanuchi/gitlab-cicd-crash-course
  • Python APP을 위한 파이프라인 구축
  • 순서 : python app -> 테스트 -> 도커 이미지 생성 -> 도커 Registry로 푸시 -> 서버에 배포
  • open terminal
    git clone git@gitlab.com:nanuchi/gitlab-cicd-crash-course.git
    cd gitlab-cicd-crash-course
    ls내에 있는 것들이 어플리케이션
    code.
  • 각 파트 설명
    - 테스트
    • CI/CD 파이프라인 중 일부. 새 코드가 기존 기능을 해치지 않는지 확인. 만약 테스트 fail -> 파이프라인 fail -> 새 변경사항 반영 X
    • /app/tests/ 폴더 내 test_api.py, test_views.py
    • makefile : test 관련 shell commands 포함
    • make test
      • dependencies 설치 (pip install)
        • 테스트 실행 (pytest)
        • 테스트 결과 표시
    • 각 프로그래밍 언어에 따라 필요한 환경이 다름
      • Python : pip
      • Node.js : npm, yarn
      • Java : maven, gradle
  • make run
    - make run : 어플 실행 (포트 지정)
  • Pipeline은 어플리케이션 git repo에 포함되어 있어야 하고, CI/CD 설정은 yaml 파일에 작성되어 있음 (별도 설정 필요없이 실행할 수 있도록)
profile
Avid Data Scientist/AI Engineer

0개의 댓글