Actions 한도(Limits)

Actions 한도(Limits)

GitHub Actions에는 사용 규모를 늘리다 보면 부딪힐 수 있는 한도가 있어요. 일부는 지원팀에 문의해서 늘릴 수 있답니다.

출처: 문서

본문

GitHub Actions에는 사용 규모를 늘려감에 따라 부딪힐 수 있는 한도가 있습니다. 일부는 지원팀에 문의하면 늘릴 수 있습니다.

사용량을 늘리면 GitHub Actions에 의해 속도 제한(rate limit)을 받을 수 있습니다. 일부 한도는 GitHub Support 포털을 통해 문의하면 늘릴 수 있습니다.

별도로 명시하지 않는 한, 한도에 도달하면 워크플로/잡이 취소되는 것이 예상되는 동작입니다.

이 한도들은 변경될 수 있습니다.

기존 시스템 한도

Limit category Limit Threshold Description Can GitHub Support increase?
Workflow execution limit Workflow run time 35 days / workflow run 워크플로 실행이 이 한도에 도달하면 워크플로 실행이 취소됩니다. 이 기간에는 실행 시간과 대기·승인에 소요된 시간이 포함됩니다. 아니요
Workflow execution limit Gate approval time 30 days 워크플로는 환경 승인을 최대 30일 동안 기다릴 수 있습니다. 아니요
Workflow execution limit Job Matrix 256 jobs / workflow run 잡 매트릭스는 워크플로 실행당 최대 256개의 잡을 생성할 수 있습니다. 이 한도는 GitHub 호스팅 러너와 셀프 호스팅 러너 모두에 적용됩니다. 아니요
Workflow execution limit Re-run 50 re-runs 워크플로 실행은 최대 50회까지 다시 실행(re-run)할 수 있습니다. 이 한도에는 전체 재실행과 일부 잡의 재실행이 모두 포함됩니다. 예 — 지원 티켓
Workflow file Workflow file size 500 KB per file 500KB보다 큰 워크플로 파일은 실행을 시작하지 않습니다. Workflow file size를 참고하세요. 아니요
Checks Check runs per check suite 50,000 check runs / check suite 체크 스위트(check suite)는 최대 50,000개의 체크 실행을 가질 수 있습니다. 이 한도는 Checks API와 GitHub Actions 워크플로 실행으로 생성된 체크 실행에 적용됩니다. 체크 스위트가 이 한도에 도달하면 해당 체크 스위트에 대해 추가 체크 실행을 만들 수 없습니다. 예 — 지원 티켓
Workflows queuing Workflow trigger event rate limit 1500 events / 10 seconds / repository 각 저장소는 워크플로 실행을 트리거하는 이벤트로 제한됩니다. 예 — 지원 티켓
Workflows queuing Workflow run queued 500 workflow runs / 10 seconds 한도에 도달하면 웹훅 이벤트로 트리거되어야 했던 워크플로 실행이 차단되고 대기열에 배치되지 않습니다. 재사용 가능한 워크플로는 단일 엔터티로 간주됩니다. 예를 들어 30개의 재사용 가능한 워크플로가 있는 실행은 이 경우 1로 계산됩니다. 아니요
Workflows queuing Concurrency group queue 100 workflow runs / concurrency group concurrency 섹션에서 queue: max를 사용하면 동시성 그룹당 최대 100개의 잡이나 워크플로 실행을 대기열에 넣을 수 있습니다. 이 한도를 초과하는 실행은 거부됩니다. 아니요
Self-hosted Runner registrations 1500 runners / 5 minutes / repository/org/enterprise 저장소/조직/엔터프라이즈별로 러너를 등록할 수 있습니다. 예 — 지원 티켓
Self-hosted Runners per runner group 10,000 runners 러너 그룹당 동시에 등록되는 러너 수입니다. 아니요
Self-hosted Job execution time 5 days 워크플로의 각 잡은 최대 5일의 실행 시간 동안 실행될 수 있습니다. 잡이 이 한도에 도달하면 잡이 종료되고 실패합니다. 아니요
Self-hosted Job queue time 24 hours 잡은 자동으로 취소되기 전에 최대 24시간 동안 대기열에 있을 수 있습니다. 아니요
All GitHub-hosted runners Job Concurrency Varies GitHub 호스팅 러너의 잡 동시성 한도를 참고하세요. 예 — 지원 티켓
All GitHub-hosted runners Job execution time 6 hours 워크플로의 각 잡은 최대 6시간의 실행 시간 동안 실행될 수 있습니다. 잡이 이 한도에 도달하면 잡이 종료되고 실패합니다. 아니요
All GitHub-hosted runners Storage limits Varies 자세한 내용은 모든 GitHub 호스팅 러너의 저장 한도를 참고하세요. 아니요
Larger runners Per runner concurrency limit Varies by runner type 러너 설정 시 결정됩니다. 일반적으로 Linux CPU 러너의 경우 최대 1000이지만 유형에 따라 다릅니다. GitHub 호스팅 러너의 잡 동시성 한도를 참고하세요. 예 — 지원 티켓
Larger runners Static IP limits 10 IPs 엔터프라이즈와 조직당 10개의 IP입니다. 예 — 지원 티켓
Larger runners Private IP scaling for vnet injection 30% buffer 예상하는 최대 잡 동시성을 수용할 수 있는 버퍼가 필요합니다. 더 큰 러너에서 vnet 주입을 위한 비공개 IP 확장을 참고하세요. 예 — 구성 가능한 Azure 가상 네트워크
Dependency caching Uploads per minute 200 per minute 각 저장소는 분당 최대 200개의 캐시 항목 업로드로 제한됩니다. 이 한도를 초과하면 속도 제한이 리셋될 때까지 이후 캐시 업로드 시도가 실패합니다. 아니요
Dependency caching Downloads per minute 1500 per minute 각 저장소는 분당 최대 1500개의 캐시 항목 다운로드로 제한됩니다. 이 한도를 초과하면 속도 제한이 리셋될 때까지 이후 캐시 다운로드 시도가 실패합니다. 아니요
Dependency caching Deletes per minute 400 per minute 각 저장소는 분당 최대 400개의 캐시 삭제 작업으로 제한됩니다. 이 한도를 초과하면 속도 제한이 리셋될 때까지 이후 캐시 삭제 시도가 실패합니다. 키나 ID로 캐시를 삭제하는 각 요청은 이 한도에 포함됩니다. 아니요

