워크플로 실행을 취소할 때 워크플로 실행과 관련된 리소스를 사용하는 다른 소프트웨어를 실행 중일 수 있습니다. 워크플로 실행을 취소하기 위해 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분의 취소 제한 시간이 지나면 서버는 여전히 실행 중인 모든 작업 및 단계를 강제로 종료합니다.