needs를 사용하여 작업 시작을 앞당기기

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

파이프라인 내에서 작업 간의 의존성을 만들기 위해 needs 키워드를 사용할 수 있습니다.

작업은 해당 의존성이 충족되면 즉시 실행되며, 파이프라인의 stages 구성과는 관계가 없습니다.

정의된 단계가 없는 파이프라인(실제로 하나의 큰 단계)으로 구성할 수도 있으며, 작업은 여전히 적절한 순서로 실행됩니다.

이 파이프라인 구조는 일종의
유향 비순환 그래프입니다.

예를 들어, 특정 도구 또는 별도의 웹사이트가 주요 프로젝트의 일환으로 구축될 수 있습니다.

needs를 사용하여 이러한 작업 간의 의존성을 명시할 수 있으며, GitLab은 각 단계가 완료될 때까지 기다리지 않고 가능한 빨리 작업을 실행합니다.

다른 CI/CD 솔루션과 달리, GitLab은 단계적 실행 흐름과 비단계적 실행 흐름 중에서 선택할 필요가 없습니다.

하나의 파이프라인에서 단계적 및 비단계적 조합을 구현할 수 있으며, needs 키워드만 사용하여 모든 작업에 대해 기능을 활성화할 수 있습니다.

다음과 같은 모노레포를 고려해 보세요:

./service_a  
./service_b  
./service_c  
./service_d  

이 프로젝트는 세 가지 단계로 구성된 파이프라인을 가질 수 있습니다:

build test deploy
build_a test_a deploy_a
build_b test_b deploy_b
build_c test_c deploy_c
build_d test_d deploy_d

needs를 사용하여 a 작업들을 서로 간에 연결함으로써 작업 실행을 개선할 수 있습니다.

build_a는 빌드하는 데 매우 오랜 시간이 걸릴 수 있지만, test_b는 기다릴 필요가 없으며, build_b가 완료되는 즉시 시작하도록 구성할 수 있습니다.

이 경우 훨씬 더 빠르게 실행될 수 있습니다.

원하는 경우, cd 작업은 단계 순서대로 실행되도록 남겨둘 수 있습니다.

needs 키워드는 병렬 키워드와도 함께 작동하여 파이프라인에서 병렬 처리를 위한 강력한 옵션을 제공합니다.

사용 사례

CI/CD 파이프라인 내에서 작업 간의 여러 가지 종류의 의존성을 정의하기 위해 needs 키워드를 사용할 수 있습니다.

의존성을 팬 인 또는 팬 아웃하도록 설정할 수 있으며, 심지어 다시 병합할 수도 있습니다(다이아몬드 의존성).

이러한 의존성은 다음과 같은 파이프라인에 사용될 수 있습니다:

  • 다중 플랫폼 빌드를 처리하는 경우.
  • 운영 체제 빌드와 같은 복잡한 의존성 웹이 있는 경우.
  • 독립적으로 배포 가능하지만 관련이 있는 마이크로서비스의 배포 그래프가 있는 경우.

또한, needs는 파이프라인의 전체 속도를 향상시키고 빠른 피드백을 제공합니다.

서로 불필요하게 차단하지 않는 의존성을 생성함으로써, 파이프라인은 가능한 한 빨리 실행되며, 파이프라인 단계와 관계없이 출력(오류 포함)을 개발자에게 가능한 한 빨리 제공합니다.

Needs 의존성 시각화 (더 이상 지원되지 않음)

경고:
이 기능은 GitLab 17.1에서 더 이상 지원되지 않습니다
그리고 17.4에서 제거되었습니다.
대신 전체 파이프라인 그래프에서 needs 관계를 확인하세요.

needs 의존성 시각화는 파이프라인 내의 작업 간 의존성을 시각적으로 쉽게 볼 수 있도록 도와줍니다.

이 그래프는 다른 작업이 필요로 하거나 다른 작업에 의해 필요한 파이프라인 내의 모든 작업을 표시합니다.

의존성이 없는 작업은 이 뷰에 표시되지 않습니다.

needs 시각화를 보려면 needs 키워드를 사용하는 파이프라인을 볼 때 Needs를 선택하세요.

노드를 선택하면 해당 노드가 의존하는 모든 작업 경로가 강조 표시됩니다.