Post

GitLab과 GitHub 지속적 통합(CI) 비교

1. 일반적인 기술 의사 결정권자(TDM) 문제에 대한 GitLab vs. GitHub 솔루션

TDM ProblemThe DevOps SolutionGitLabGitHub
코드 빌드 및 테스트 시간 단축, 복잡성 감소파이프라인 오케스트레이션💚 부모-자식 파이프라인이 동시에 실행된다. 구성은 더 작은 하위 파이프라인으로 구분할 수 있다.💔 ⚠ 파이프라인 오케스트레이션이 없으므로 파이프라인 실행 시간이 길어진다.
코드 업데이트 오류 및 충돌을 제거한다.병합 오케스트레이션💚 고급 병합 트레인 처리 로직은 주요 개발 분기를 녹색으로 유지한다.💔 ⚠ 고급 병합 트레인 처리 로직이 없으므로 더 많은 코드 커밋 충돌이 발생한다.
초기 구성 시간과 학습 곡선을 줄인다.사전 구성된 파이프라인💚 Auto DevOps는 즉시 사용 가능한 파이프라인 구성을 제공한다.💔 ⚠ 미리 구성된 파이프라인이 없으므로 파이프라인 설정 시간이 더 길어진다.

💚완전지원 💛일부지원 💔지원없음

2. GitHub에서 누락된 GitLab CI 기능

GitLab 기능특징
내장 CI플러그인이나 타사 구성 요소가 없다.
새 팀원을 위한 DevOps 프로세스 간소화AutoDevOps는 코드를 인식하고 엔드 투 엔드 devops 템플릿을 자동으로 설정한다.
결함을 줄이고 개발 시간을 단축하기 위해 병합 전에 앱 미리보기리뷰 앱으로 변경 사항을 미리 본다. 리뷰 앱을 위한 환경 Autostop
크고 복잡한 프로젝트 및 팀 모델링 및 관리대규모 프로젝트를 관리하기 위한 그룹 내의 하위 그룹, 그룹 파일 템플릿(표준화를 추진하기 위한 그룹 수준의 템플릿), 그룹을 쉽게 찾을 수 있는 탐색의 그룹 드롭다운

3. GitHub 작업 격차

다음 표는 GitHub Actions의 주요 차이 및 관련 영향이 나열되어 있다. 이 정보는 GitHub Actions Community Group의 사용자 피드백에서 파생되었으며 2020년 4월 10일에 채택되었다.

1) 지속적인 통합

  • 운영 비용을 증가시키는 문제
설명영향참조
리포지토리가 동일한 조직 내에 있는 경우에도 다른 비공개 리포지토리에서 작업에 액세스할 수 없다.코드를 재사용하기 어렵다. 이 제한을 극복하기 위해 해결 방법을 구현하기가 어렵다.GitHub 커뮤니티 토론
UI에서 개별 워크플로 실행을 삭제할 수 없다.실패한 워크플로 실행이 지속되면 혼란이 가중되고 관리 효율성이 떨어진다.GitHub 커뮤니티 토론

2) 지속적 전달

  • 배송 시간을 늘리는 문제
설명영향참조
워크플로에서 단일 작업만 다시 실행할 수 없음예를 들어, 실패한 테스트 중 일부만 다시 실행할 수 없다. 사용자는 전체 워크플로를 다시 실행해야 하므로 시간 낭비/생산성 손실이 발생한다. 10개의 작업이 있는 워크플로에서는 10개를 모두 다시 실행해야 한다.GitHub 커뮤니티 토론
  • 운영 비용을 증가시키는 문제
설명영향참조
스테이징 및 프로덕션 환경에 대해 서로 다른 워크플로를 쉽게 트리거할 수 없음조건부 워크플로는 GitHub 작업 이벤트에 연결된 유형이 없기 때문에 구현 및 유지 관리하기 어렵다. 워크플로에서 일련의 if 조건을 구현해야 한다.GitHub 커뮤니티 토론
리포지토리의 GITHUB_TOKEN을 사용하여 다른 워크플로에서 새 워크플로를 트리거할 수 없다. 옵션은 1) 봇 사용자를 만들고 개인 액세스 토큰을 사용하거나 2) github 앱을 만드는 것이다.코드 푸시 후 테스트를 쉽게 시작할 수 없다. 규정된 해결 방법 중 하나를 사용해야 한다.GitHub 커뮤니티 토론
풀 요청 메시지/댓글을 통해 작업을 트리거할 수 없습니다.예를 들어 사용자는 모든 pull 요청에서 실행되는데 오랜 시간이 걸리는 일부 작업을 원하지 않는다. 대신 PR에 주석을 추가하여 특정 작업이 실행되지 않도록 한다.GitHub 커뮤니티 토론
YAML 앵커 및 별칭에 대한 지원 부족코드 재사용을 방지한다. 이 제한을 극복하기 위해 사용자는 코드를 잘라내고 붙여넣어야 하며, 워크플로 크기의 5배이며 유지 관리가 어렵다.GitHub 커뮤니티 토론

