NakedFlower 님의 블로그

[Infratice] GitHub Actions 작업 무한 대기로 인한 러너 점유 본문

Troubleshooting

[Infratice] GitHub Actions 작업 무한 대기로 인한 러너 점유

nakedflower 2026. 4. 28. 12:53

문제

상황
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"}'

 

이렇게 수정하면 점유 문제를 해결하는 상황이 되는것이다.

 

당장의 오류도 오류지만 협업해야 하는 상황에서 파이프라인을 점유하는 게 더 심각한 오류라는 것을 배울 수 있는 문제였다.