{"meta":{"title":"작업 전후에 스크립트 실행","intro":"작업 직전 또는 직후에 자체 호스트형 실행기에서 스크립트를 자동으로 실행할 수 있습니다.","product":"GitHub Actions","breadcrumbs":[{"href":"/ko/actions","title":"GitHub Actions"},{"href":"/ko/actions/how-tos","title":"사용법"},{"href":"/ko/actions/how-tos/manage-runners","title":"실행기 관리"},{"href":"/ko/actions/how-tos/manage-runners/self-hosted-runners","title":"자체 호스팅 실행기"},{"href":"/ko/actions/how-tos/manage-runners/self-hosted-runners/run-scripts","title":"스크립트 실행"}],"documentType":"article"},"body":"# 작업 전후에 스크립트 실행\n\n작업 직전 또는 직후에 자체 호스트형 실행기에서 스크립트를 자동으로 실행할 수 있습니다.\n\n## 사전 및 사후 작업 스크립트 정보\n\n작업 실행 전이나 작업 실행이 완료된 후 자체 호스트형 실행기에서 스크립트를 자동으로 실행할 수 있습니다. 스크립트를 사용하여 실행기 환경 빌드 또는 해제나 디렉터리 정리와 같은 작업 요구 사항을 지원할 수 있습니다. 스크립트를 통해 실행기 사용 현황에 대한 원격 분석을 추적할 수도 있습니다.\n\n실행기에서 특정 환경 변수를 설정하면 사용자 지정 스크립트가 자동으로 트리거됩니다. 환경 변수에 스크립트의 절대 경로가 포함되어야 합니다. 자세한 내용은 아래의 [스크립트 트리거](#triggering-the-scripts)를 참조하세요.\n\n지원되는 스크립팅 언어는 다음과 같습니다.\n\n* **Bash**: `bash`를 사용하며 `sh`로 대체될 수 있습니다.\n  `-e {pathtofile}`를 실행하여 실행됩니다.\n* **PowerShell**: `pwsh`를 사용하며 `powershell`로 대체될 수 있습니다.\n  `-command \\\". '{pathtofile}'\\\"`를 실행하여 실행됩니다.\n\n## 스크립트 작성\n\n사용자 지정 스크립트는 다음 기능을 사용할 수 있습니다.\n\n* **변수**: 스크립트에서 기본 변수에 액세스할 수 있습니다. 전체 웹후크 이벤트 페이로드는 `GITHUB_EVENT_PATH`에서 찾을 수 있습니다. 자세한 내용은 [변수 참조](/ko/actions/reference/workflows-and-actions/variables#default-environment-variables)을(를) 참조하세요.\n* **워크플로 명령**: 스크립트에서 워크플로 명령을 사용할 수 있습니다. 자세한 내용은 [GitHub Actions에 대한 워크플로 명령](/ko/actions/reference/workflows-and-actions/workflow-commands)을(를) 참조하세요. 스크립트에서 환경 파일도 사용할 수 있습니다. 자세한 내용은 [환경 파일](/ko/actions/reference/workflows-and-actions/workflow-commands#environment-files)을 참조하세요.\n\n스크립트 파일은 성공적으로 실행되려면 관련 언어에 대한 파일 확장자(예: `.sh` 또는 `.ps1`)를 사용해야 합니다.\n\n> \\[!NOTE]\n> 리포지토리에 대한 읽기 권한이 있는 모든 사용자가 UI 로그에서 출력을 확인할 수 있으므로 스크립트를 사용하여 중요한 정보를 콘솔에 출력하지 않도록 합니다.\n\n### 종료 코드 처리\n\n사전 작업 스크립트의 경우 종료 코드 `0`은 스크립트가 성공적으로 완료되었으며 작업이 계속 실행됨을 나타냅니다. 다른 종료 코드가 있는 경우에는 작업이 실행되지 않고 실패한 것으로 표시됩니다. 사전 작업 스크립트의 결과를 보려면 로그에서 `Set up runner` 항목을 확인합니다. 로그 확인에 대한 자세한 내용은 [워크플로 실행 로그 사용](/ko/actions/how-tos/monitor-workflows/use-workflow-run-logs#viewing-logs-to-diagnose-failures)을(를) 참조하세요.\n\n[\n`continue-on-error`\n](/ko/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontinue-on-error) 설정은 스크립트에서 사용할 수 없습니다.\n\n## 스크립트 실행\n\n사용자 지정 스크립트를 실행기에 배치해야 하지만 `actions-runner` 애플리케이션 디렉터리에 저장하면 안 됩니다. 스크립트는 실행기를 작동시키는 서비스 계정의 보안 컨텍스트에서 실행됩니다.\n\n> \\[!NOTE]\n> 트리거된 스크립트는 동기적으로 처리되므로 실행되는 동안 작업 실행을 차단합니다.\n\n실행기에 스크립트의 절대 경로를 포함하는 다음 환경 변수가 있는 경우 스크립트가 자동으로 실행됩니다.\n\n* `ACTIONS_RUNNER_HOOK_JOB_STARTED`: 작업이 실행기에 할당된 경우 작업 실행이 시작되기 전에 이 환경 변수에 정의된 스크립트가 트리거됩니다.\n* `ACTIONS_RUNNER_HOOK_JOB_COMPLETED`: 이 환경 변수에 정의된 스크립트는 워크플로에 정의된 모든 단계가 실행된 후 작업이 끝날 때 트리거됩니다.\n\n환경 변수를 설정하기 위해 운영 체제에 환경 변수를 추가하거나, 자체 호스트형 실행기 애플리케이션 디렉터리(즉 실행기 소프트웨어를 다운로드하고 압축을 푼 디렉터리) 내의 `.env` 파일에 추가할 수 있습니다.\n`.env` 파일을 변경하려면 실행기를 다시 시작해야 합니다.\n예를 들어 다음 `.env` 항목은 각 작업이 실행되기 전에 실행기에서 `/opt/runner/cleanup_script.sh`로 저장된 스크립트를 자동으로 실행하도록 합니다.\n\n```bash\nACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh\n```\n\n> \\[!NOTE]\n> `ACTIONS_RUNNER_HOOK_JOB_COMPLETED`에 정의된 스크립트는 작업이 완료되기 전에 작업의 끝에서 실행됩니다. 따라서 자동 크기 조정 구현의 일부로 실행기 컴퓨터를 삭제하는 등, 실행기를 방해할 수 있는 사용 사례에는 적합하지 않습니다.\n\n## 문제 해결\n\n### 사용 권한이 거부됨\n\n스크립트를 실행하려고 할 때 \"사용 권한 거부\" 오류가 발생하는 경우 스크립트가 실행 가능한지 확인합니다. 예를 들어, Linux 또는 macOS의 터미널에서 다음 명령을 사용하여 파일 실행 파일을 만들 수 있습니다.\n\n```bash\nchmod +x PATH/TO/FILE\n```\n\n워크플로를 사용하여 스크립트를 실행하는 방법에 대한 자세한 내용은 [워크플로에 스크립트 추가](/ko/actions/how-tos/write-workflows/choose-what-workflows-do/add-scripts)을(를) 참조하세요.\n\n### 시간 제한 설정 없음\n\n현재 `ACTIONS_RUNNER_HOOK_JOB_STARTED` 또는 `ACTIONS_RUNNER_HOOK_JOB_COMPLETED`에서 실행된 스크립트에 사용할 수 있는 시간 제한 설정이 없습니다. 따라서 스크립트에 시간 제한 처리를 추가하는 것이 좋습니다.\n\n### 워크플로 실행 로그 검토\n\n스크립트가 실행되고 있는지 확인하기 위해 해당 작업에 대한 로그를 검토할 수 있습니다. 스크립트를 트리거하는 환경 변수에 따라 `Set up runner` 또는 `Complete runner`에 대한 별도의 단계에 스크립트가 나열됩니다. 로그 확인에 대한 자세한 내용은 [워크플로 실행 로그 사용](/ko/actions/how-tos/monitor-workflows/use-workflow-run-logs#viewing-logs-to-diagnose-failures)을(를) 참조하세요."}