# 워크플로 문제 해결

도구를 GitHub Actions 사용하여 워크플로를 디버그할 수 있습니다.

> \[!NOTE]
> GitHub Enterprise Server 호스트 실행기는 현재 GitHub에서 지원되지 않습니다.

## 초기 문제 해결 제안

실패한 워크플로 실행을 문제 해결하는 방법은 여러 가지가 있습니다.

### 워크플로 실행 로그 사용

각 워크플로 실행은 보고, 검색하고, 다운로드할 수 있는 활동 로그를 생성합니다. 자세한 내용은 [워크플로 실행 로그 사용](/ko/enterprise-server@3.22/actions/how-tos/monitor-workflows/use-workflow-run-logs)을(를) 참조하세요.

### 디버그 로깅 사용

워크플로 로그가 워크플로, 작업 또는 단계가 예상대로 작동하지 않는 이유를 진단하기에 충분한 세부 정보를 제공하지 않는 경우 추가 디버그 로깅을 사용하도록 설정할 수 있습니다. 자세한 내용은 [디버그 로깅 활성화](/ko/enterprise-server@3.22/actions/how-tos/monitor-workflows/enable-debug-logging)을(를) 참조하세요.

워크플로에서 특정 도구 또는 작업을 사용하는 경우, 해당 도구의 디버그 또는 자세한 로깅 옵션을 활성화하면 문제 해결을 위한 더 자세한 출력을 생성하는 데 도움이 될 수 있습니다.
예를 들어 npm에는 `npm install --verbose`을(를) 사용하고 git에는 `GIT_TRACE=1 GIT_CURL_VERBOSE=1 git ...`을(를) 사용할 수 있습니다.

## 워크플로 트리거 문제 해결

먼저 워크플로를 수동으로 사용하지 않도록 설정하지 않았는지 확인합니다. [워크플로를 사용/사용하지 않도록 설정](/ko/enterprise-server@3.22/actions/how-tos/manage-workflow-runs/disable-and-enable-workflows)을 참조하세요. 사용하지 않도록 설정된 워크플로는 해당 트리거에 응답하지 않습니다.

워크플로가 무엇에 의해 트리거될 것으로 예상되는지 이해하려면 워크플로의 `on:` 필드를 검토할 수 있습니다. 자세한 내용은 [워크플로우 시작](/ko/enterprise-server@3.22/actions/how-tos/write-workflows/choose-when-workflows-run/trigger-a-workflow)을(를) 참조하세요.

사용 가능한 이벤트의 전체 목록은 [워크플로를 트리거하는 이벤트](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/events-that-trigger-workflows)을(를) 참조하세요.

### 이벤트 조건 트리거

일부 트리거링 이벤트는 기본 분기에서만 실행됩니다(예: `issues`, `schedule`). 기본 분기 외부에 존재하는 워크플로 파일 버전은 이러한 이벤트에서 트리거되지 않습니다.

병합 충돌이 있는 풀 리퀘스트가 있는 경우 워크플로는 `pull_request` 작업에서 실행되지 않습니다.

원래 `push` 또는 `pull_request` 활동에서 트리거되었어야 하는 워크플로라도, 커밋 메시지에 스킵 주석이 포함되어 있으면 건너뜁니다. 자세한 내용은 [워크플로 실행 건너뛰기](/ko/enterprise-server@3.22/actions/how-tos/manage-workflow-runs/skip-workflow-runs)을(를) 참조하세요.

### 예상치 못한 시간에 실행되는 예약 워크플로

예약된 이벤트는 워크플로 실행 부하가 많은 기간 동안 지연될 수 있습니다 GitHub Actions .

