TeamCity에서의 이주(Migrating from TeamCity)

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리형, GitLab Dedicated

TeamCity에서 GitLab CI/CD로 마이그레이션하는 경우, TeamCity 워크플로를 복제하고 향상시킬 수 있는 CI/CD 파이프라인을 만들 수 있습니다.

주요 유사성 및 차이점

GitLab CI/CD와 TeamCity는 몇 가지 유사성을 가진 CI/CD 도구입니다. GitLab과 TeamCity 모두:

  • 대부분의 언어에 대한 작업을 실행하기에 충분히 유연합니다.
  • 온프레미스 또는 클라우드에 배포할 수 있습니다.

또한, 두 도구 간에 중요한 차이점이 있습니다.

  • GitLab CI/CD 파이프라인은 YAML 형식 구성 파일로 구성되어 있으며, 수동으로 편집하거나 파이프라인 편집기를 사용할 수 있습니다. TeamCity 파이프라인은 UI에서 또는 Kotlin DSL을 사용하여 구성할 수 있습니다.
  • GitLab은 내장 SCM, 컨테이너 레지스트리, 보안 스캔 등이 포함된 DevSecOps 플랫폼입니다. TeamCity는 일반적으로 통합으로 제공되는 이러한 기능에 대해 별도의 솔루션을 필요로 합니다.

구성 파일

TeamCity는 UI에서 구성하거나 Kotlin DSL 형식의 Teamcity Configuration 파일에서 구성할 수 있습니다. TeamCity 빌드 구성은 소프트웨어 프로젝트를 빌드, 테스트 및 배포하는 방법을 정의하는 지침 집합입니다. TeamCity에서 CI/CD 프로세스를 자동화하는 데 필요한 매개변수와 설정이 구성에 포함됩니다.

GitLab에서는 TeamCity 빌드 구성에 해당하는 것이 .gitlab-ci.yml 파일입니다. 이 파일은 프로젝트의 CI/CD 파이프라인을 정의하며, 프로젝트를 빌드, 테스트 및 배포하는 데 필요한 단계, 작업 및 명령을 지정합니다.

기능 및 개념 비교

TeamCity의 많은 기능과 개념은 동일한 기능을 제공하는 GitLab과 상응하는 기능이 있습니다.

작업

TeamCity는 여러 빌드 단계로 구성된 빌드 구성을 사용하여 코드 컴파일, 테스트 실행, 패키지 아티팩트 만들기와 같은 작업을 정의합니다.

다음은 Docker 파일을 빌드하고 단위 테스트를 수행하는 Kotlin DSL 형식의 TeamCity 프로젝트 구성 예시입니다.

// (생략)

GitLab CI/CD에서는 파이프라인의 일부로 실행할 작업을 정의합니다. 각 작업에는 해당하는 빌드 단계가 정의될 수 있습니다.

위 예시에 해당하는 GitLab CI/CD .gitlab-ci.yml 파일은 다음과 같습니다.

// (생략)

파이프라인 트리거

TeamCity Triggers는 VCS 변경, 예약된 트리거 또는 다른 빌드에 의해 트리거된 빌드와 같은 조건을 정의합니다.

GitLab CI/CD에서는 파이프라인이 브랜치나 병합 요청에 대한 변경 또는 새로운 태그와 같은 여러 이벤트에 대해 자동으로 트리거될 수 있습니다. 또한 파이프라인은 API를 사용하거나 스케줄링된 파이프라인 또는 수동으로 트리거될 수 있습니다. 자세한 정보는 CI/CD 파이프라인을 참조하세요.

변수

TeamCity에서는 빌드 구성 설정에서 빌드 매개변수와 환경 변수를 정의합니다.

GitLab에서는 variables 키워드를 사용하여 CI/CD 변수를 정의합니다. 변수를 사용하여 구성 데이터를 재사용하거나 동적 구성 또는 중요한 값들을 저장할 수 있습니다. 변수는 전역적으로 또는 작업별로 정의할 수 있습니다.

예를 들어, 변수를 사용하는 GitLab CI/CD .gitlab-ci.yml 파일은 다음과 같습니다.

// (생략)

아티팩트

TeamCity에서의 빌드 구성은 빌드 프로세스 중에 생성된 아티팩트를 정의할 수 있습니다.

