워크플로 실행을 취소할 때 워크플로 실행과 관련된 리소스를 사용하는 다른 소프트웨어를 실행 중일 수 있습니다. 워크플로 실행을 취소하기 위해 GitHub가 수행하는 단계를 이해하는 것이 워크플로 실행과 관련된 리소스를 확보하는 데 도움이 될 수 있습니다.
- 워크플로 실행을 취소하기 위해 서버는 현재 실행 중인 모든 작업에 대한
if
조건을 다시 평가합니다. 조건이true
로 평가되면 작업이 취소되지 않습니다. 예를 들어if: always()
조건은 true로 평가되고 작업이 계속 실행됩니다. 조건이 없으면 이전 단계가 성공적으로 완료된 경우에만 실행되는if: success()
조건과 동일합니다. - 취소해야 하는 작업의 경우 서버는 취소해야 하는 작업이 있는 모든 실행기 컴퓨터에 취소 메시지를 보냅니다.
- 계속 실행되는 작업의 경우 서버는 완료되지 않은 단계에 대해
if
조건을 다시 평가합니다. 조건이true
로 평가되면 단계가 계속 실행됩니다.cancelled
표현식을 사용하여cancelled()
의 상태 검사를 적용할 수 있습니다. 자세한 내용은 워크플로 및 작업에서 식 평가을(를) 참조하세요. - 취소해야 하는 단계에 대해서는, 실행기 머신이 해당 단계의 진입 프로세스(JavaScript 작업의 경우
node
, 컨테이너 작업의 경우docker
, 단계에서run
을 사용하는 경우에는bash/cmd/pwd
)에SIGINT/Ctrl-C
를 보냅니다. 프로세스가 7,500ms 이내에 끝나지 않으면 실행기는SIGTERM/Ctrl-Break
를 프로세스로 보낸 다음 프로세스가 종료될 때까지 2,500ms를 기다립니다. 프로세스가 계속 실행 중이면 실행기에서 프로세스 트리를 종료합니다. - 5분의 취소 제한 시간이 지나면 서버는 여전히 실행 중인 모든 작업 및 단계를 강제로 종료합니다.