높은 로드 시간에는 매 시간의 시작이 포함됩니다. 부하가 충분히 높으면 일부 대기 중인 작업이 드롭될 수 있습니다. 지연 가능성을 줄이려면 워크플로가 다른 시간에 실행되도록 예약합니다. 자세한 내용은 [워크플로를 트리거하는 이벤트](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/events-that-trigger-workflows#schedule)을(를) 참조하세요.

### 필터링 및 diff 제한

특정 이벤트는 분기, 태그 및/또는 사용자 지정 가능한 경로로 필터링할 수 있습니다. 필터 조건이 워크플로를 필터링하도록 적용되면 워크플로 실행 생성이 건너뛰어집니다.

필터에 특수 문자를 사용할 수 있습니다. 자세한 내용은 [GitHub Actions에 대한 워크플로 구문](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#filter-pattern-cheat-sheet)을(를) 참조하세요.

경로 필터링의 경우, diff 평가가 처음 300개 파일로 제한됩니다. 변경된 파일 중 필터가 반환한 처음 300개 파일에 포함되지 않은 파일이 있으면 워크플로가 실행되지 않습니다. 자세한 내용은 [GitHub Actions에 대한 워크플로 구문](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#git-diff-comparisons)을(를) 참조하세요.

## 워크플로 실행 문제 해결

워크플로 실행은 워크플로가 트리거되고 워크플로 실행이 생성된 이후에 발생하는 모든 문제를 포함합니다.

### 워크플로 취소

[UI](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-cancellation) 또는 [API](/ko/enterprise-server@3.22/rest/actions/workflow-runs?apiVersion=2022-11-28#cancel-a-workflow-run)를 통한 표준 취소가 예상대로 처리되지 않으면, 실행 중인 워크플로 작업(들)에 취소되지 않도록 만드는 조건문이 구성되어 있을 수 있습니다.

이런 경우 API를 활용하여 실행을 강제로 취소할 수 있습니다. 자세한 내용은 [워크플로 실행에 대한 REST API 엔드포인트](/ko/enterprise-server@3.22/rest/actions/workflow-runs?apiVersion=2022-11-28#force-cancel-a-workflow-run)을(를) 참조하세요.

일반적인 원인으로는 취소 시에도 `always()`을(를) 반환하는 [](/ko/enterprise-server@3.22/actions/reference/workflows-and-actions/expressions#status-check-functions)`true`를 사용하는 경우가 있습니다. 대안으로는 `cancelled()` 함수의 역(inverse)인 `${{ !cancelled() }}`을(를) 사용할 수 있습니다.

자세한 내용은 [조건을 사용하여 작업 실행 제어](/ko/enterprise-server@3.22/actions/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions) 및 [워크플로 실행 취소](/ko/enterprise-server@3.22/actions/how-tos/manage-workflow-runs/cancel-a-workflow-run)을(를) 참조하세요.

## 실행기 문제 해결

### 실행기 레이블 정의

GitHub호스팅 러너는 [](/ko/enterprise-server@3.22/actions/reference/runners/github-hosted-runners) 리포지토리에서 유지 관리되는 `actions/runner-images`을 활용합니다.

대형 실행기 및 자체 호스팅 실행기에는 고유한 레이블 이름을 사용하는 것을 권장합니다. 레이블이 기존 미리 설정된 레이블 중 어느 것과라도 일치하면, 작업이 어떤 일치 실행기 옵션에서 실행될지 보장되지 않아 실행기 할당 문제가 발생할 수 있습니다.

### 자체 호스팅 실행기

자체 호스팅 실행기를 사용하는 경우 해당 활동을 보고 일반적인 문제를 진단할 수 있습니다.

자세한 내용은 [자체 호스트형 실행기 모니터링 및 문제 해결](/ko/enterprise-server@3.22/actions/how-tos/manage-runners/self-hosted-runners/monitor-and-troubleshoot)을(를) 참조하세요.

## 네트워킹 문제 해결 제안

다음을 포함하는 네트워크 문제에 대해서는 지원이 제한됩니다:

* 사용자의 네트워크
* 외부 네트워크
* 타사 시스템
* 일반적인 인터넷 연결

GitHub의 실시간 플랫폼 상태를 보려면 [GitHub 상태](https://githubstatus.com/)를 확인하세요.

그 외 네트워크 관련 문제의 경우, 조직의 네트워크 설정을 검토하고 액세스 중인 타사 서비스의 상태를 확인하세요. 문제가 지속되면 네트워크 관리자에게 추가 지원을 요청하는 것을 고려하세요.

이 문제에 대해 잘 모르는 경우 문의하세요 GitHub 지원. 지원에 문의하는 방법에 대한 자세한 내용은 [GitHub 지원에 문의](/ko/enterprise-server@3.22/support/contacting-github-support)을(를) 참조하세요.

### DNS

DNS(Domain Name System) 구성, 해석 또는 확인자 문제로 인해 문제가 발생할 수 있습니다. 사용 가능한 로그를 검토하거나 공급업체 문서를 확인하거나 관리자와 상의하여 추가 지원을 받는 것을 권장합니다.

### 방화벽

방화벽에 의해 활동이 차단될 수 있습니다. 이 경우 사용 가능한 로그를 검토하거나 공급업체 문서를 확인하거나 관리자와 상의하여 추가 지원을 받는 것이 좋습니다.

### 프록시

통신에 프록시를 사용할 때 활동이 실패할 수 있습니다. 사용 가능한 로그를 검토하거나 공급업체 문서를 확인하거나 관리자와 상의하여 추가 지원을 받는 것이 좋은 습관입니다.

프록시를 활용하도록 실행기 애플리케이션을 구성하는 방법에 대한 정보는 [실행기에서 프록시 서버 사용](/ko/enterprise-server@3.22/actions/how-tos/manage-runners/use-proxy-servers)을(를) 참조하세요.

### 서브넷

가상 클라우드 제공자 또는 Docker 네트워크 내부 등, 사용 중인 서브넷 문제나 기존 네트워크와의 중복으로 문제가 발생할 수 있습니다. 이런 경우 네트워크 토폴로지와 사용 중인 서브넷을 검토하는 것을 권장합니다.

### 인증서

자체 서명 또는 사용자 지정 인증서 체인 및 인증서 저장소로 인해 문제가 발생할 수 있습니다. 사용 중인 인증서가 만료되지 않았고 현재 신뢰되는지 확인할 수 있습니다. 인증서는 `curl` 또는 유사한 도구로 검사할 수 있습니다. 또한 사용 가능한 로그를 검토하거나 공급업체 문서를 확인하거나 관리자와 상의하여 추가 지원을 받을 수 있습니다.

### IP 목록

IP 허용 목록 또는 차단 목록이 예상된 통신을 방해할 수 있습니다. 문제가 발생하면 사용 가능한 로그를 검토하거나 공급업체 문서를 확인하거나 관리자와 상의하여 추가 지원을 받는 것이 좋습니다.

### 운영 체제 및 소프트웨어 애플리케이션

방화벽 또는 프록시 외에도 추가 소프트웨어 패키지 설치와 같이 호스팅된 실행기에서 수행되는 GitHub사용자 지정으로 인해 통신이 중단될 수 있습니다. 사용 가능한 사용자 지정 옵션에 대한 정보는 [GitHub 호스팅 실행기 사용자 지정](/ko/enterprise-server@3.22/actions/how-tos/manage-runners/github-hosted-runners/customize-runners)을(를) 참조하세요.

* 자체 호스팅 실행기의 경우, 필요한 엔드포인트에 대한 자세한 내용은 [자체 호스팅 실행기 참조](/ko/enterprise-server@3.22/actions/reference/runners/self-hosted-runners)에서 알아보세요.

* WireGuard 구성 도움말은 [WireGuard를 사용하여 네트워크 오버레이 만들기](/ko/enterprise-server@3.22/actions/how-tos/manage-runners/github-hosted-runners/connect-to-a-private-network/connect-with-wireguard)을(를) 참조하세요.

* OpenID Connect(OIDC) 구성에 대한 자세한 내용은 [OIDC와 함께 API 게이트웨이 사용](/ko/enterprise-server@3.22/actions/how-tos/manage-runners/github-hosted-runners/connect-to-a-private-network/connect-with-oidc)을(를) 참조하세요.