관리 메뉴
NakedFlower 님의 블로그
[Infratice] GitHub Actions 작업 무한 대기로 인한 러너 점유 본문
문제
상황
GitHub Actions를 사용하여 배포 파이프라인을 운영 중입니다. 최근 deploy 작업이 간헐적으로 멈추면서 러너가 6시간 동안 점유되고, 다른 작업이 큐에 밀려 팀 전체 CI/CD가 지연되고 있습니다. 워크플로우 설정을 확인하여 원인을 분석하고 해결하세요.
제공 데이터
.github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to production
run: ./scripts/long-running-task.sh
- name: Notify Slack
run: |
curl -X POST "$SLACK_WEBHOOK" \
-d '{"text": "Deployment completed"}'
Github Actions 실행 로그
2024-03-01T09:00:12Z Run ./scripts/long-running-task.sh
2024-03-01T09:00:13Z Connecting to deployment server...
2024-03-01T09:00:14Z Uploading artifacts...
2024-03-01T09:00:15Z Waiting for deployment to complete...
...
(이후 6시간 동안 출력 없음)
...
2024-03-01T15:00:15Z Error: The operation was canceled.
2024-03-01T15:00:15Z ##[error]The runner has received a shutdown signal.
내가 생각한 원인 및 해결 방안
쉘 파일을 실행하고 그안에서 배포 서버 연결하고 artifact를 업로드하고 있는데..업로드하는 이미지 크기가 커서 서버가 뻗어버리는건가...
제목
위에처럼 생각했었는데...문제를 똑바로 안 읽은 놈이 되었다....지금 상태에서 문제는 배포가 정상적으로 안되는 것보다 내 작업이 CI/CD 파이프라인을 점유해버리는 바람에 다른 작업이 큐에 밀리는게 가장 큰 문제였다!
Github Actions 작업의 기본 타임아웃 시간이 6시간이었고
그래서 내가 추가했어야 하는 작업은 타임아웃 시간을 추가해서 Actions 파일을 작성하는 것이었다
# job 레벨: 전체 작업에 대한 타임아웃
timeout-minutes: 10
# step 레벨: 개별 단계에 대한 더 세밀한 타임아웃
timeout-minutes: 5
위 convention에 따라
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Deploy to production
timeout-minutes: 5
run: ./scripts/long-running-task.sh
- name: Notify Slack
run: |
curl -X POST "$SLACK_WEBHOOK" \
-d '{"text": "Deployment completed"}'
이렇게 수정하면 점유 문제를 해결하는 상황이 되는것이다.
당장의 오류도 오류지만 협업해야 하는 상황에서 파이프라인을 점유하는 게 더 심각한 오류라는 것을 배울 수 있는 문제였다.
'Troubleshooting' 카테고리의 다른 글
| [Infractice] 컨테이너 간 통신 불가 원인 분석 (0) | 2026.05.28 |
|---|---|
| [Infratice] 디스크 용량 100% 원인 프로세스 찾기 (0) | 2026.05.11 |
| [Infratice] GitHub Actions 빌드 실패 로그 분석 (0) | 2026.04.24 |