CI\CD/Github Actions
Github Actions - needs
hustle_D
2025. 9. 30. 13:12
반응형
workflow를 실행하다 보면 job들은 모두 병렬로 돌아간다고 얘기했던 적이 있었다.
근데 job 중에서는 서로 의존 관계를 가지는 경우들이 존재한다.
예를 들면 build → test → deploy 와 같이 서로 의존 관계를 가지는 형태의 job이 생성될 수 있는데 job이 병렬로 실행되면 순서의 보장이 되지 않고, 앞 단계가 실패하더라도 다른 단계들이 병렬로 시작되어 러너와 시간의 낭비가 생긴다.
또한 아티팩트(빌드 산출물)이 먼저 만들어져야 하는데 다른 잡이 먼저 돌아 건너 뛰는 상황이 발생하기도 한다.
이때 이를 해결해 줄 수 있는데 needs이다
needs
needs는 병렬로 수행되는 job의 실행 순서를 명시해서 그래프로 묶어 선행 성공 후에만 후행 실행하고 실패하면 기본적으로 스킵한다.
이를 통해서 job간 실행 순서와 데이터 흐름을 명시하는 도구고 한마디로 파이프라인 제어 버튼이라고 보면 된다.
한번 만들어서 확인해보자.
먼저 파일을 하나 생성해주고
간단하게 push 이벤트에 맞춰서 만들어주자.
이제 job을 생성하는데 두 개의 job을 한세트로 첫번째는 job이 정상적으로 실행되면서 이전 job을 needs 하고
두번째 는 job이 exit으로 비정상 종료 되면서 이전 job을 needs하는 경우에 대해서 작성했다.
이제 commit 과 push를 하고
actions에 보면
이렇게 비정상적일 경우 그 다음 job을 스킵하는 것을 볼 수 있다.
반응형