Git/GItLab

GitLab, 깃랩 : 개념 공부와 저장소 만들기

DSeung 2023. 2. 9. 16:15

GitHub와 같은 Git 저장소

둘 다 분산 버전 관리 도구 git(깃)이라는 오픈소스를 기반으로 하고 있기 때문에 기본 구성과 인터페이스가 유사합니다.

그리고 같은 Git이기에 branch, remote, repository, staging 등은 똑같습니다.

개발에 적용 시 같은 방법으로 개발 진행이 가능합니다. 

 

Github와 다른 점

  GitHub GitLab
비용 무료  유료 버전과 무료 버전이 존재
유료 버전은 아래 기능을 추가로 제공
- 고급 보안 기능 : 보안 감사, 유출 방지, 데이터 감사 등
- 통합 CI/CD 파이프라인 : 내부 서버에서의 CI/CD 파이프라인 구축
- 고급 권한 관리 : 사용자 권한 부여 및 관리 기능
- 고급 분석 및 모니터링 기능 : 성능 분석, 사용자 양상 분석 등
DevOps 사용자가 원하는 CI/CD 도구를 직접 통합 (젠킨스, CircleCI, TravisCI) 지속적 통합/지속적 전달인 CI/CD 기능과 데브옵스 워크플로우를 내장함
중점 속도에 중점을 두어 접근성이 좋음 안전에 중점을 두어 대규모 프로젝트에서 사용하기 적합하지만
무료 버전에 경우 개인 프로젝트에도 적합한 기능을 제공

 

깃랩 사이트에서도 깃허브와의 차이점을 제공하고 있습니다

아래 사이트로 확인하실 수 있습니다.

https://about.gitlab.com/devops-tools/github-vs-gitlab/

 

GitLab| GitLab

See how GitHub compares to GitLab single application that covers the entire DevOps Tool Chain.

about.gitlab.com

 

GitLab의 CI/CD

CI/CD는 지속적 통합 및 지속적 배포의 약자로, 코드의 개발과 테스트 및 배포를 자동화하는 것을 목표로 하는 소프트웨어 엔지니어링 관행입니다, 코드가 제대로 작동하는지 확인하기 위해 빌드 및 테스트를 실행하며 테스트가 통과되면 코드가 서비스 환경에 배포됩니다

GitLab는 해당 기능들을 내장하여 별도의 프로그램 설치 없이 테스트, 빌드, 배포를 할 수 있게 합니다.

 

Continuous Integration

개발자가 Repository에 푸시할 때마다 스크립트 셋을 생성하여 애플리케이션을 자동으로 빌드하고 테스트할 수 있습니다. 스크립트는 응용 프로그램에 오류가 발생할 가능성을 줄이는 데 도움을 주며 이걸 CI(Continuous Integration) 합니다.

 

응용 프로그램에 제출된 각 변경 사항은 개발 분기에도 자동으로 지속적으로 빌드되고 테스트됩니다.

이런 테스트는 변경 사항이 애플리케이션에 대해 설정한 모든 테스트, 지침 및 코드 준수 표준을 통과하는지 확인합니다.

 

GitLab은 프로젝트에 대한 모든 푸시에 대해 일련의 검사를 코드에 실행합니다.

(GitLab은 저장소를 프로젝트라고 부릅니다)

 

Continuous Delivery

CI의 다음 단계로 빌드, 테스트 후 애플리케이션도 지속적으로 배포합니다.

그러나 코드는 자동으로 체크하지만 변경사항을 배포하려면 사람의 개입이 필요합니다.

 

Continuous Deployment

CD와 유사하지만 배포를 수동이 아닌 자동으로 하게 하여 사람의 개입을 없앱니다. GitLab CI/CD

GitLab에는 모든 기능을 내장하여 별도의 프로그램 설치 없이 테스트, 빌드, 배포를 할 수 있습니다.

 

GitLab CI/CD workflow

변경된 코드를 푸시하는 것으로 CI/CD 파이프라인을 트리거 할 수 있습니다.

파이프라인은 아래 부분의 설명을 보시면 됩니다.

 

workflow (푸시된 후의 로직)

  1. 자동 스크립트를 실행(pipeline) 
    1. 빌드 및 테스트
    2. 로컬에서 변경 사항 프리뷰
  2. 구현이 예상된 것과 같으면 코드 승인
  3. 해당 브렌치를 병합(GitLab CI/CD는 변경 사항을 프로덕션에 자동 배포)

더 자세히는 아래와 같습니다.

 

해당 글의 원본은 아래링크로 확인할 수 있습니다.

https://docs.gitlab.com/ee/ci/introduction/index.html

 

CI/CD concepts | GitLab

An overview of Continuous Integration, Continuous Delivery, and Continuous Deployment, as well as an introduction to GitLab CI/CD.

docs.gitlab.com

 

Pipeline architecture

GitLab의 Pipeline은 CI/CD의 기본 빌딩 블록입니다.

리눅스의 Pipe와 비슷한 개념으로 빌드가 끝나면 테스트로로 테스트가 끝나면 배포로 보내는 것입니다.

위 파이프 라인을 아래의 yml로 직접 구성할 수 있는 것입니다.

stages:
  - build
  - test
  - deploy

image: alpine

build_a:
  stage: build
  script:
    - echo "This job builds something."

build_b:
  stage: build
  script:
    - echo "This job builds something else."

test_a:
  stage: test
  script:
    - echo "This job tests something. It will only run when all jobs in the"
    - echo "build stage are complete."

test_b:
  stage: test
  script:
    - echo "This job tests something else. It will only run when all jobs in the"
    - echo "build stage are complete too. It will start at about the same time as test_a."

deploy_a:
  stage: deploy
  script:
    - echo "This job deploys something. It will only run when all jobs in the"
    - echo "test stage complete."
  environment: production

deploy_b:
  stage: deploy
  script:
    - echo "This job deploys something else. It will only run when all jobs in the"
    - echo "test stage complete. It will start at about the same time as deploy_a."
  environment: production

 

파이프 라인의 종류는 아래로 나눠지며 참고하시기 바랍니다. 


GitLab 저장소 생성

https://gitlab.com/dashboard/projects

위 주소로 들어가신 후 New Project를 하시면 됩니다.

프로젝트 생성시 여러 가지 샘플이 있으니 원하시는 대로 작업하면 됩니다.

저는 Template로 고른 후 스프링을 선택했습니다.

정보 기입 후 create project 하면 프로젝트가 생성되었습니다.

반응형