방향성이 있는 비순환 그래프

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

방향성이 있는 비순환 그래프는 CI/CD 파이프라인의 맥락에서 작업 간의 관계를 구축하여 단계가 어떻게 설정되었는지에 관계없이 실행이 가능한 빠른 방법으로 수행될 수 있습니다.

예를 들어, 별도의 도구나 별도의 웹사이트가 주 프로젝트의 일부로 빌드되는 경우가 있습니다. DAG를 사용하면 이러한 작업 간의 관계를 지정할 수 있으며 GitLab은 각 단계가 완료될 때까지 대기하는 대신 작업을 가능한 빨리 실행합니다.

GitLab은 다른 CI/CD용 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 파이프라인 내에서 작업 간의 여러 가지 관계를 해결하는 데 도움이 될 수 있습니다. 대부분은 작업이 퍼지거나 퍼지며 다시 병합해야 할 때로, 다중 플랫폼 빌드나 운영 체제 빌드와 같이 의존성의 복잡한 웹 또는 독립적으로 배포 가능한 관련 마이크로서비스의 복잡한 배포 그래프와 같은 경우에 해당됩니다.

또한 DAG는 파이프라인의 일반적인 신속성과 빠른 피드백을 도와줄 수 있습니다. 서로 불필요하게 차단하지 않는 종속성 관계를 생성함으로써 파이프라인이 단계에 관계없이 가능한 빠르게 실행되어 개발자가 가능한 빨리 출력물(포함하여 오류)을 얻을 수 있도록 보장합니다.

사용법

작업 간의 관계는 needs 키워드를 사용하여 정의됩니다.

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

제한 사항

방향성이 있는 비순환 그래프는 복잡한 기능이며, 초기 MVC를 기준으로 특정 사용 사례를 해결해야 할 수도 있습니다. 자세한 정보는 다음을 확인하십시오:

Needs 시각화

Needs 시각화를 사용하면 DAG 내에서 종속적 작업 간의 관계를 시각화하는 것이 더 쉬워집니다. 이 그래프는 파이프라인에서 서로 필요로 하는 작업을 모두 표시합니다. 관계가 없는 작업은 이 보기에 표시되지 않습니다.

needs 키워드를 사용하는 파이프라인을 볼 때 Needs를 선택하여 Needs 시각화를 확인할 수 있습니다.

Needs 시각화 예시

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

경로 강조된 Needs 시각화

또한 전체 파이프라인 그래프에서 needs 관계를 볼 수도 있습니다.