needs
를 사용하여 작업을 더 빨리 시작하기
파이프라인에서 needs
키워드를 사용하여 작업 간의 종속성을 만들 수 있습니다. 작업은 파이프라인의 stages
구성과 관계없이 종속성이 충족되는 즉시 실행됩니다. 또한 스테이지가 정의되지 않은 파이프라인(사실상 하나의 큰 스테이지)을 구성하고도 작업은 여전히 올바른 순서대로 실행됩니다. 이 파이프라인 구조는 유향 비순환 그래프의 한 종류입니다.
예를 들어, 별도의 도구나 별도의 웹사이트가 주 프로젝트의 일환으로 빌드될 수 있습니다. needs
를 사용하여 이러한 작업 간에 종속성을 지정하면 GitLab은 각 스테이지가 완료될 때까지 기다리지 않고 가능한 한 빨리 작업을 실행합니다.
CI/CD용으로 다른 솔루션과 달리 GitLab은 단계별 또는 스테이지 없는 실행 흐름 중에서 선택해야 하는 것을 요구하지 않습니다. needs
키워드만 사용하여 스테이지 기능을 활성화할 수 있는 스테이지별 및 스테이지 없는 하이브리드 조합을 단일 파이프라인에 구현할 수 있습니다.
다음과 같은 모노 레포를 고려해 보세요:
./service_a
./service_b
./service_c
./service_d
이 프로젝트에는 세 개의 스테이지로 구성된 파이프라인이 있을 수 있습니다:
빌드 | 테스트 | 배포 |
---|---|---|
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
작업끼리, b
, c
, 그리고 d
작업끼리 별도로 연결하여 작업 실행을 개선할 수 있습니다. build_a
가 매우 오래 걸릴 수 있지만 test_b
는 기다릴 필요가 없으며, 훨씬 빨리 시작될 수 있습니다.
원하는 경우 c
및 d
작업을 스테이지 순서대로 실행하도록 할 수 있습니다.
needs
키워드는 또한 parallel 키워드와 함께 작동하여 파이프라인에서 강력한 병렬 처리 옵션을 제공합니다.
사용 사례
CI/CD 파이프라인에서 needs
키워드를 사용하여 작업 간에 여러 가지 종속성을 정의할 수 있습니다. 종속성을 팬인하거나 팬아웃하도록 설정하고 심지어 병합할 수 있습니다(다이아몬드 종속성). 이러한 종속성은 다음과 같은 파이프라인에 사용될 수 있습니다:
- 다중 플랫폼 빌드를 처리합니다.
- 유닉스 계열 운영 체제 빌드와 같은 복잡한 종속성을 갖습니다.
- 독립적으로 배포할 수 있지만 관련된 마이크로서비스의 배포 그래프를 가집니다.
또한, needs
는 파이프라인의 전체 속도를 개선하고 빠른 피드백을 제공할 수 있습니다. 서로 불필요하게 차단하는 종속성을 생성하여 파이프라인이 스테이지에 관계없이 가능한 빨리 실행되도록 보장하여 출력(오류 포함)이 개발자에게 가능한 빨리 제공됩니다.