워크플로 파일 크기

.github/workflows 디렉터리의 각 워크플로 파일은 실행을 트리거하려면 500KB 이하여야 합니다. 워크플로 파일 크기를 줄이려면 공유 로직을 재사용 가능한 워크플로나 복합 액션(composite action)으로 옮기세요. Reuse workflowsCreating a composite action을 참고하세요.

GitHub 호스팅 러너의 잡 동시성 한도

GitHub Support는 GitHub Actions의 잡 동시성 한도를 늘릴 수 있습니다. 증가를 요청하려면 지원 티켓을 제출하세요.

Runner type GitHub plan Total concurrent jobs Maximum concurrent macOS jobs Maximum concurrent GPU jobs
Standard GitHub-hosted runner Free 20 5 해당 없음 (Not applicable)
Standard GitHub-hosted runner Pro 40 5 해당 없음
Standard GitHub-hosted runner Team 60 5 해당 없음
Standard GitHub-hosted runner Enterprise 500 50 해당 없음
Larger runner Team 1000 5 100
Larger runner Enterprise 1000 50 100

[!NOTE] 최대 동시 macOS 잡 수는 표준 GitHub 호스팅 러너와 GitHub 호스팅 더 큰 러너 간에 공유됩니다.

모든 GitHub 호스팅 러너의 저장 한도

GitHub Support는 GitHub Actions의 저장 한도를 늘릴 수 없습니다.

Plan Artifact storage Minutes (per month) Cache storage (per repository) Custom image storage
GitHub Free 500 MB 2,000 10 GB 해당 없음
GitHub Pro 1 GB 3,000 10 GB 해당 없음
GitHub Free for organizations 500 MB 2,000 10 GB 해당 없음
GitHub Team 2 GB 3,000 10 GB 75 GB
GitHub Enterprise Cloud 50 GB 50,000 10 GB 150 GB

캐시 저장 한도와 증가 방법에 대한 정보는 Usage limits and eviction policy를 참고하세요.

더 큰 러너에서 vnet 주입을 위한 비공개 IP 확장

vnet 주입으로 더 큰 러너를 사용할 때는 적절한 서브넷 IP 주소 범위를 결정해야 하며, 예상하는 최대 잡 동시성에 버퍼를 추가하는 것을 권장합니다. 예를 들어 네트워크 구성의 러너가 최대 잡 동시성 300으로 설정된 경우, 최소 390개의 러너를 수용할 수 있는 서브넷 IP 주소 범위를 사용하세요. Azure는 모든 서브넷에서 5개의 IP(처음 4개와 마지막 1개)를 예약하므로, 러너 요구 사항에 따라 실용적인 최소 서브넷 크기가 결정됩니다. 매우 작은 서브넷(예: /29 이하)은 필요에 충분한 사용 가능한 주소를 제공하지 못할 수 있습니다.

