필요한 정보 모아보기
테크

CodeQL all-platform 번들 지원 종료, 2027년 3월 제거 — 영향 범위와 플랫폼별 번들 전환법

#CodeQL#GitHub Actions#보안 스캐닝

CodeQL all-platform 번들 지원 종료는 여러 OS의 바이너리를 한 파일에 묶어 배포하던 codeql-bundle.tar.gz·codeql-bundle.tar.zst를 없애는 조치다. GitHub가 9월 22일 공지했다. CodeQL CLI 2.27.0부터 deprecated로 표시됐고, 2027년 3월 중순 배포가 완전히 끊긴다. 앞으로는 쓰는 OS·아키텍처에 맞는 플랫폼별 번들을 받아야 한다.

먼저 용어부터 짚자. CodeQL 번들은 코드 취약점 분석 도구인 CodeQL CLI와 쿼리·라이브러리, 미리 컴파일된 쿼리를 한 번에 묶은 배포물이다. all-platform 번들은 여기에 Linux x64, Windows x64, macOS 바이너리를 모두 넣은 판이고, 플랫폼별 번들은 그중 하나만 담는다.

누가 영향을 받나

결론부터 말하면 GitHub Actions에서 github/codeql-action을 쓰는 대부분의 팀은 할 일이 없다. 공개된 Action 소스(src/platform.ts)를 보면, 러너 OS에 따라 이미 linux64·linux-arm64·osx64·win64 번들을 골라 받는다. all-platform 번들은 이 넷에 해당하지 않는 경우에만 쓴다.

신경 써야 할 쪽은 따로 있다.

  • 번들 URL을 스크립트나 Dockerfile에 직접 박아 둔 경우
  • 사내 러너 이미지나 내부 저장소에 번들을 미리 받아 두는 경우(인터넷이 막힌 GHES 환경 등)
  • Jenkins·GitLab 같은 다른 CI에서 CodeQL CLI를 직접 설치하는 경우

실제 파일 크기를 재 보니

GitHub 공개 API로 최신 릴리스(codeql-bundle-v2.27.1, 9월 22일)의 에셋 크기를 조회했다. 인증 없이 Docker의 curl 이미지로 실행했다.

에셋크기
codeql-bundle.tar.zst (all-platform)1,140.8MB
codeql-bundle-linux64.tar.zst557.3MB
codeql-bundle-linux-arm64.tar.zst548.2MB
codeql-bundle-win64.tar.zst567.2MB
codeql-bundle-osx64.tar.zst876.5MB

리눅스 한 곳에서만 쓴다면 받을 용량이 절반 아래(약 49%)로 준다. 반대로 세 OS를 모두 받아 두는 팀이라면 합계가 약 2.0GB라, all-platform 하나보다 오히려 커진다. 사내 미러 용량을 잡을 때 참고할 부분이다.

2.27.0에서 새로 정식 지원된 Linux arm64는 처음부터 all-platform 파일에 들어 있지 않다. 공지에도 "Linux ARM64 바이너리는 플랫폼별 다운로드로만 제공된다"고 적혀 있다. 같은 버전에서 CLI만 담은 범용 codeql.zip도 함께 deprecated됐다. 이쪽은 제거 날짜가 아직 없다.

다운로드 스크립트는 이렇게 바꾼다

URL 규칙은 codeql-bundle-<플랫폼>.tar.zst 하나다. 아래는 uname으로 플랫폼을 고르는 셸 스크립트다. arm64 리눅스 컨테이너와 --platform linux/amd64 컨테이너에서 각각 실행했다. 두 경우 모두 linux-arm64와 linux64로 맞게 골라 HTTP 200과 체크섬 파일을 받았다(macOS의 Docker 29.8.1 환경, 번들 본체는 받지 않고 HEAD 요청만 보냈다). 아래는 그 스크립트에서 마지막 두 줄을 실제 다운로드로 바꾼 버전이다.

set -e
case "$(uname -s)-$(uname -m)" in
  Linux-x86_64)               P=linux64 ;;
  Linux-aarch64|Linux-arm64)  P=linux-arm64 ;;
  Darwin-*)                   P=osx64 ;;
  *) echo "unsupported"; exit 1 ;;
esac
V=2.27.1
URL="https://github.com/github/codeql-action/releases/download/codeql-bundle-v${V}/codeql-bundle-${P}.tar.zst"
curl -fL -o codeql-bundle.tar.zst "$URL"
curl -fsL "$URL.checksum.txt"   # sha256 확인용

Windows는 codeql-bundle-win64.tar.zst를 쓰면 된다. 압축을 풀 도구가 Zstandard를 지원하지 않으면 같은 이름의 .tar.gz를 받는다. 내용은 같다. 버전을 고정하지 않으려면 releases/latest/download/... 경로도 된다. 9월 30일 기준으로 최신 번들로 넘어간다.

CLI 2.27.0 변경 내역에는 all-platform 배포판으로 실행하면 경고를 띄운다는 내용도 있다. 환경변수 CODEQL_ALLOW_ALL_PLATFORMS_DIST=true로 끌 수 있다고 한다. 이 문장은 codeql.zip 항목에 붙어 있지만, GitHub Docs의 CLI 설치 안내도 all-platform 번들을 설명하는 문단에서 CLI 2.27.0 이상을 all-platform 배포판으로 실행하면 경고가 난다고 적고 있다. 번들도 해당된다는 얘기다.

종료 이유는 공지에 없다. 다만 흐름은 분명하다. 새 플랫폼은 통합 파일에서 빼고, Action은 4.38.1부터 이보다 더 잘게 쪼갠 "언어별 번들"을 시험하고 있다. 필요한 것만 받게 하는 방향이다. 기한이 반년 가까이 남았지만, 저장소와 CI 설정에서 codeql-bundle.tar를 한 번 검색해 두는 것만으로 3월의 급한 대응은 피할 수 있다.

출처 github.bloggithub.com/…/CHANGELOG.mdgithub.com/…/codeql-bundle-v2.27.1github.com/…/platform.tsgithub.com/…/CHANGELOG.mddocs.github.com

내용이 틀렸나요? 정정 요청

관련 글