Directed Acyclic Graph
- 이 소개된 사항: GitLab 12.2에서
- 피처 플래그가 제거되었습니다: GitLab 12.10에서
Directed Acyclic Graph는 CI/CD 파이프라인의 맥락에서 작업 간의 관계를 구축하여 단계가 설정되었는지 여부에 관계없이 실행이 최대한 빠르게 수행되도록 하는 데 사용될 수 있습니다.
예를 들어, 본 프로젝트의 일부로 빌드될 특정 도구나 별도의 웹사이트가 있을 수 있습니다. DAG를 사용하면 이러한 작업 간의 관계를 지정할 수 있으며 GitLab은 각 단계가 완료될 때까지 기다리지 않고 가능한 한 빨리 작업을 실행합니다.
GitLab의 다른 DAG 솔루션과는 달리 여러분은 하나를 선택하거나 다른 것을 선택하도록 요구하지 않습니다. 단일 파이프라인 내에서 DAG 및 전통적인 단계별 작업을 하이브리드로 구현할 수 있습니다. 구성은 매우 간단하며 어떤 작업에 대해 해당 기능을 활성화하려면 단일 키워드가 필요합니다.
다음과 같은 monorepo를 고려해 보십시오:
./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
|
DAG를 사용하면 _a
작업을 _b
작업과 별도로 관련시킬 수 있으며, 서비스 a
가 매우 오래 걸릴지라도 서비스 b
는 기다리지 않고 가능한 빨리 완료됩니다. 이와 동일한 파이프라인에서 _c
및 _d
는 표준 GitLab 파이프라인과 마찬가지로 순서대로 함께 실행될 수 있습니다.
사용 사례
DAG는 CI/CD 파이프라인 내에서 작업 간의 여러 가지 관계를 해결하는 데 도움이 될 수 있습니다. 대부분의 경우 이는 작업이 팬인 또는 팬아웃해야 할 때, 그리고/또는 (마름모 의존성) 다시 Merge해야 할 때일 것입니다. 이는 여러 플랫폼 빌드를 처리하거나 운영 체제 빌드 또는 관련된 마이크로서비스의 복잡한 배포 그래프와 같은 복잡한 의존성의 웹을 다룰 때 발생할 수 있습니다.
또한 DAG는 파이프라인의 일반적인 빠른 속도와 빠른 피드백을 돕는 데 도움이 될 수 있습니다. 서로 불필요하게 차단하지 않는 의존성 관계를 만들어 파이프라인이 파이프라인 단계와 관계없이 가능한 빨리 실행되도록 하여 출력(오류 포함)이 개발자에게 가능한 빨리 제공됩니다.
사용법
needs
키워드를 사용하여 작업 간의 관계를 정의합니다.
needs
키워드는 또한 parallel 키워드와 함께 작동하여 파이프라인 내에서 강력한 병렬화 옵션을 제공합니다.
제한 사항
DAG는 복잡한 기능이며, 초도 MVC 이후 특정 사용 사례를 해결해야 할 수 있습니다. 자세한 내용은 다음을 확인하십시오:
Needs 시각화
- 이 소개된 사항: GitLab 13.1에서 Beta 기능으로
- 13.3에서 표준 기능으로 전환되었습니다.
- 피처 플래그가 제거되었습니다: GitLab 13.9에서
Needs 시각화를 사용하면 DAG 내에서 종속 작업 간의 관계를 시각화하기가 더 쉬워집니다. 이 그래프는 파이프라인에서 필요하거나 필요로 하는 모든 작업을 표시합니다. 관계가 없는 작업은 이 보기에 표시되지 않습니다.
needs
키워드를 사용하는 파이프라인을 볼 때 Needs를 선택하여 needs 시각화를 볼 수 있습니다.
노드를 선택하면 그 노드에 종속된 모든 작업 경로가 강조 표시됩니다.
또한 전체 파이프라인 그래프에서 needs
관계를 볼 수도 있습니다.