자주 도달하는 종속 서비스 한도

GitHub의 REST API 속도 제한은 GitHub Actions 사용자에게도 적용되며, 자주 도달하는 것들은 다음과 같습니다:

  • 인증되지 않은 사용자 — 공개 데이터만 가져오는 경우 인증되지 않은 요청을 할 수 있습니다. 인증되지 않은 요청은 요청을 만든 사용자나 애플리케이션이 아니라 시작 IP 주소와 연결됩니다.

    인증되지 않은 요청의 주요 속도 제한은 시간당 60회입니다.

  • 인증된 사용자 — 개인용 액세스 토큰을 사용해서 API 요청을 할 수 있습니다. 또한 GitHub App이나 OAuth 앱을 승인하면 해당 앱이 사용자를 대신해 API 요청을 할 수 있습니다.

    이러한 모든 요청은 개인의 시간당 5,000회 속도 제한에 포함됩니다. GitHub Enterprise Cloud 조직이 소유한 GitHub App이 사용자를 대신해 수행한 요청은 시간당 15,000회의 더 높은 속도 제한을 가집니다. 마찬가지로 GitHub Enterprise Cloud 조직이 소유하거나 승인한 OAuth 앱이 사용자를 대신해 수행한 요청은, 사용자가 해당 GitHub Enterprise Cloud 조직의 구성원이라면 시간당 15,000회의 더 높은 속도 제한을 가집니다. 그러나 더 높은 제한 앱이 수행한 요청은 더 낮은 제한 인증 방법에 남아 있는 예산을 줄입니다. 예를 들어 15,000회 제한의 앱이 사용자를 대신해 10,000회 요청하면, 앱에 5,000회가 남아 있더라도 개인용 액세스 토큰의 5,000회 예산은 소진됩니다.

  • GitHub 앱 설치 — 설치 액세스 토큰으로 인증하는 GitHub App은 설치의 최소 속도 제한인 시간당 5,000회를 사용합니다. 설치가 GitHub Enterprise Cloud 조직에 있다면 설치의 속도 제한은 시간당 15,000회입니다.

    GitHub Enterprise Cloud 조직에 있지 않은 설치의 경우, 설치의 속도 제한은 사용자와 저장소 수에 따라 확장됩니다. 저장소가 20개보다 많은 설치는 저장소마다 시간당 50회씩 추가로 받습니다. 사용자가 20명보다 많은 조직에 있는 설치는 사용자마다 시간당 50회씩 추가로 받습니다. 속도 제한은 시간당 12,500회를 초과하여 늘어날 수 없습니다.

    GitHub App 사용자 액세스 토큰(설치 액세스 토큰과 반대)의 주요 속도 제한은 인증된 사용자의 주요 속도 제한에 의해 결정됩니다. 이 속도 제한은 다른 GitHub App이나 OAuth 앱이 그 사용자를 대신해 수행한 요청과 사용자가 개인용 액세스 토큰으로 수행한 모든 요청과 결합됩니다. 자세한 내용은 Rate limits for the REST API를 참고하세요.

  • OAuth 앱 — 이러한 요청의 속도 제한은 OAuth 앱당 시간당 5,000회입니다. 앱이 GitHub Enterprise Cloud 조직이 소유하면 속도 제한은 시간당 15,000회입니다.

  • GITHUB TOKENGITHUB_TOKEN의 속도 제한은 저장소당 시간당 1,000회입니다. GitHub Enterprise Cloud 계정에 속한 리소스에 대한 요청은 저장소당 시간당 15,000회가 한도입니다.

  • 보조 속도 제한 — 주요 속도 제한 외에도 GitHub는 남용을 방지하고 API를 모든 사용자에게 제공하기 위해 보조 속도 제한을 적용합니다. 이는 GHEC로 구성할 수 없습니다. 자세한 내용은 Rate limits for the REST API를 참고하세요.

GitHub Actions에 대한 Docker Hub의 속도 제한

  • 공개 이미지를 pull하는 GitHub 호스팅 러너: Docker Hub의 속도 제한이 적용되지 않습니다.
  • 비공개 이미지를 pull하는 GitHub 호스팅 러너: Docker Hub에서 비공개 이미지를 pull하는 것은 속도 제한의 적용을 받습니다.
  • 공개 또는 비공개 이미지를 pull하는 셀프 호스팅 러너: Docker Hub에서 이미지를 pull하는 것은 항상 속도 제한의 적용을 받습니다.

더 알아보기 (Learn more)