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