GitLab에서는 아무 작업이나 작업이 완료될 때 저장할 아티팩트 집합을 정의하기 위해 artifacts 키워드를 사용할 수 있습니다. 아티팩트는 테스트나 배포에 사용할 수 있는 파일입니다.

예를 들어, 아티팩트를 사용하는 GitLab CI/CD .gitlab-ci.yml 파일은 다음과 같습니다.

// (생략)

러너

TeamCity 에이전트의 GitLab 상의 동등한 것은 러너입니다.

GitLab CI/CD에서 러너는 작업을 실행하는 서비스입니다. GitLab.com을 사용하고 계시다면, 인스턴스 러너 플리트를 사용하여 자체 셀프 매니지드 러너를 프로비저닝하지 않고 작업을 실행할 수 있습니다.

러너에 관한 몇 가지 중요한 사항:

  • 러너는 인스턴스 전체, 그룹 또는 단일 프로젝트에 할당될 수 있도록 구성될 수 있습니다.
  • 더 세밀한 제어를 위해 tags 키워드를 사용하여 특정 작업에 러너를 연결할 수 있습니다. 예를 들어, 러너를 전용, 강력하거나 특정 하드웨어가 필요한 작업에 태그를 사용할 수 있습니다.
  • GitLab은 러너를 위한 자동 스케일링을 지원합니다. 필요할 때에만 러너를 프로비저닝하고 필요하지 않을 때는 스케일 다운합니다.

TeamCity 빌드 기능 및 플러그인

TeamCity에서 빌드 기능 및 플러그인을 통해 활성화되는 일부 기능은 CI/CD 키워드와 기능을 사용하여 GitLab CI/CD에서 기본적으로 지원됩니다.

TeamCity 플러그인 GitLab 기능
코드 커버리지 코드 커버리지테스트 커버리지 시각화
단위 테스트 보고서 JUnit 테스트 보고서 아티팩트단위 테스트 보고서
알림 알림 이메일Slack

이주 및 이주 실행

다음은 GitLab CI/CD로의 신속한 이주를 완료한 조직을 관찰한 후 생성된 권장 단계 목록입니다.

이주 계획 작성

이주를 시작하기 전에 이주 계획을 작성하여 이주를 위한 준비를 해야합니다.

TeamCity에서의 이주를 위해 다음과 같은 질문들을 준비해보세요:

  • 현재 TeamCity에서 작업 중인 플러그인은 무엇인가요?
    • 이러한 플러그인이 정확히 무엇을 하는지 알고 계십니까?
  • TeamCity 에이전트에는 무엇이 설치되어 있나요?
  • 사용 중인 공유 라이브러리가 있나요?
  • TeamCity에서 어떻게 인증하고 계십니까? SSH 키, API 토큰 또는 다른 비밀 정보를 사용하고 계신가요?
  • 파이프라인에서 액세스해야 하는 다른 프로젝트가 있나요?
  • TeamCity에 외부 서비스에 액세스하기 위한 자격 증명이 있나요? 예를 들어 Ansible Tower, Artifactory 또는 다른 클라우드 제공 업체 또는 배포 대상이 있나요?

사전 준비

이주 작업을 시작하기 전에, 먼저 다음을 해야합니다:

  1. GitLab에 익숙해지기
  2. GitLab 설정 및 구성
  3. GitLab 인스턴스 테스트
    • 러너가 사용 가능한지 확인하기, 공유 GitLab.com 러너 또는 새로운 러너 설치로 가능합니다.

이주 단계

  1. 코드 저장소 관리(SRM) 솔루션에서 프로젝트를 GitLab으로 이주
  2. 각 프로젝트에 .gitlab-ci.yml 파일 생성
  3. TeamCity 구성을 GitLab CI/CD 작업으로 이주하고 이를 통합하여 변경 사항을 바로 병합 요청에서 표시하도록 구성
  4. 클라우드 배포 템플릿, 환경GitLab Kubernetes 에이전트를 사용하여 배포 작업 이주
  5. 여러 프로젝트 간에 재사용할 수 있는 CI/CD 구성이 있는지 확인한 후 CI/CD 템플릿 또는 CI/CD 구성요소를 생성하여 공유
  6. GitLab CI/CD 파이프라인을 더 빠르고 효율적으로 만드는 방법에 대한 파이프라인 효율성을 확인하세요.

여기에 답변되지 않은 질문이 있으면 GitLab 커뮤니티 포럼이 훌륭한 자원이 될 수 있습니다.