3) 기업 준비

  • 위험을 증가시키는 문제
설명영향참조
포크 빌드에 사용 가능한 비밀 만들기워크플로의 일반 텍스트에 토큰을 포함하는 등의 해결 방법으로 인해 보안 취약성이 증가했다.GitHub 커뮤니티 토론
GitHub 작업에는 공개 리포지토리에서 Docker 이미지에 액세스하기 위한 자격 증명이 필요하다. UI를 통해 수동으로 작동한다.해결 방법으로 별도의 Docker 레지스트리가 필요하다. 자격 증명 없이 작업을 통해 GitHub 패키지에 액세스할 수 없다.GitHub 커뮤니티 토론

4. GitLab CI 규정 준수 차별화 요소

GitLab 기능특징
PCI 규정 준수GitLab은 PCI 호환을 원하는 기업에 중요한 요소인 애플리케이션 보안을 다룬다.
HIPAA위험 및 취약성 식별 및 관리, 개발 표준 및 프로세스 정의 및 시행
GDPR회원 잠금, 서명되지 않은 커밋 거부, 사용자 권한, 푸시 규칙 등은 민감한 파일이 실수로 프로덕션으로 푸시되는 것을 방지한다.
IEC 62304:2006, ISO 13485:2016, ISO 26262-6:2018계획 및 프로세스 작성 및 문서화, 종단 간 추적성 유지 등은 이러한 규정 준수 요구 사항을 지원하는데 도움이 된다.

5. GitLab과 GitHub CI 구성 비교

gitlab-vs-github-ci-config

6. GitLab과 GitHub 패킷 레지스트리 비교

gitlab-vs-github-pr

7. GitLab과 GitHub CI/CD 보안 비교

gitlab-vs-github-cicd-security

8. GitLab 대 GitHub CI/CD 요약 비교

gitlab-vs-github-cicd-summary

9. GitLab과 GitHub Container Registry 비교

특징설명GitHubGitLab
Docker 이미지 지원Docker 스타일 컨테이너의 저장 및 검색 지원YesYes
컨테이너 레지스트리 웹훅 레지스트리레지스트리에 성공적으로 푸시된 후 작업을 트리거하여 Docker Hub를 다른 서비스와 통합한다.YesYes
컨테이너 레지스트리 고가용성모든 컨테이너 및 메타데이터의 여러 복제본을 사용하여 고가용성을 제공하므로 시스템에 장애가 발생해도 레지스트리가 계속 작동하고 복구할 수 있다.NoYes
Container Registry 지리적 복제여러 지역에서 여러 레지스트리 인스턴스를 실행하고 데이터 센터 간에 동기화하여 분산된 팀을 지원한다.NoYes
프라이빗 컨테이너 레지스트리 지원 프라이빗 컨테이너레지스트리 및 리포지토리를 보유할 수 있는 기능 제공YesYes
이미지 만료 정책프로젝트 수준 정책을 쉽게 정의, 관리 및 업데이트하여 제거하고 보존해야 하는 이미지를 정의한다. 이 기능은 저장 비용을 줄이고 중요한 이미지가 삭제되는 것을 방지하도록 설계되었다.NoYes
자체 관리 컨테이너 레지스트리 오퍼링조직의 데이터 센터, 공동 호스트 또는 선택된 클라우드 공급자에 자가 설치 및 자가 관리가 가능한 컨테이너 레지스트리이다.YesYes
REST API를 통해 컨테이너 레지스트리 사용REST API를 통한 컨테이너 레지스트리 자동화 및 통합을 지원한다.NoYes
가비지 컬렉션을 실행하여 GitLab Container Registry의 스토리지 비용 절감Docker 레지스트리 컨텍스트에서 가비지 수집은 매니페스트에서 더 이상 참조하지 않는 Blob을 파일 시스템에서 제거하는 프로세스이다.NoYes
검색을 사용하여 컨테이너 이미지 찾기찾기 이미지 이름으로 그룹 및 프로젝트의 Container Registry 검색YesYes
Helm 차트 저장소 지원Helm 차트 저장 및 검색을 지원한다.YesYes

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.