워크플로 취소 참조(Workflow cancellation reference)
워크플로 취소 참조(Workflow cancellation reference)
워크플로 실행을 취소할 때 GitHub가 수행하는 단계에 대한 정보를 알려드릴게요. 취소 동작을 이해하면 워크플로와 관련된 리소스를 잘 정리할 수 있어요.
출처: 문서
본문
워크플로 실행을 취소할 때 GitHub가 수행하는 단계에 대한 정보를 확인할 수 있습니다.
워크플로 실행을 취소할 때 워크플로 실행과 관련된 리소스를 사용하는 다른 소프트웨어를 실행 중일 수 있습니다. 워크플로 실행과 관련된 리소스를 확보하는 데 도움이 되도록 GitHub가 워크플로 실행을 취소하기 위해 수행하는 단계를 이해하는 것이 좋습니다.
-
워크플로 실행을 취소하기 위해 서버는 현재 실행 중인 모든 잡의
if조건을 다시 평가합니다. 조건이true로 평가되면 잡은 취소되지 않습니다. 예를 들어if: always()조건은 true로 평가되므로 잡은 계속 실행됩니다. 조건이 없으면if: success()조건과 동일하며, 이전 스텝이 성공적으로 끝났을 때만 실행됩니다. -
취소해야 하는 잡의 경우 서버는 취소해야 하는 잡이 있는 모든 러너 머신에 취소 메시지를 보냅니다.
-
계속 실행되는 잡의 경우 서버는 완료되지 않은 스텝의
if조건을 다시 평가합니다. 조건이true로 평가되면 스텝은 계속 실행됩니다.cancelled표현식을 사용해서cancelled()상태 검사를 적용할 수 있습니다. 자세한 내용은 Evaluate expressions in workflows and actions을 참고하세요. -
취소해야 하는 스텝의 경우 러너 머신은 스텝의 진입 프로세스(JavaScript 액션은
node, 컨테이너 액션은docker, 스텝에서run을 사용할 때는bash/cmd/pwd)에SIGINT/Ctrl-C를 보냅니다. 프로세스가 7500ms 내에 종료되지 않으면 러너는 프로세스에SIGTERM/Ctrl-Break를 보내고 프로세스가 종료되기를 2500ms 기다립니다. 프로세스가 여전히 실행 중이면 러너는 프로세스 트리를 강제 종료합니다. -
5분의 취소 타임아웃 기간이 지난 후 서버는 취소 대상으로 표시된 잡과 스텝 중 여전히 실행 중인 것을 모두 강제로 종료합니다.